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 @@
<column name="job_title" type="String" nullable="false" length="500"/>
<column name="job_description" type="CLOB" nullable="false"/>
<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="include_assessment_criteria" type="Boolean" nullable="false"/>
<column name="assessment_type" type="String" nullable="false" length="200"/>
......
......@@ -11,6 +11,7 @@ CREATE TABLE tl_job (
job_title varchar(500) NOT NULL,
job_description text NOT NULL,
job_status varchar(200) NOT NULL,
open_date datetime NULL,
apply_by datetime NULL,
include_assessment_criteria char(1) NOT NULL,
assessment_type varchar(200) NOT NULL,
......
......@@ -12,6 +12,7 @@ CREATE TABLE tl_job (
job_title varchar2(500) NOT NULL,
job_description clob NOT NULL,
job_status varchar2(200) NOT NULL,
open_date date NULL,
apply_by date NULL,
include_assessment_criteria char(1) NOT NULL,
assessment_type varchar2(200) NOT NULL,
......
......@@ -12,6 +12,7 @@ CREATE TABLE tl_job (
job_title varchar(500) NOT NULL,
job_description text NOT NULL,
job_status varchar(200) NOT NULL,
open_date timestamp NULL,
apply_by timestamp NULL,
include_assessment_criteria char(1) NOT NULL,
assessment_type varchar(200) NOT NULL,
......
package performa.form;
import java.util.Date;
import java.util.Map;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
......@@ -23,6 +24,7 @@ public class SaveJobFP extends SaveFP
LogMgr.log(Job.LOG, LogLevel.PROCESSING1,"In SaveJobFP saving job : ", job );
job.setJobStatus(JobStatus.OPEN);
job.setOpenDate(new Date());
return super.processForm(process, submission, params);
}
......
......@@ -45,6 +45,7 @@ public abstract class BaseJob extends BaseBusinessClass
public static final String FIELD_JobTitle = "JobTitle";
public static final String FIELD_JobDescription = "JobDescription";
public static final String FIELD_JobStatus = "JobStatus";
public static final String FIELD_OpenDate = "OpenDate";
public static final String FIELD_ApplyBy = "ApplyBy";
public static final String FIELD_IncludeAssessmentCriteria = "IncludeAssessmentCriteria";
public static final String FIELD_AssessmentType = "AssessmentType";
......@@ -80,6 +81,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final DefaultAttributeHelper<Job> HELPER_JobTitle = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_JobDescription = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<Job, JobStatus> HELPER_JobStatus = new EnumeratedAttributeHelper<Job, JobStatus> (JobStatus.FACTORY_JobStatus);
private static final DefaultAttributeHelper<Job> HELPER_OpenDate = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_ApplyBy = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_IncludeAssessmentCriteria = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<Job, AssessmentType> HELPER_AssessmentType = new EnumeratedAttributeHelper<Job, AssessmentType> (AssessmentType.FACTORY_AssessmentType);
......@@ -100,6 +102,7 @@ public abstract class BaseJob extends BaseBusinessClass
private String _JobTitle;
private String _JobDescription;
private JobStatus _JobStatus;
private Date _OpenDate;
private Date _ApplyBy;
private Boolean _IncludeAssessmentCriteria;
private AssessmentType _AssessmentType;
......@@ -146,6 +149,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final AttributeValidator[] FIELD_JobTitle_Validators;
private static final AttributeValidator[] FIELD_JobDescription_Validators;
private static final AttributeValidator[] FIELD_JobStatus_Validators;
private static final AttributeValidator[] FIELD_OpenDate_Validators;
private static final AttributeValidator[] FIELD_ApplyBy_Validators;
private static final AttributeValidator[] FIELD_IncludeAssessmentCriteria_Validators;
private static final AttributeValidator[] FIELD_AssessmentType_Validators;
......@@ -187,6 +191,7 @@ public abstract class BaseJob extends BaseBusinessClass
FIELD_JobTitle_Validators = (AttributeValidator[])setupAttribMetaData_JobTitle(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_JobDescription_Validators = (AttributeValidator[])setupAttribMetaData_JobDescription(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_JobStatus_Validators = (AttributeValidator[])setupAttribMetaData_JobStatus(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_OpenDate_Validators = (AttributeValidator[])setupAttribMetaData_OpenDate(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ApplyBy_Validators = (AttributeValidator[])setupAttribMetaData_ApplyBy(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_IncludeAssessmentCriteria_Validators = (AttributeValidator[])setupAttribMetaData_IncludeAssessmentCriteria(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_AssessmentType_Validators = (AttributeValidator[])setupAttribMetaData_AssessmentType(validatorMapping).toArray (new AttributeValidator[0]);
......@@ -537,6 +542,24 @@ public abstract class BaseJob extends BaseBusinessClass
}
// Meta Info setup
private static List setupAttribMetaData_OpenDate(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "open_date");
metaInfo.put ("name", "OpenDate");
metaInfo.put ("type", "Date");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.OpenDate:", metaInfo);
ATTRIBUTES_METADATA_Job.put (FIELD_OpenDate, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Job.class, "OpenDate", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Job.OpenDate:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_ApplyBy(Map validatorMapping)
{
Map metaInfo = new HashMap ();
......@@ -665,6 +688,7 @@ public abstract class BaseJob extends BaseBusinessClass
_JobTitle = (String)(HELPER_JobTitle.initialise (_JobTitle));
_JobDescription = (String)(HELPER_JobDescription.initialise (_JobDescription));
_JobStatus = (JobStatus)(JobStatus.DRAFT);
_OpenDate = (Date)(HELPER_OpenDate.initialise (_OpenDate));
_ApplyBy = (Date)(HELPER_ApplyBy.initialise (_ApplyBy));
_IncludeAssessmentCriteria = (Boolean)(Boolean.TRUE);
_AssessmentType = (AssessmentType)(AssessmentType.COMPREHENSIVE);
......@@ -1017,6 +1041,104 @@ public abstract class BaseJob extends BaseBusinessClass
}
/**
* Get the attribute OpenDate
*/
public Date getOpenDate ()
{
assertValid();
Date valToReturn = _OpenDate;
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
valToReturn = bhd.getOpenDate ((Job)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preOpenDateChange (Date newOpenDate) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postOpenDateChange () throws FieldException
{
}
public FieldWriteability getWriteability_OpenDate ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute OpenDate. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setOpenDate (Date newOpenDate) throws FieldException
{
boolean oldAndNewIdentical = HELPER_OpenDate.compare (_OpenDate, newOpenDate);
try
{
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
newOpenDate = bhd.setOpenDate ((Job)this, newOpenDate);
oldAndNewIdentical = HELPER_OpenDate.compare (_OpenDate, newOpenDate);
}
if (FIELD_OpenDate_Validators.length > 0)
{
Object newOpenDateObj = HELPER_OpenDate.toObject (newOpenDate);
if (newOpenDateObj != null)
{
int loopMax = FIELD_OpenDate_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Job.get (FIELD_OpenDate);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_OpenDate_Validators[v].checkAttribute (this, FIELD_OpenDate, metadata, newOpenDateObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_OpenDate () != FieldWriteability.FALSE, "Field OpenDate is not writeable");
preOpenDateChange (newOpenDate);
markFieldChange (FIELD_OpenDate);
_OpenDate = newOpenDate;
postFieldChange (FIELD_OpenDate);
postOpenDateChange ();
}
}
/**
* Get the attribute ApplyBy
*/
public Date getApplyBy ()
......@@ -3580,6 +3702,7 @@ public abstract class BaseJob extends BaseBusinessClass
tl_jobPSet.setAttrib (FIELD_JobTitle, HELPER_JobTitle.toObject (_JobTitle)); //
tl_jobPSet.setAttrib (FIELD_JobDescription, HELPER_JobDescription.toObject (_JobDescription)); //
tl_jobPSet.setAttrib (FIELD_JobStatus, HELPER_JobStatus.toObject (_JobStatus)); //
tl_jobPSet.setAttrib (FIELD_OpenDate, HELPER_OpenDate.toObject (_OpenDate)); //
tl_jobPSet.setAttrib (FIELD_ApplyBy, HELPER_ApplyBy.toObject (_ApplyBy)); //
tl_jobPSet.setAttrib (FIELD_IncludeAssessmentCriteria, HELPER_IncludeAssessmentCriteria.toObject (_IncludeAssessmentCriteria)); //
tl_jobPSet.setAttrib (FIELD_AssessmentType, HELPER_AssessmentType.toObject (_AssessmentType)); //
......@@ -3604,6 +3727,7 @@ public abstract class BaseJob extends BaseBusinessClass
_JobTitle = (String)(HELPER_JobTitle.fromObject (_JobTitle, tl_jobPSet.getAttrib (FIELD_JobTitle))); //
_JobDescription = (String)(HELPER_JobDescription.fromObject (_JobDescription, tl_jobPSet.getAttrib (FIELD_JobDescription))); //
_JobStatus = (JobStatus)(HELPER_JobStatus.fromObject (_JobStatus, tl_jobPSet.getAttrib (FIELD_JobStatus))); //
_OpenDate = (Date)(HELPER_OpenDate.fromObject (_OpenDate, tl_jobPSet.getAttrib (FIELD_OpenDate))); //
_ApplyBy = (Date)(HELPER_ApplyBy.fromObject (_ApplyBy, tl_jobPSet.getAttrib (FIELD_ApplyBy))); //
_IncludeAssessmentCriteria = (Boolean)(HELPER_IncludeAssessmentCriteria.fromObject (_IncludeAssessmentCriteria, tl_jobPSet.getAttrib (FIELD_IncludeAssessmentCriteria))); //
_AssessmentType = (AssessmentType)(HELPER_AssessmentType.fromObject (_AssessmentType, tl_jobPSet.getAttrib (FIELD_AssessmentType))); //
......@@ -3655,6 +3779,15 @@ public abstract class BaseJob extends BaseBusinessClass
try
{
setOpenDate (otherJob.getOpenDate ());
}
catch (FieldException ex)
{
e.addException (ex);
}
try
{
setApplyBy (otherJob.getApplyBy ());
}
catch (FieldException ex)
......@@ -3716,6 +3849,7 @@ public abstract class BaseJob extends BaseBusinessClass
_JobTitle = sourceJob._JobTitle;
_JobDescription = sourceJob._JobDescription;
_JobStatus = sourceJob._JobStatus;
_OpenDate = sourceJob._OpenDate;
_ApplyBy = sourceJob._ApplyBy;
_IncludeAssessmentCriteria = sourceJob._IncludeAssessmentCriteria;
_AssessmentType = sourceJob._AssessmentType;
......@@ -3795,6 +3929,7 @@ public abstract class BaseJob extends BaseBusinessClass
_JobTitle = (String)(HELPER_JobTitle.readExternal (_JobTitle, vals.get(FIELD_JobTitle))); //
_JobDescription = (String)(HELPER_JobDescription.readExternal (_JobDescription, vals.get(FIELD_JobDescription))); //
_JobStatus = (JobStatus)(HELPER_JobStatus.readExternal (_JobStatus, vals.get(FIELD_JobStatus))); //
_OpenDate = (Date)(HELPER_OpenDate.readExternal (_OpenDate, vals.get(FIELD_OpenDate))); //
_ApplyBy = (Date)(HELPER_ApplyBy.readExternal (_ApplyBy, vals.get(FIELD_ApplyBy))); //
_IncludeAssessmentCriteria = (Boolean)(HELPER_IncludeAssessmentCriteria.readExternal (_IncludeAssessmentCriteria, vals.get(FIELD_IncludeAssessmentCriteria))); //
_AssessmentType = (AssessmentType)(HELPER_AssessmentType.readExternal (_AssessmentType, vals.get(FIELD_AssessmentType))); //
......@@ -3831,6 +3966,7 @@ public abstract class BaseJob extends BaseBusinessClass
vals.put (FIELD_JobTitle, HELPER_JobTitle.writeExternal (_JobTitle));
vals.put (FIELD_JobDescription, HELPER_JobDescription.writeExternal (_JobDescription));
vals.put (FIELD_JobStatus, HELPER_JobStatus.writeExternal (_JobStatus));
vals.put (FIELD_OpenDate, HELPER_OpenDate.writeExternal (_OpenDate));
vals.put (FIELD_ApplyBy, HELPER_ApplyBy.writeExternal (_ApplyBy));
vals.put (FIELD_IncludeAssessmentCriteria, HELPER_IncludeAssessmentCriteria.writeExternal (_IncludeAssessmentCriteria));
vals.put (FIELD_AssessmentType, HELPER_AssessmentType.writeExternal (_AssessmentType));
......@@ -3878,6 +4014,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
listener.notifyFieldChange(this, other, FIELD_JobStatus, HELPER_JobStatus.toObject(this._JobStatus), HELPER_JobStatus.toObject(otherJob._JobStatus));
}
if (!HELPER_OpenDate.compare(this._OpenDate, otherJob._OpenDate))
{
listener.notifyFieldChange(this, other, FIELD_OpenDate, HELPER_OpenDate.toObject(this._OpenDate), HELPER_OpenDate.toObject(otherJob._OpenDate));
}
if (!HELPER_ApplyBy.compare(this._ApplyBy, otherJob._ApplyBy))
{
listener.notifyFieldChange(this, other, FIELD_ApplyBy, HELPER_ApplyBy.toObject(this._ApplyBy), HELPER_ApplyBy.toObject(otherJob._ApplyBy));
......@@ -3940,6 +4080,7 @@ public abstract class BaseJob extends BaseBusinessClass
visitor.visitField(this, FIELD_JobTitle, HELPER_JobTitle.toObject(getJobTitle()));
visitor.visitField(this, FIELD_JobDescription, HELPER_JobDescription.toObject(getJobDescription()));
visitor.visitField(this, FIELD_JobStatus, HELPER_JobStatus.toObject(getJobStatus()));
visitor.visitField(this, FIELD_OpenDate, HELPER_OpenDate.toObject(getOpenDate()));
visitor.visitField(this, FIELD_ApplyBy, HELPER_ApplyBy.toObject(getApplyBy()));
visitor.visitField(this, FIELD_IncludeAssessmentCriteria, HELPER_IncludeAssessmentCriteria.toObject(getIncludeAssessmentCriteria()));
visitor.visitField(this, FIELD_AssessmentType, HELPER_AssessmentType.toObject(getAssessmentType()));
......@@ -4030,6 +4171,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
return filter.matches (getJobStatus ());
}
else if (attribName.equals (FIELD_OpenDate))
{
return filter.matches (getOpenDate ());
}
else if (attribName.equals (FIELD_ApplyBy))
{
return filter.matches (getApplyBy ());
......@@ -4107,6 +4252,12 @@ public abstract class BaseJob extends BaseBusinessClass
return this;
}
public SearchAll andOpenDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job.open_date", "OpenDate");
return this;
}
public SearchAll andApplyBy (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job.apply_by", "ApplyBy");
......@@ -4230,6 +4381,12 @@ public abstract class BaseJob extends BaseBusinessClass
return this;
}
public SearchJobKey andOpenDate (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job.open_date", "OpenDate");
return this;
}
public SearchJobKey andApplyBy (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job.apply_by", "ApplyBy");
......@@ -4319,6 +4476,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
return HELPER_JobStatus.toObject (getJobStatus ());
}
else if (attribName.equals (FIELD_OpenDate))
{
return HELPER_OpenDate.toObject (getOpenDate ());
}
else if (attribName.equals (FIELD_ApplyBy))
{
return HELPER_ApplyBy.toObject (getApplyBy ());
......@@ -4400,6 +4561,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
return HELPER_JobStatus;
}
else if (attribName.equals (FIELD_OpenDate))
{
return HELPER_OpenDate;
}
else if (attribName.equals (FIELD_ApplyBy))
{
return HELPER_ApplyBy;
......@@ -4481,6 +4646,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
setJobStatus ((JobStatus)(HELPER_JobStatus.fromObject (_JobStatus, attribValue)));
}
else if (attribName.equals (FIELD_OpenDate))
{
setOpenDate ((Date)(HELPER_OpenDate.fromObject (_OpenDate, attribValue)));
}
else if (attribName.equals (FIELD_ApplyBy))
{
setApplyBy ((Date)(HELPER_ApplyBy.fromObject (_ApplyBy, attribValue)));
......@@ -4569,6 +4738,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
return getWriteability_JobStatus ();
}
else if (fieldName.equals (FIELD_OpenDate))
{
return getWriteability_OpenDate ();
}
else if (fieldName.equals (FIELD_ApplyBy))
{
return getWriteability_ApplyBy ();
......@@ -4682,6 +4855,11 @@ public abstract class BaseJob extends BaseBusinessClass
fields.add (FIELD_JobStatus);
}
if (getWriteability_OpenDate () != FieldWriteability.TRUE)
{
fields.add (FIELD_OpenDate);
}
if (getWriteability_ApplyBy () != FieldWriteability.TRUE)
{
fields.add (FIELD_ApplyBy);
......@@ -4764,6 +4942,7 @@ public abstract class BaseJob extends BaseBusinessClass
result.add(HELPER_JobTitle.getAttribObject (getClass (), _JobTitle, true, FIELD_JobTitle));
result.add(HELPER_JobDescription.getAttribObject (getClass (), _JobDescription, true, FIELD_JobDescription));
result.add(HELPER_JobStatus.getAttribObject (getClass (), _JobStatus, true, FIELD_JobStatus));
result.add(HELPER_OpenDate.getAttribObject (getClass (), _OpenDate, false, FIELD_OpenDate));
result.add(HELPER_ApplyBy.getAttribObject (getClass (), _ApplyBy, false, FIELD_ApplyBy));
result.add(HELPER_IncludeAssessmentCriteria.getAttribObject (getClass (), _IncludeAssessmentCriteria, true, FIELD_IncludeAssessmentCriteria));
result.add(HELPER_AssessmentType.getAttribObject (getClass (), _AssessmentType, true, FIELD_AssessmentType));
......@@ -4883,6 +5062,24 @@ public abstract class BaseJob extends BaseBusinessClass
}
/**
* Get the attribute OpenDate
*/
public Date getOpenDate (Job obj, Date original)
{
return original;
}
/**
* Change the value set for attribute OpenDate.
* May modify the field beforehand
* Occurs before validation.
*/
public Date setOpenDate (Job obj, Date newOpenDate) throws FieldException
{
return newOpenDate;
}
/**
* Get the attribute ApplyBy
*/
public Date getApplyBy (Job obj, Date original)
......@@ -5258,6 +5455,10 @@ public abstract class BaseJob extends BaseBusinessClass
{
return toJobStatus ();
}
if (name.equals ("OpenDate"))
{
return toOpenDate ();
}
if (name.equals ("ApplyBy"))
{
return toApplyBy ();
......@@ -5316,6 +5517,8 @@ public abstract class BaseJob extends BaseBusinessClass
public PipeLine<From, JobStatus> toJobStatus () { return pipe(new ORMAttributePipe<Me, JobStatus>(FIELD_JobStatus)); }
public PipeLine<From, Date> toOpenDate () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_OpenDate)); }
public PipeLine<From, Date> toApplyBy () { return pipe(new ORMAttributePipe<Me, Date>(FIELD_ApplyBy)); }
public PipeLine<From, Boolean> toIncludeAssessmentCriteria () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_IncludeAssessmentCriteria)); }
......
......@@ -29,6 +29,7 @@
<ATTRIB name="JobTitle" type="String" dbcol="job_title" length="500" 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="OpenDate" type="Date" dbcol="open_date"/>
<ATTRIB name="ApplyBy" type="Date" dbcol="apply_by"/>
<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"/>
......
......@@ -31,6 +31,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
private String dummyJobTitle;
private String dummyJobDescription;
private JobStatus dummyJobStatus;
private Date dummyOpenDate;
private Date dummyApplyBy;
private Boolean dummyIncludeAssessmentCriteria;
private AssessmentType dummyAssessmentType;
......@@ -42,6 +43,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
private static final DefaultAttributeHelper HELPER_JobTitle = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_JobDescription = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_JobStatus = new EnumeratedAttributeHelper (JobStatus.FACTORY_JobStatus);
private static final DefaultAttributeHelper HELPER_OpenDate = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_ApplyBy = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_IncludeAssessmentCriteria = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper HELPER_AssessmentType = new EnumeratedAttributeHelper (AssessmentType.FACTORY_AssessmentType);
......@@ -56,6 +58,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
dummyJobTitle = (String)(HELPER_JobTitle.initialise (dummyJobTitle));
dummyJobDescription = (String)(HELPER_JobDescription.initialise (dummyJobDescription));
dummyJobStatus = (JobStatus)(HELPER_JobStatus.initialise (dummyJobStatus));
dummyOpenDate = (Date)(HELPER_OpenDate.initialise (dummyOpenDate));
dummyApplyBy = (Date)(HELPER_ApplyBy.initialise (dummyApplyBy));
dummyIncludeAssessmentCriteria = (Boolean)(HELPER_IncludeAssessmentCriteria.initialise (dummyIncludeAssessmentCriteria));
dummyAssessmentType = (AssessmentType)(HELPER_AssessmentType.initialise (dummyAssessmentType));
......@@ -64,7 +67,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
}
private String SELECT_COLUMNS = "{PREFIX}tl_job.object_id as id, {PREFIX}tl_job.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job.job_title, {PREFIX}tl_job.job_description, {PREFIX}tl_job.job_status, {PREFIX}tl_job.apply_by, {PREFIX}tl_job.include_assessment_criteria, {PREFIX}tl_job.assessment_type, {PREFIX}tl_job.random_key, {PREFIX}tl_job.job_type, {PREFIX}tl_job.level_id, {PREFIX}tl_job.secuser_id, 1 AS commasafe ";
private String SELECT_COLUMNS = "{PREFIX}tl_job.object_id as id, {PREFIX}tl_job.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_job.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_job.job_title, {PREFIX}tl_job.job_description, {PREFIX}tl_job.job_status, {PREFIX}tl_job.open_date, {PREFIX}tl_job.apply_by, {PREFIX}tl_job.include_assessment_criteria, {PREFIX}tl_job.assessment_type, {PREFIX}tl_job.random_key, {PREFIX}tl_job.job_type, {PREFIX}tl_job.level_id, {PREFIX}tl_job.secuser_id, 1 AS commasafe ";
private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
......@@ -118,6 +121,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
!tl_jobPSet.containsAttrib(Job.FIELD_JobTitle)||
!tl_jobPSet.containsAttrib(Job.FIELD_JobDescription)||
!tl_jobPSet.containsAttrib(Job.FIELD_JobStatus)||
!tl_jobPSet.containsAttrib(Job.FIELD_OpenDate)||
!tl_jobPSet.containsAttrib(Job.FIELD_ApplyBy)||
!tl_jobPSet.containsAttrib(Job.FIELD_IncludeAssessmentCriteria)||
!tl_jobPSet.containsAttrib(Job.FIELD_AssessmentType)||
......@@ -194,10 +198,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
{
int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_job " +
"SET job_title = ?, job_description = ?, job_status = ?, apply_by = ?, include_assessment_criteria = ?, assessment_type = ?, random_key = ?, job_type = ?, level_id = ? , secuser_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"SET job_title = ?, job_description = ?, job_status = ?, open_date = ?, apply_by = ?, include_assessment_criteria = ?, assessment_type = ?, random_key = ?, job_type = ?, level_id = ? , secuser_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_job.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_SecUser)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_SecUser)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1)
{
......@@ -512,6 +516,7 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
tl_jobPSet.setAttrib(Job.FIELD_JobTitle, HELPER_JobTitle.getFromRS(dummyJobTitle, r, "job_title"));
tl_jobPSet.setAttrib(Job.FIELD_JobDescription, HELPER_JobDescription.getFromRS(dummyJobDescription, r, "job_description"));
tl_jobPSet.setAttrib(Job.FIELD_JobStatus, HELPER_JobStatus.getFromRS(dummyJobStatus, r, "job_status"));
tl_jobPSet.setAttrib(Job.FIELD_OpenDate, HELPER_OpenDate.getFromRS(dummyOpenDate, r, "open_date"));
tl_jobPSet.setAttrib(Job.FIELD_ApplyBy, HELPER_ApplyBy.getFromRS(dummyApplyBy, r, "apply_by"));
tl_jobPSet.setAttrib(Job.FIELD_IncludeAssessmentCriteria, HELPER_IncludeAssessmentCriteria.getFromRS(dummyIncludeAssessmentCriteria, r, "include_assessment_criteria"));
tl_jobPSet.setAttrib(Job.FIELD_AssessmentType, HELPER_AssessmentType.getFromRS(dummyAssessmentType, r, "assessment_type"));
......@@ -536,10 +541,10 @@ public class JobPersistenceMgr extends ObjectPersistenceMgr
{
executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_job " +
" (job_title, job_description, job_status, apply_by, include_assessment_criteria, assessment_type, random_key, job_type, level_id, secuser_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
" (job_title, job_description, job_status, open_date, apply_by, include_assessment_criteria, assessment_type, random_key, job_type, level_id, secuser_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " +
" (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))) .listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_SecUser)))) .listEntry (objectID.longID ()).toList().toArray());
" (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_JobTitle.getForSQL(dummyJobTitle, tl_jobPSet.getAttrib (Job.FIELD_JobTitle))).listEntry (HELPER_JobDescription.getForSQL(dummyJobDescription, tl_jobPSet.getAttrib (Job.FIELD_JobDescription))).listEntry (HELPER_JobStatus.getForSQL(dummyJobStatus, tl_jobPSet.getAttrib (Job.FIELD_JobStatus))).listEntry (HELPER_OpenDate.getForSQL(dummyOpenDate, tl_jobPSet.getAttrib (Job.FIELD_OpenDate))).listEntry (HELPER_ApplyBy.getForSQL(dummyApplyBy, tl_jobPSet.getAttrib (Job.FIELD_ApplyBy))).listEntry (HELPER_IncludeAssessmentCriteria.getForSQL(dummyIncludeAssessmentCriteria, tl_jobPSet.getAttrib (Job.FIELD_IncludeAssessmentCriteria))).listEntry (HELPER_AssessmentType.getForSQL(dummyAssessmentType, tl_jobPSet.getAttrib (Job.FIELD_AssessmentType))).listEntry (HELPER_RandomKey.getForSQL(dummyRandomKey, tl_jobPSet.getAttrib (Job.FIELD_RandomKey))).listEntry (HELPER_JobType.getForSQL(dummyJobType, tl_jobPSet.getAttrib (Job.FIELD_JobType))) .listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_jobPSet.getAttrib (Job.SINGLEREFERENCE_SecUser)))) .listEntry (objectID.longID ()).toList().toArray());
tl_jobPSet.setStatus (PersistentSetStatus.PROCESSED);
}
......
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.*;
import oneit.utils.Tuple;
import performa.orm.*;
import performa.orm.types.Importance;
import performa.orm.types.JobSortOption;
import oneit.objstore.utils.*;
import oneit.utils.*;
/**
*
......@@ -73,4 +76,42 @@ public class Utils
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 @@
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
JobStatus jobStatus = (JobStatus) process.getAttribute("JobStatus");
JobSortOption jobSortOpt = (JobSortOption) process.getAttribute("JobSortOption");
if(jobStatus == null && request.getParameter("JobStatus") != null)
{
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)))
.search(transaction);
process.setAttribute("Jobs", jobs);
List<Job> sortedJobs = Utils.getJobsSorted(jobs, jobSortOpt);
process.setAttribute("JobStatus", jobStatus);
process.setAttribute("JobSortOption", jobSortOpt);
%>
<oneit:form name="editJob" method="post" enctype="multipart/form-data">
......@@ -56,15 +72,24 @@
</div>
<div class="shorting-dropdown">
<span class="order-label">order by</span>
<select class="form-control">
<option>Alphabetical (A-Z)</option>
<option>Alphabetical (Z-A)</option>
<select class="form-control" onChange="location=this.value">
<%
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>
</div>
</div>
<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>
</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