Commit e970269c by chenith Committed by Harsh Shah

Added Jobs sorting option. Introduced new field 'OpenDate' to keep open date of job.

parent 8fdf4c77
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<column name="job_title" type="String" nullable="false" length="500"/> <column name="job_title" type="String" nullable="false" length="500"/>
<column name="job_description" type="CLOB" nullable="false"/> <column name="job_description" type="CLOB" nullable="false"/>
<column name="job_status" type="String" nullable="false" length="200"/> <column name="job_status" type="String" nullable="false" length="200"/>
<column name="open_date" type="Date" nullable="true"/>
<column name="apply_by" type="Date" nullable="true"/> <column name="apply_by" type="Date" nullable="true"/>
<column name="include_assessment_criteria" type="Boolean" nullable="false"/> <column name="include_assessment_criteria" type="Boolean" nullable="false"/>
<column name="assessment_type" type="String" nullable="false" length="200"/> <column name="assessment_type" type="String" nullable="false" length="200"/>
......
...@@ -11,6 +11,7 @@ CREATE TABLE tl_job ( ...@@ -11,6 +11,7 @@ CREATE TABLE tl_job (
job_title varchar(500) NOT NULL, job_title varchar(500) NOT NULL,
job_description text NOT NULL, job_description text NOT NULL,
job_status varchar(200) NOT NULL, job_status varchar(200) NOT NULL,
open_date datetime NULL,
apply_by datetime NULL, apply_by datetime NULL,
include_assessment_criteria char(1) NOT NULL, include_assessment_criteria char(1) NOT NULL,
assessment_type varchar(200) NOT NULL, assessment_type varchar(200) NOT NULL,
......
...@@ -12,6 +12,7 @@ CREATE TABLE tl_job ( ...@@ -12,6 +12,7 @@ CREATE TABLE tl_job (
job_title varchar2(500) NOT NULL, job_title varchar2(500) NOT NULL,
job_description clob NOT NULL, job_description clob NOT NULL,
job_status varchar2(200) NOT NULL, job_status varchar2(200) NOT NULL,
open_date date NULL,
apply_by date NULL, apply_by date NULL,
include_assessment_criteria char(1) NOT NULL, include_assessment_criteria char(1) NOT NULL,
assessment_type varchar2(200) NOT NULL, assessment_type varchar2(200) NOT NULL,
......
...@@ -12,6 +12,7 @@ CREATE TABLE tl_job ( ...@@ -12,6 +12,7 @@ CREATE TABLE tl_job (
job_title varchar(500) NOT NULL, job_title varchar(500) NOT NULL,
job_description text NOT NULL, job_description text NOT NULL,
job_status varchar(200) NOT NULL, job_status varchar(200) NOT NULL,
open_date timestamp NULL,
apply_by timestamp NULL, apply_by timestamp NULL,
include_assessment_criteria char(1) NOT NULL, include_assessment_criteria char(1) NOT NULL,
assessment_type varchar(200) NOT NULL, assessment_type varchar(200) NOT NULL,
......
package performa.form; package performa.form;
import java.util.Date;
import java.util.Map; import java.util.Map;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
...@@ -23,6 +24,7 @@ public class SaveJobFP extends SaveFP ...@@ -23,6 +24,7 @@ public class SaveJobFP extends SaveFP
LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"In SaveJobFP saving job : ", job ); LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"In SaveJobFP saving job : ", job );
job.setJobStatus(JobStatus.OPEN); job.setJobStatus(JobStatus.OPEN);
job.setOpenDate(new Date());
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
} }
......
...@@ -29,6 +29,7 @@ ...@@ -29,6 +29,7 @@
<ATTRIB name="JobTitle" type="String" dbcol="job_title" length="500" mandatory="true"/> <ATTRIB name="JobTitle" type="String" dbcol="job_title" length="500" mandatory="true"/>
<ATTRIB name="JobDescription" type="String" dbcol="job_description" mandatory="true"/> <ATTRIB name="JobDescription" type="String" dbcol="job_description" mandatory="true"/>
<ATTRIB name="JobStatus" type="JobStatus" dbcol="job_status" attribHelper="EnumeratedAttributeHelper" mandatory="true" defaultValue="JobStatus.DRAFT"/> <ATTRIB name="JobStatus" type="JobStatus" dbcol="job_status" attribHelper="EnumeratedAttributeHelper" mandatory="true" defaultValue="JobStatus.DRAFT"/>
<ATTRIB name="OpenDate" type="Date" dbcol="open_date"/>
<ATTRIB name="ApplyBy" type="Date" dbcol="apply_by"/> <ATTRIB name="ApplyBy" type="Date" dbcol="apply_by"/>
<ATTRIB name="IncludeAssessmentCriteria" type="Boolean" dbcol="include_assessment_criteria" mandatory="true" defaultValue="Boolean.TRUE"/> <ATTRIB name="IncludeAssessmentCriteria" type="Boolean" dbcol="include_assessment_criteria" mandatory="true" defaultValue="Boolean.TRUE"/>
<ATTRIB name="AssessmentType" type="AssessmentType" dbcol="assessment_type" attribHelper="EnumeratedAttributeHelper" mandatory="true" defaultValue="AssessmentType.COMPREHENSIVE"/> <ATTRIB name="AssessmentType" type="AssessmentType" dbcol="assessment_type" attribHelper="EnumeratedAttributeHelper" mandatory="true" defaultValue="AssessmentType.COMPREHENSIVE"/>
......
package performa.orm.types;
import java.util.*;
import oneit.utils.*;
/**
* This class was generated using constGen.bat.
* DO NOT MODIFY THIS CODE.
* Edit the associated .xml file, and regenerate this file
* constGen (directory) (file minus extension)
* e.g. constGen C:\...\sql FieldType
*/
public class JobSortOption extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_JobSortOption = new JobSortOptionFactory();
public static final JobSortOption NEWEST = new JobSortOption ("NEWEST", "NEWEST", "Newest", false);
public static final JobSortOption CLOSING_SOON = new JobSortOption ("CLOSING_SOON", "CLOSING_SOON", "Closing Soon", false);
public static final JobSortOption OLDEST = new JobSortOption ("OLDEST", "OLDEST", "Oldest", false);
public static final JobSortOption ALPHA_A_Z = new JobSortOption ("ALPHA_A_Z", "ALPHA_A_Z", "Alpha A-Z", false);
public static final JobSortOption ALPHA_Z_A = new JobSortOption ("ALPHA_Z_A", "ALPHA_Z_A", "Alpha Z-A", false);
private static final JobSortOption[] allJobSortOptions =
new JobSortOption[] { NEWEST,CLOSING_SOON,OLDEST,ALPHA_A_Z,ALPHA_Z_A};
private static JobSortOption[] getAllJobSortOptions ()
{
return allJobSortOptions;
}
private JobSortOption (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allJobSortOptions);
static
{
defineAdditionalData ();
}
public boolean isEqual (JobSortOption other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return JobSortOption.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return JobSortOption.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_JobSortOption;
}
public static JobSortOption forName (String name)
{
if (name == null) { return null; }
JobSortOption[] all = getAllJobSortOptions();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static JobSortOption forValue (String value)
{
if (value == null) { return null; }
JobSortOption[] all = getAllJobSortOptions();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllJobSortOptions (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllJobSortOptions());
}
public static JobSortOption[] getJobSortOptionArray ()
{
return (JobSortOption[])getAllJobSortOptions().clone ();
}
public static void defineAdditionalData ()
{
}
static class JobSortOptionFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return JobSortOption.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return JobSortOption.forValue (name);
}
public Enumeration getAll ()
{
return JobSortOption.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="JobSortOption">
<VALUE name="NEWEST" value="NEWEST" description="Newest"/>
<VALUE name="CLOSING_SOON" value="CLOSING_SOON" description="Closing Soon"/>
<VALUE name="OLDEST" value="OLDEST" description="Oldest"/>
<VALUE name="ALPHA_A_Z" value="ALPHA_A_Z" description="Alpha A-Z"/>
<VALUE name="ALPHA_Z_A" value="ALPHA_Z_A" description="Alpha Z-A"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
...@@ -6,6 +6,9 @@ import oneit.security.*; ...@@ -6,6 +6,9 @@ import oneit.security.*;
import oneit.utils.Tuple; import oneit.utils.Tuple;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.Importance; import performa.orm.types.Importance;
import performa.orm.types.JobSortOption;
import oneit.objstore.utils.*;
import oneit.utils.*;
/** /**
* *
...@@ -73,4 +76,42 @@ public class Utils ...@@ -73,4 +76,42 @@ public class Utils
return levels; return levels;
} }
//to sort jobs list
public static List<Job> getJobsSorted(Job[] jobs, JobSortOption jobSortOption)
{
ObjectTransform transform = Job.pipesJob().toObjectCreated();
Comparator comparator = CollectionUtils.DEFAULT_COMPARATOR;
if(jobSortOption==JobSortOption.OLDEST)
{
transform = Job.pipesJob().toOpenDate();
comparator = CollectionUtils.DEFAULT_COMPARATOR;
}
else if(jobSortOption==JobSortOption.NEWEST)
{
transform = Job.pipesJob().toOpenDate();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR);
}
else if(jobSortOption==JobSortOption.CLOSING_SOON)
{
transform = Job.pipesJob().toApplyBy();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
}
else if(jobSortOption==JobSortOption.ALPHA_A_Z)
{
transform = Job.pipesJob().toJobTitle();
comparator = CollectionUtils.CASE_INSENSITIVE_COMPARATOR;
}
else if(jobSortOption==JobSortOption.ALPHA_Z_A)
{
transform = Job.pipesJob().toJobTitle();
comparator = CollectionUtils.reverse(CollectionUtils.CASE_INSENSITIVE_COMPARATOR);
}
return ObjstoreUtils.sort( Arrays.asList(jobs),
new ObjectTransform[]{transform},
new Comparator[]{comparator});
}
} }
...@@ -10,17 +10,33 @@ ...@@ -10,17 +10,33 @@
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String homePage = WebUtils.getSamePageInRenderMode(request, "Page"); String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
JobStatus jobStatus = (JobStatus) process.getAttribute("JobStatus"); JobStatus jobStatus = (JobStatus) process.getAttribute("JobStatus");
JobSortOption jobSortOpt = (JobSortOption) process.getAttribute("JobSortOption");
if(jobStatus == null && request.getParameter("JobStatus") != null) if(jobStatus == null && request.getParameter("JobStatus") != null)
{ {
jobStatus = JobStatus.forName((String) request.getParameter("JobStatus")); jobStatus = JobStatus.forName((String) request.getParameter("JobStatus"));
} }
if( request.getParameter("JobSortOption") != null)
{
jobSortOpt = JobSortOption.forName((String) request.getParameter("JobSortOption"));
}
if(jobSortOpt == null)
{
jobSortOpt = JobSortOption.NEWEST;
}
Job[] jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(jobStatus)) Job[] jobs = (Job[]) process.getAttribute("Jobs");
jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(jobStatus))
.andSecUser(new EqualsFilter(SecUser.getTXUser(transaction))) .andSecUser(new EqualsFilter(SecUser.getTXUser(transaction)))
.search(transaction); .search(transaction);
process.setAttribute("Jobs", jobs);
List<Job> sortedJobs = Utils.getJobsSorted(jobs, jobSortOpt);
process.setAttribute("JobStatus", jobStatus); process.setAttribute("JobStatus", jobStatus);
process.setAttribute("JobSortOption", jobSortOpt);
%> %>
<oneit:form name="editJob" method="post" enctype="multipart/form-data"> <oneit:form name="editJob" method="post" enctype="multipart/form-data">
...@@ -56,15 +72,24 @@ ...@@ -56,15 +72,24 @@
</div> </div>
<div class="shorting-dropdown"> <div class="shorting-dropdown">
<span class="order-label">order by</span> <span class="order-label">order by</span>
<select class="form-control"> <select class="form-control" onChange="location=this.value">
<option>Alphabetical (A-Z)</option> <%
<option>Alphabetical (Z-A)</option> for (JobSortOption sortOption : JobSortOption.getJobSortOptionArray())
{
String optionLink = homePage + (jobStatus!=null ? "&JobStatus=" + jobStatus.getName() : "") + "&JobSortOption=" + sortOption.getName() ;
%>
<option <%= (jobSortOpt != null && jobSortOpt == sortOption ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= sortOption.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select> </select>
</div> </div>
</div> </div>
<oneit:dynInclude page="/extensions/adminportal/inc/job_list.jsp" data="<%= CollectionUtils.EMPTY_MAP%>" <oneit:dynInclude page="/extensions/adminportal/inc/job_list.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"
NextPage="<%= nextPage%>" HomePage="<%= homePage%>" Jobs="<%= jobs %>" JobStatus="<%= jobStatus %>" /> NextPage="<%= nextPage%>" HomePage="<%= homePage%>" Jobs="<%= sortedJobs.toArray(new Job[0]) %>" JobStatus="<%= jobStatus %>" />
</div> </div>
</oneit:form> </oneit:form>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">tl_job</tableName>
<column name="open_date" type="Date" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment