Commit 8bb8ef45 by Harsh Shah

Finish Release-20170906

# Conflicts:
#	cmsWebApp/src/performa/utils/Utils.java
#	cmsWebApp/webroot/extensions/adminportal/inc/application_list_data.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/htmlheader.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/job_title_bar.jsp
#	cmsWebApp/webroot/extensions/adminportal/inc/view_application_tab_applicant.jsp
#	cmsWebApp/webroot/extensions/adminportal/sign_in.jsp
#	cmsWebApp/webroot/extensions/adminportal/view_applicants_shortlist_grid.jsp
#	cmsWebApp/webroot/extensions/adminportal/view_applicantss_grid.jsp
#	cmsWebApp/webroot/extensions/applicantportal/application_outline.jsp
#	cmsWebApp/webroot/extensions/applicantportal/inc/htmlheader.jsp
#	cmsWebApp/webroot/extensions/applicantportal/job_match_assessment.jsp
#	cmsWebApp/webroot/extensions/applicantportal/job_overview.jsp
#	cmsWebApp/webroot/extensions/applicantportal/selection_criteria.jsp
#	cmsWebApp/webroot/extensions/applicantportal/sign_in.jsp
#	cmsWebApp/webroot/extensions/applicantportal/submit_application.jsp
#	cmsWebApp/webroot/extensions/applicantportal/verify_identity.jsp
#	cmsWebApp/webroot/extensions/applicantportal/workplace_culture.jsp
parents 8b8695e7 dd8ec62e
...@@ -71,6 +71,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -71,6 +71,7 @@ public abstract class BaseJob extends BaseBusinessClass
public static final String FIELD_AssessmentTemplateName = "AssessmentTemplateName"; public static final String FIELD_AssessmentTemplateName = "AssessmentTemplateName";
public static final String FIELD_CultureTemplateName = "CultureTemplateName"; public static final String FIELD_CultureTemplateName = "CultureTemplateName";
public static final String FIELD_AppProcessOption = "AppProcessOption"; public static final String FIELD_AppProcessOption = "AppProcessOption";
public static final String FIELD_RankingCompleted = "RankingCompleted";
public static final String SINGLEREFERENCE_AssessmentTemplate = "AssessmentTemplate"; public static final String SINGLEREFERENCE_AssessmentTemplate = "AssessmentTemplate";
public static final String SINGLEREFERENCE_CultureTemplate = "CultureTemplate"; public static final String SINGLEREFERENCE_CultureTemplate = "CultureTemplate";
public static final String SINGLEREFERENCE_JobTemplate = "JobTemplate"; public static final String SINGLEREFERENCE_JobTemplate = "JobTemplate";
...@@ -118,6 +119,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -118,6 +119,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final DefaultAttributeHelper<Job> HELPER_AssessmentTemplateName = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_AssessmentTemplateName = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<Job> HELPER_CultureTemplateName = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<Job> HELPER_CultureTemplateName = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<Job, AppProcessOption> HELPER_AppProcessOption = new EnumeratedAttributeHelper<Job, AppProcessOption> (AppProcessOption.FACTORY_AppProcessOption); private static final EnumeratedAttributeHelper<Job, AppProcessOption> HELPER_AppProcessOption = new EnumeratedAttributeHelper<Job, AppProcessOption> (AppProcessOption.FACTORY_AppProcessOption);
private static final DefaultAttributeHelper<Job> HELPER_RankingCompleted = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
...@@ -148,6 +150,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -148,6 +150,7 @@ public abstract class BaseJob extends BaseBusinessClass
private String _AssessmentTemplateName; private String _AssessmentTemplateName;
private String _CultureTemplateName; private String _CultureTemplateName;
private AppProcessOption _AppProcessOption; private AppProcessOption _AppProcessOption;
private Boolean _RankingCompleted;
// Private attributes corresponding to single references // Private attributes corresponding to single references
...@@ -181,6 +184,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -181,6 +184,7 @@ public abstract class BaseJob extends BaseBusinessClass
private static final AttributeValidator[] FIELD_AssessmentTemplateName_Validators; private static final AttributeValidator[] FIELD_AssessmentTemplateName_Validators;
private static final AttributeValidator[] FIELD_CultureTemplateName_Validators; private static final AttributeValidator[] FIELD_CultureTemplateName_Validators;
private static final AttributeValidator[] FIELD_AppProcessOption_Validators; private static final AttributeValidator[] FIELD_AppProcessOption_Validators;
private static final AttributeValidator[] FIELD_RankingCompleted_Validators;
private static final AttributeValidator[] FIELD_JobTitle_Validators; private static final AttributeValidator[] FIELD_JobTitle_Validators;
private static final AttributeValidator[] FIELD_JobDescription_Validators; private static final AttributeValidator[] FIELD_JobDescription_Validators;
private static final AttributeValidator[] FIELD_JobStatus_Validators; private static final AttributeValidator[] FIELD_JobStatus_Validators;
...@@ -234,6 +238,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -234,6 +238,7 @@ public abstract class BaseJob extends BaseBusinessClass
FIELD_AssessmentTemplateName_Validators = (AttributeValidator[])setupAttribMetaData_AssessmentTemplateName(validatorMapping).toArray (new AttributeValidator[0]); FIELD_AssessmentTemplateName_Validators = (AttributeValidator[])setupAttribMetaData_AssessmentTemplateName(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CultureTemplateName_Validators = (AttributeValidator[])setupAttribMetaData_CultureTemplateName(validatorMapping).toArray (new AttributeValidator[0]); FIELD_CultureTemplateName_Validators = (AttributeValidator[])setupAttribMetaData_CultureTemplateName(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]); FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_RankingCompleted_Validators = (AttributeValidator[])setupAttribMetaData_RankingCompleted(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_JobTitle_Validators = (AttributeValidator[])setupAttribMetaData_JobTitle(validatorMapping).toArray (new AttributeValidator[0]); FIELD_JobTitle_Validators = (AttributeValidator[])setupAttribMetaData_JobTitle(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_JobDescription_Validators = (AttributeValidator[])setupAttribMetaData_JobDescription(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_JobStatus_Validators = (AttributeValidator[])setupAttribMetaData_JobStatus(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -601,6 +606,23 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -601,6 +606,23 @@ public abstract class BaseJob extends BaseBusinessClass
} }
// Meta Info setup // Meta Info setup
private static List setupAttribMetaData_RankingCompleted(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "RankingCompleted");
metaInfo.put ("type", "Boolean");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Job.RankingCompleted:", metaInfo);
ATTRIBUTES_METADATA_Job.put (FIELD_RankingCompleted, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(Job.class, "RankingCompleted", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for Job.RankingCompleted:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_JobTitle(Map validatorMapping) private static List setupAttribMetaData_JobTitle(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -945,6 +967,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -945,6 +967,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplateName = (String)(HELPER_AssessmentTemplateName.initialise (_AssessmentTemplateName)); _AssessmentTemplateName = (String)(HELPER_AssessmentTemplateName.initialise (_AssessmentTemplateName));
_CultureTemplateName = (String)(HELPER_CultureTemplateName.initialise (_CultureTemplateName)); _CultureTemplateName = (String)(HELPER_CultureTemplateName.initialise (_CultureTemplateName));
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.initialise (_AppProcessOption)); _AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.initialise (_AppProcessOption));
_RankingCompleted = (Boolean)(HELPER_RankingCompleted.initialise (_RankingCompleted));
} }
...@@ -3639,6 +3662,104 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -3639,6 +3662,104 @@ public abstract class BaseJob extends BaseBusinessClass
} }
} }
/**
* Get the attribute RankingCompleted
*/
public Boolean getRankingCompleted ()
{
assertValid();
Boolean valToReturn = _RankingCompleted;
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
valToReturn = bhd.getRankingCompleted ((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 preRankingCompletedChange (Boolean newRankingCompleted) 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 postRankingCompletedChange () throws FieldException
{
}
public FieldWriteability getWriteability_RankingCompleted ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute RankingCompleted. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setRankingCompleted (Boolean newRankingCompleted) throws FieldException
{
boolean oldAndNewIdentical = HELPER_RankingCompleted.compare (_RankingCompleted, newRankingCompleted);
try
{
for (JobBehaviourDecorator bhd : Job_BehaviourDecorators)
{
newRankingCompleted = bhd.setRankingCompleted ((Job)this, newRankingCompleted);
oldAndNewIdentical = HELPER_RankingCompleted.compare (_RankingCompleted, newRankingCompleted);
}
if (FIELD_RankingCompleted_Validators.length > 0)
{
Object newRankingCompletedObj = HELPER_RankingCompleted.toObject (newRankingCompleted);
if (newRankingCompletedObj != null)
{
int loopMax = FIELD_RankingCompleted_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_Job.get (FIELD_RankingCompleted);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_RankingCompleted_Validators[v].checkAttribute (this, FIELD_RankingCompleted, metadata, newRankingCompletedObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_RankingCompleted () != FieldWriteability.FALSE, "Field RankingCompleted is not writeable");
preRankingCompletedChange (newRankingCompleted);
markFieldChange (FIELD_RankingCompleted);
_RankingCompleted = newRankingCompleted;
postFieldChange (FIELD_RankingCompleted);
postRankingCompletedChange ();
}
}
/** /**
...@@ -5208,6 +5329,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5208,6 +5329,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplateName = sourceJob._AssessmentTemplateName; _AssessmentTemplateName = sourceJob._AssessmentTemplateName;
_CultureTemplateName = sourceJob._CultureTemplateName; _CultureTemplateName = sourceJob._CultureTemplateName;
_AppProcessOption = sourceJob._AppProcessOption; _AppProcessOption = sourceJob._AppProcessOption;
_RankingCompleted = sourceJob._RankingCompleted;
} }
} }
...@@ -5298,6 +5420,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5298,6 +5420,7 @@ public abstract class BaseJob extends BaseBusinessClass
_AssessmentTemplateName = (String)(HELPER_AssessmentTemplateName.readExternal (_AssessmentTemplateName, vals.get(FIELD_AssessmentTemplateName))); // _AssessmentTemplateName = (String)(HELPER_AssessmentTemplateName.readExternal (_AssessmentTemplateName, vals.get(FIELD_AssessmentTemplateName))); //
_CultureTemplateName = (String)(HELPER_CultureTemplateName.readExternal (_CultureTemplateName, vals.get(FIELD_CultureTemplateName))); // _CultureTemplateName = (String)(HELPER_CultureTemplateName.readExternal (_CultureTemplateName, vals.get(FIELD_CultureTemplateName))); //
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.readExternal (_AppProcessOption, vals.get(FIELD_AppProcessOption))); // _AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.readExternal (_AppProcessOption, vals.get(FIELD_AppProcessOption))); //
_RankingCompleted = (Boolean)(HELPER_RankingCompleted.readExternal (_RankingCompleted, vals.get(FIELD_RankingCompleted))); //
_AssessmentTemplate.readExternalData(vals.get(SINGLEREFERENCE_AssessmentTemplate)); _AssessmentTemplate.readExternalData(vals.get(SINGLEREFERENCE_AssessmentTemplate));
_CultureTemplate.readExternalData(vals.get(SINGLEREFERENCE_CultureTemplate)); _CultureTemplate.readExternalData(vals.get(SINGLEREFERENCE_CultureTemplate));
_JobTemplate.readExternalData(vals.get(SINGLEREFERENCE_JobTemplate)); _JobTemplate.readExternalData(vals.get(SINGLEREFERENCE_JobTemplate));
...@@ -5345,6 +5468,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5345,6 +5468,7 @@ public abstract class BaseJob extends BaseBusinessClass
vals.put (FIELD_AssessmentTemplateName, HELPER_AssessmentTemplateName.writeExternal (_AssessmentTemplateName)); vals.put (FIELD_AssessmentTemplateName, HELPER_AssessmentTemplateName.writeExternal (_AssessmentTemplateName));
vals.put (FIELD_CultureTemplateName, HELPER_CultureTemplateName.writeExternal (_CultureTemplateName)); vals.put (FIELD_CultureTemplateName, HELPER_CultureTemplateName.writeExternal (_CultureTemplateName));
vals.put (FIELD_AppProcessOption, HELPER_AppProcessOption.writeExternal (_AppProcessOption)); vals.put (FIELD_AppProcessOption, HELPER_AppProcessOption.writeExternal (_AppProcessOption));
vals.put (FIELD_RankingCompleted, HELPER_RankingCompleted.writeExternal (_RankingCompleted));
vals.put (SINGLEREFERENCE_AssessmentTemplate, _AssessmentTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_AssessmentTemplate, _AssessmentTemplate.writeExternalData());
vals.put (SINGLEREFERENCE_CultureTemplate, _CultureTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_CultureTemplate, _CultureTemplate.writeExternalData());
vals.put (SINGLEREFERENCE_JobTemplate, _JobTemplate.writeExternalData()); vals.put (SINGLEREFERENCE_JobTemplate, _JobTemplate.writeExternalData());
...@@ -5462,6 +5586,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -5462,6 +5586,7 @@ public abstract class BaseJob extends BaseBusinessClass
visitor.visitField(this, FIELD_AssessmentTemplateName, HELPER_AssessmentTemplateName.toObject(getAssessmentTemplateName())); visitor.visitField(this, FIELD_AssessmentTemplateName, HELPER_AssessmentTemplateName.toObject(getAssessmentTemplateName()));
visitor.visitField(this, FIELD_CultureTemplateName, HELPER_CultureTemplateName.toObject(getCultureTemplateName())); visitor.visitField(this, FIELD_CultureTemplateName, HELPER_CultureTemplateName.toObject(getCultureTemplateName()));
visitor.visitField(this, FIELD_AppProcessOption, HELPER_AppProcessOption.toObject(getAppProcessOption())); visitor.visitField(this, FIELD_AppProcessOption, HELPER_AppProcessOption.toObject(getAppProcessOption()));
visitor.visitField(this, FIELD_RankingCompleted, HELPER_RankingCompleted.toObject(getRankingCompleted()));
} }
...@@ -6088,6 +6213,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6088,6 +6213,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_AppProcessOption.toObject (getAppProcessOption ()); return HELPER_AppProcessOption.toObject (getAppProcessOption ());
} }
else if (attribName.equals (FIELD_RankingCompleted))
{
return HELPER_RankingCompleted.toObject (getRankingCompleted ());
}
else else
{ {
return super.getAttribute (attribName); return super.getAttribute (attribName);
...@@ -6209,6 +6338,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6209,6 +6338,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return HELPER_AppProcessOption; return HELPER_AppProcessOption;
} }
else if (attribName.equals (FIELD_RankingCompleted))
{
return HELPER_RankingCompleted;
}
else else
{ {
return super.getAttributeHelper (attribName); return super.getAttributeHelper (attribName);
...@@ -6330,6 +6463,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6330,6 +6463,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
setAppProcessOption ((AppProcessOption)(HELPER_AppProcessOption.fromObject (_AppProcessOption, attribValue))); setAppProcessOption ((AppProcessOption)(HELPER_AppProcessOption.fromObject (_AppProcessOption, attribValue)));
} }
else if (attribName.equals (FIELD_RankingCompleted))
{
setRankingCompleted ((Boolean)(HELPER_RankingCompleted.fromObject (_RankingCompleted, attribValue)));
}
else else
{ {
super.setAttribute (attribName, attribValue); super.setAttribute (attribName, attribValue);
...@@ -6482,6 +6619,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6482,6 +6619,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return getWriteability_AppProcessOption (); return getWriteability_AppProcessOption ();
} }
else if (fieldName.equals (FIELD_RankingCompleted))
{
return getWriteability_RankingCompleted ();
}
else if (fieldName.equals (SINGLEREFERENCE_AssessmentTemplate)) else if (fieldName.equals (SINGLEREFERENCE_AssessmentTemplate))
{ {
return getWriteability_AssessmentTemplate (); return getWriteability_AssessmentTemplate ();
...@@ -6639,6 +6780,11 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6639,6 +6780,11 @@ public abstract class BaseJob extends BaseBusinessClass
fields.add (FIELD_AppProcessOption); fields.add (FIELD_AppProcessOption);
} }
if (getWriteability_RankingCompleted () != FieldWriteability.TRUE)
{
fields.add (FIELD_RankingCompleted);
}
super.putUnwriteable (fields); super.putUnwriteable (fields);
} }
...@@ -6675,6 +6821,7 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -6675,6 +6821,7 @@ public abstract class BaseJob extends BaseBusinessClass
result.add(HELPER_AssessmentTemplateName.getAttribObject (getClass (), _AssessmentTemplateName, false, FIELD_AssessmentTemplateName)); result.add(HELPER_AssessmentTemplateName.getAttribObject (getClass (), _AssessmentTemplateName, false, FIELD_AssessmentTemplateName));
result.add(HELPER_CultureTemplateName.getAttribObject (getClass (), _CultureTemplateName, false, FIELD_CultureTemplateName)); result.add(HELPER_CultureTemplateName.getAttribObject (getClass (), _CultureTemplateName, false, FIELD_CultureTemplateName));
result.add(HELPER_AppProcessOption.getAttribObject (getClass (), _AppProcessOption, false, FIELD_AppProcessOption)); result.add(HELPER_AppProcessOption.getAttribObject (getClass (), _AppProcessOption, false, FIELD_AppProcessOption));
result.add(HELPER_RankingCompleted.getAttribObject (getClass (), _RankingCompleted, false, FIELD_RankingCompleted));
return result; return result;
} }
...@@ -7211,6 +7358,24 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7211,6 +7358,24 @@ public abstract class BaseJob extends BaseBusinessClass
return newAppProcessOption; return newAppProcessOption;
} }
/**
* Get the attribute RankingCompleted
*/
public Boolean getRankingCompleted (Job obj, Boolean original)
{
return original;
}
/**
* Change the value set for attribute RankingCompleted.
* May modify the field beforehand
* Occurs before validation.
*/
public Boolean setRankingCompleted (Job obj, Boolean newRankingCompleted) throws FieldException
{
return newRankingCompleted;
}
} }
...@@ -7323,6 +7488,10 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7323,6 +7488,10 @@ public abstract class BaseJob extends BaseBusinessClass
{ {
return toAppProcessOption (); return toAppProcessOption ();
} }
if (name.equals ("RankingCompleted"))
{
return toRankingCompleted ();
}
if (name.equals ("AssessmentTemplate")) if (name.equals ("AssessmentTemplate"))
{ {
return toAssessmentTemplate (); return toAssessmentTemplate ();
...@@ -7437,6 +7606,8 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7437,6 +7606,8 @@ public abstract class BaseJob extends BaseBusinessClass
public PipeLine<From, AppProcessOption> toAppProcessOption () { return pipe(new ORMAttributePipe<Me, AppProcessOption>(FIELD_AppProcessOption)); } public PipeLine<From, AppProcessOption> toAppProcessOption () { return pipe(new ORMAttributePipe<Me, AppProcessOption>(FIELD_AppProcessOption)); }
public PipeLine<From, Boolean> toRankingCompleted () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_RankingCompleted)); }
public PipeLine<From, String> toJobTitle () { return pipe(new ORMAttributePipe<Me, String>(FIELD_JobTitle)); } public PipeLine<From, String> toJobTitle () { return pipe(new ORMAttributePipe<Me, String>(FIELD_JobTitle)); }
public PipeLine<From, String> toJobDescription () { return pipe(new ORMAttributePipe<Me, String>(FIELD_JobDescription)); } public PipeLine<From, String> toJobDescription () { return pipe(new ORMAttributePipe<Me, String>(FIELD_JobDescription)); }
...@@ -7586,6 +7757,11 @@ public abstract class BaseJob extends BaseBusinessClass ...@@ -7586,6 +7757,11 @@ public abstract class BaseJob extends BaseBusinessClass
return true; return true;
} }
if(CollectionUtils.equals(attribName, "RankingCompleted"))
{
return true;
}
return super.isTransientAttrib(attribName); return super.isTransientAttrib(attribName);
} }
......
...@@ -44,7 +44,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -44,7 +44,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public static final String FIELD_ApplicationStatus = "ApplicationStatus"; public static final String FIELD_ApplicationStatus = "ApplicationStatus";
public static final String FIELD_SubmittedDate = "SubmittedDate"; public static final String FIELD_SubmittedDate = "SubmittedDate";
public static final String FIELD_AppProcessOption = "AppProcessOption"; public static final String FIELD_AppProcessOption = "AppProcessOption";
public static final String FIELD_OverallSuitability = "OverallSuitability"; public static final String FIELD_OverallRank = "OverallRank";
public static final String FIELD_RoleFit = "RoleFit";
public static final String FIELD_RequirementFit = "RequirementFit";
public static final String FIELD_CultureFit = "CultureFit";
public static final String SINGLEREFERENCE_Candidate = "Candidate"; public static final String SINGLEREFERENCE_Candidate = "Candidate";
public static final String BACKREF_Candidate = ""; public static final String BACKREF_Candidate = "";
public static final String SINGLEREFERENCE_Job = "Job"; public static final String SINGLEREFERENCE_Job = "Job";
...@@ -62,7 +65,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -62,7 +65,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
private static final EnumeratedAttributeHelper<JobApplication, ApplicationStatus> HELPER_ApplicationStatus = new EnumeratedAttributeHelper<JobApplication, ApplicationStatus> (ApplicationStatus.FACTORY_ApplicationStatus); private static final EnumeratedAttributeHelper<JobApplication, ApplicationStatus> HELPER_ApplicationStatus = new EnumeratedAttributeHelper<JobApplication, ApplicationStatus> (ApplicationStatus.FACTORY_ApplicationStatus);
private static final DefaultAttributeHelper<JobApplication> HELPER_SubmittedDate = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<JobApplication> HELPER_SubmittedDate = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<JobApplication, AppProcessOption> HELPER_AppProcessOption = new EnumeratedAttributeHelper<JobApplication, AppProcessOption> (AppProcessOption.FACTORY_AppProcessOption); private static final EnumeratedAttributeHelper<JobApplication, AppProcessOption> HELPER_AppProcessOption = new EnumeratedAttributeHelper<JobApplication, AppProcessOption> (AppProcessOption.FACTORY_AppProcessOption);
private static final DefaultAttributeHelper<JobApplication> HELPER_OverallSuitability = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<JobApplication> HELPER_OverallRank = DefaultAttributeHelper.INSTANCE;
private static final BLOBAttributeHelper HELPER_RoleFit = BLOBAttributeHelper.INSTANCE;
private static final BLOBAttributeHelper HELPER_RequirementFit = BLOBAttributeHelper.INSTANCE;
private static final BLOBAttributeHelper HELPER_CultureFit = BLOBAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
...@@ -70,7 +76,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -70,7 +76,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
private ApplicationStatus _ApplicationStatus; private ApplicationStatus _ApplicationStatus;
private Date _SubmittedDate; private Date _SubmittedDate;
private AppProcessOption _AppProcessOption; private AppProcessOption _AppProcessOption;
private Integer _OverallSuitability; private Integer _OverallRank;
private Map _RoleFit;
private Map _RequirementFit;
private Map _CultureFit;
// Private attributes corresponding to single references // Private attributes corresponding to single references
...@@ -87,7 +96,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -87,7 +96,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_AppProcessOption_Validators; private static final AttributeValidator[] FIELD_AppProcessOption_Validators;
private static final AttributeValidator[] FIELD_OverallSuitability_Validators; private static final AttributeValidator[] FIELD_OverallRank_Validators;
private static final AttributeValidator[] FIELD_RoleFit_Validators;
private static final AttributeValidator[] FIELD_RequirementFit_Validators;
private static final AttributeValidator[] FIELD_CultureFit_Validators;
private static final AttributeValidator[] FIELD_CV_Validators; private static final AttributeValidator[] FIELD_CV_Validators;
private static final AttributeValidator[] FIELD_ApplicationStatus_Validators; private static final AttributeValidator[] FIELD_ApplicationStatus_Validators;
private static final AttributeValidator[] FIELD_SubmittedDate_Validators; private static final AttributeValidator[] FIELD_SubmittedDate_Validators;
...@@ -111,7 +123,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -111,7 +123,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
setupAssocMetaData_Candidate(); setupAssocMetaData_Candidate();
setupAssocMetaData_Job(); setupAssocMetaData_Job();
FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]); FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_OverallSuitability_Validators = (AttributeValidator[])setupAttribMetaData_OverallSuitability(validatorMapping).toArray (new AttributeValidator[0]); FIELD_OverallRank_Validators = (AttributeValidator[])setupAttribMetaData_OverallRank(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_RoleFit_Validators = (AttributeValidator[])setupAttribMetaData_RoleFit(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_RequirementFit_Validators = (AttributeValidator[])setupAttribMetaData_RequirementFit(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CultureFit_Validators = (AttributeValidator[])setupAttribMetaData_CultureFit(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_CV_Validators = (AttributeValidator[])setupAttribMetaData_CV(validatorMapping).toArray (new AttributeValidator[0]); FIELD_CV_Validators = (AttributeValidator[])setupAttribMetaData_CV(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ApplicationStatus_Validators = (AttributeValidator[])setupAttribMetaData_ApplicationStatus(validatorMapping).toArray (new AttributeValidator[0]); FIELD_ApplicationStatus_Validators = (AttributeValidator[])setupAttribMetaData_ApplicationStatus(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_SubmittedDate_Validators = (AttributeValidator[])setupAttribMetaData_SubmittedDate(validatorMapping).toArray (new AttributeValidator[0]); FIELD_SubmittedDate_Validators = (AttributeValidator[])setupAttribMetaData_SubmittedDate(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -194,18 +209,75 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -194,18 +209,75 @@ public abstract class BaseJobApplication extends BaseBusinessClass
} }
// Meta Info setup // Meta Info setup
private static List setupAttribMetaData_OverallSuitability(Map validatorMapping) private static List setupAttribMetaData_OverallRank(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
metaInfo.put ("name", "OverallSuitability"); metaInfo.put ("name", "OverallRank");
metaInfo.put ("type", "Integer"); metaInfo.put ("type", "Integer");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.OverallSuitability:", metaInfo); LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.OverallRank:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (FIELD_OverallSuitability, Collections.unmodifiableMap (metaInfo)); ATTRIBUTES_METADATA_JobApplication.put (FIELD_OverallRank, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "OverallSuitability", metaInfo, validatorMapping); List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "OverallRank", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.OverallSuitability:", validators); LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.OverallRank:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_RoleFit(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("attribHelper", "BLOBAttributeHelper");
metaInfo.put ("attribHelperInstance", "BLOBAttributeHelper.INSTANCE");
metaInfo.put ("name", "RoleFit");
metaInfo.put ("type", "Map");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.RoleFit:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (FIELD_RoleFit, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "RoleFit", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.RoleFit:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_RequirementFit(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("attribHelper", "BLOBAttributeHelper");
metaInfo.put ("attribHelperInstance", "BLOBAttributeHelper.INSTANCE");
metaInfo.put ("name", "RequirementFit");
metaInfo.put ("type", "Map");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.RequirementFit:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (FIELD_RequirementFit, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "RequirementFit", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.RequirementFit:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_CultureFit(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("attribHelper", "BLOBAttributeHelper");
metaInfo.put ("attribHelperInstance", "BLOBAttributeHelper.INSTANCE");
metaInfo.put ("name", "CultureFit");
metaInfo.put ("type", "Map");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.CultureFit:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (FIELD_CultureFit, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "CultureFit", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.CultureFit:", validators);
return validators; return validators;
} }
...@@ -302,7 +374,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -302,7 +374,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = (ApplicationStatus)(ApplicationStatus.DRAFT); _ApplicationStatus = (ApplicationStatus)(ApplicationStatus.DRAFT);
_SubmittedDate = (Date)(HELPER_SubmittedDate.initialise (_SubmittedDate)); _SubmittedDate = (Date)(HELPER_SubmittedDate.initialise (_SubmittedDate));
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.initialise (_AppProcessOption)); _AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.initialise (_AppProcessOption));
_OverallSuitability = (Integer)(HELPER_OverallSuitability.initialise (_OverallSuitability)); _OverallRank = (Integer)(HELPER_OverallRank.initialise (_OverallRank));
_RoleFit = (Map)(HELPER_RoleFit.initialise (_RoleFit));
_RequirementFit = (Map)(HELPER_RequirementFit.initialise (_RequirementFit));
_CultureFit = (Map)(HELPER_CultureFit.initialise (_CultureFit));
} }
...@@ -727,16 +802,310 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -727,16 +802,310 @@ public abstract class BaseJobApplication extends BaseBusinessClass
} }
/** /**
* Get the attribute OverallSuitability * Get the attribute OverallRank
*/
public Integer getOverallRank ()
{
assertValid();
Integer valToReturn = _OverallRank;
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
valToReturn = bhd.getOverallRank ((JobApplication)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 preOverallRankChange (Integer newOverallRank) 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 postOverallRankChange () throws FieldException
{
}
public FieldWriteability getWriteability_OverallRank ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute OverallRank. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setOverallRank (Integer newOverallRank) throws FieldException
{
boolean oldAndNewIdentical = HELPER_OverallRank.compare (_OverallRank, newOverallRank);
try
{
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
newOverallRank = bhd.setOverallRank ((JobApplication)this, newOverallRank);
oldAndNewIdentical = HELPER_OverallRank.compare (_OverallRank, newOverallRank);
}
if (FIELD_OverallRank_Validators.length > 0)
{
Object newOverallRankObj = HELPER_OverallRank.toObject (newOverallRank);
if (newOverallRankObj != null)
{
int loopMax = FIELD_OverallRank_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_OverallRank);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_OverallRank_Validators[v].checkAttribute (this, FIELD_OverallRank, metadata, newOverallRankObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_OverallRank () != FieldWriteability.FALSE, "Field OverallRank is not writeable");
preOverallRankChange (newOverallRank);
markFieldChange (FIELD_OverallRank);
_OverallRank = newOverallRank;
postFieldChange (FIELD_OverallRank);
postOverallRankChange ();
}
}
/**
* Get the attribute RoleFit
*/
public Map getRoleFit ()
{
assertValid();
Map valToReturn = _RoleFit;
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
valToReturn = bhd.getRoleFit ((JobApplication)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 preRoleFitChange (Map newRoleFit) 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 postRoleFitChange () throws FieldException
{
}
public FieldWriteability getWriteability_RoleFit ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute RoleFit. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setRoleFit (Map newRoleFit) throws FieldException
{
boolean oldAndNewIdentical = HELPER_RoleFit.compare (_RoleFit, newRoleFit);
try
{
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
newRoleFit = bhd.setRoleFit ((JobApplication)this, newRoleFit);
oldAndNewIdentical = HELPER_RoleFit.compare (_RoleFit, newRoleFit);
}
if (FIELD_RoleFit_Validators.length > 0)
{
Object newRoleFitObj = HELPER_RoleFit.toObject (newRoleFit);
if (newRoleFitObj != null)
{
int loopMax = FIELD_RoleFit_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_RoleFit);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_RoleFit_Validators[v].checkAttribute (this, FIELD_RoleFit, metadata, newRoleFitObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_RoleFit () != FieldWriteability.FALSE, "Field RoleFit is not writeable");
preRoleFitChange (newRoleFit);
markFieldChange (FIELD_RoleFit);
_RoleFit = newRoleFit;
postFieldChange (FIELD_RoleFit);
postRoleFitChange ();
}
}
/**
* Get the attribute RequirementFit
*/
public Map getRequirementFit ()
{
assertValid();
Map valToReturn = _RequirementFit;
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
valToReturn = bhd.getRequirementFit ((JobApplication)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 preRequirementFitChange (Map newRequirementFit) 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 postRequirementFitChange () throws FieldException
{
}
public FieldWriteability getWriteability_RequirementFit ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute RequirementFit. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setRequirementFit (Map newRequirementFit) throws FieldException
{
boolean oldAndNewIdentical = HELPER_RequirementFit.compare (_RequirementFit, newRequirementFit);
try
{
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
newRequirementFit = bhd.setRequirementFit ((JobApplication)this, newRequirementFit);
oldAndNewIdentical = HELPER_RequirementFit.compare (_RequirementFit, newRequirementFit);
}
if (FIELD_RequirementFit_Validators.length > 0)
{
Object newRequirementFitObj = HELPER_RequirementFit.toObject (newRequirementFit);
if (newRequirementFitObj != null)
{
int loopMax = FIELD_RequirementFit_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_RequirementFit);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_RequirementFit_Validators[v].checkAttribute (this, FIELD_RequirementFit, metadata, newRequirementFitObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_RequirementFit () != FieldWriteability.FALSE, "Field RequirementFit is not writeable");
preRequirementFitChange (newRequirementFit);
markFieldChange (FIELD_RequirementFit);
_RequirementFit = newRequirementFit;
postFieldChange (FIELD_RequirementFit);
postRequirementFitChange ();
}
}
/**
* Get the attribute CultureFit
*/ */
public Integer getOverallSuitability () public Map getCultureFit ()
{ {
assertValid(); assertValid();
Integer valToReturn = _OverallSuitability; Map valToReturn = _CultureFit;
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators) for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{ {
valToReturn = bhd.getOverallSuitability ((JobApplication)this, valToReturn); valToReturn = bhd.getCultureFit ((JobApplication)this, valToReturn);
} }
return valToReturn; return valToReturn;
...@@ -748,7 +1117,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -748,7 +1117,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
* Called prior to the attribute changing. Subclasses need not call super. If a field exception * 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. * is thrown, the attribute change will fail. The new value is different to the old value.
*/ */
protected void preOverallSuitabilityChange (Integer newOverallSuitability) throws FieldException protected void preCultureFitChange (Map newCultureFit) throws FieldException
{ {
} }
...@@ -758,46 +1127,46 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -758,46 +1127,46 @@ public abstract class BaseJobApplication extends BaseBusinessClass
* If a field exception is thrown, the value is still changed, however it * If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back * may lead to the TX being rolled back
*/ */
protected void postOverallSuitabilityChange () throws FieldException protected void postCultureFitChange () throws FieldException
{ {
} }
public FieldWriteability getWriteability_OverallSuitability () public FieldWriteability getWriteability_CultureFit ()
{ {
return getFieldWritabilityUtil (FieldWriteability.TRUE); return getFieldWritabilityUtil (FieldWriteability.TRUE);
} }
/** /**
* Set the attribute OverallSuitability. Checks to ensure a new value * Set the attribute CultureFit. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute. * has been supplied. If so, marks the field as altered and sets the attribute.
*/ */
public void setOverallSuitability (Integer newOverallSuitability) throws FieldException public void setCultureFit (Map newCultureFit) throws FieldException
{ {
boolean oldAndNewIdentical = HELPER_OverallSuitability.compare (_OverallSuitability, newOverallSuitability); boolean oldAndNewIdentical = HELPER_CultureFit.compare (_CultureFit, newCultureFit);
try try
{ {
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators) for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{ {
newOverallSuitability = bhd.setOverallSuitability ((JobApplication)this, newOverallSuitability); newCultureFit = bhd.setCultureFit ((JobApplication)this, newCultureFit);
oldAndNewIdentical = HELPER_OverallSuitability.compare (_OverallSuitability, newOverallSuitability); oldAndNewIdentical = HELPER_CultureFit.compare (_CultureFit, newCultureFit);
} }
if (FIELD_OverallSuitability_Validators.length > 0) if (FIELD_CultureFit_Validators.length > 0)
{ {
Object newOverallSuitabilityObj = HELPER_OverallSuitability.toObject (newOverallSuitability); Object newCultureFitObj = HELPER_CultureFit.toObject (newCultureFit);
if (newOverallSuitabilityObj != null) if (newCultureFitObj != null)
{ {
int loopMax = FIELD_OverallSuitability_Validators.length; int loopMax = FIELD_CultureFit_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_OverallSuitability); Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_CultureFit);
for (int v = 0 ; v < loopMax ; ++v) for (int v = 0 ; v < loopMax ; ++v)
{ {
FIELD_OverallSuitability_Validators[v].checkAttribute (this, FIELD_OverallSuitability, metadata, newOverallSuitabilityObj); FIELD_CultureFit_Validators[v].checkAttribute (this, FIELD_CultureFit, metadata, newCultureFitObj);
} }
} }
} }
...@@ -815,12 +1184,12 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -815,12 +1184,12 @@ public abstract class BaseJobApplication extends BaseBusinessClass
if (!oldAndNewIdentical) if (!oldAndNewIdentical)
{ {
assertValid(); assertValid();
Debug.assertion (getWriteability_OverallSuitability () != FieldWriteability.FALSE, "Field OverallSuitability is not writeable"); Debug.assertion (getWriteability_CultureFit () != FieldWriteability.FALSE, "Field CultureFit is not writeable");
preOverallSuitabilityChange (newOverallSuitability); preCultureFitChange (newCultureFit);
markFieldChange (FIELD_OverallSuitability); markFieldChange (FIELD_CultureFit);
_OverallSuitability = newOverallSuitability; _CultureFit = newCultureFit;
postFieldChange (FIELD_OverallSuitability); postFieldChange (FIELD_CultureFit);
postOverallSuitabilityChange (); postCultureFitChange ();
} }
} }
...@@ -1573,7 +1942,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1573,7 +1942,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = sourceJobApplication._ApplicationStatus; _ApplicationStatus = sourceJobApplication._ApplicationStatus;
_SubmittedDate = sourceJobApplication._SubmittedDate; _SubmittedDate = sourceJobApplication._SubmittedDate;
_AppProcessOption = sourceJobApplication._AppProcessOption; _AppProcessOption = sourceJobApplication._AppProcessOption;
_OverallSuitability = sourceJobApplication._OverallSuitability; _OverallRank = sourceJobApplication._OverallRank;
_RoleFit = sourceJobApplication._RoleFit;
_RequirementFit = sourceJobApplication._RequirementFit;
_CultureFit = sourceJobApplication._CultureFit;
} }
} }
...@@ -1637,7 +2009,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1637,7 +2009,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = (ApplicationStatus)(HELPER_ApplicationStatus.readExternal (_ApplicationStatus, vals.get(FIELD_ApplicationStatus))); // _ApplicationStatus = (ApplicationStatus)(HELPER_ApplicationStatus.readExternal (_ApplicationStatus, vals.get(FIELD_ApplicationStatus))); //
_SubmittedDate = (Date)(HELPER_SubmittedDate.readExternal (_SubmittedDate, vals.get(FIELD_SubmittedDate))); // _SubmittedDate = (Date)(HELPER_SubmittedDate.readExternal (_SubmittedDate, vals.get(FIELD_SubmittedDate))); //
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.readExternal (_AppProcessOption, vals.get(FIELD_AppProcessOption))); // _AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.readExternal (_AppProcessOption, vals.get(FIELD_AppProcessOption))); //
_OverallSuitability = (Integer)(HELPER_OverallSuitability.readExternal (_OverallSuitability, vals.get(FIELD_OverallSuitability))); // _OverallRank = (Integer)(HELPER_OverallRank.readExternal (_OverallRank, vals.get(FIELD_OverallRank))); //
_RoleFit = (Map)(HELPER_RoleFit.readExternal (_RoleFit, vals.get(FIELD_RoleFit))); //
_RequirementFit = (Map)(HELPER_RequirementFit.readExternal (_RequirementFit, vals.get(FIELD_RequirementFit))); //
_CultureFit = (Map)(HELPER_CultureFit.readExternal (_CultureFit, vals.get(FIELD_CultureFit))); //
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate)); _Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job)); _Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_AssessmentCriteriaAnswers.readExternalData(vals.get(MULTIPLEREFERENCE_AssessmentCriteriaAnswers)); _AssessmentCriteriaAnswers.readExternalData(vals.get(MULTIPLEREFERENCE_AssessmentCriteriaAnswers));
...@@ -1656,7 +2031,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1656,7 +2031,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
vals.put (FIELD_ApplicationStatus, HELPER_ApplicationStatus.writeExternal (_ApplicationStatus)); vals.put (FIELD_ApplicationStatus, HELPER_ApplicationStatus.writeExternal (_ApplicationStatus));
vals.put (FIELD_SubmittedDate, HELPER_SubmittedDate.writeExternal (_SubmittedDate)); vals.put (FIELD_SubmittedDate, HELPER_SubmittedDate.writeExternal (_SubmittedDate));
vals.put (FIELD_AppProcessOption, HELPER_AppProcessOption.writeExternal (_AppProcessOption)); vals.put (FIELD_AppProcessOption, HELPER_AppProcessOption.writeExternal (_AppProcessOption));
vals.put (FIELD_OverallSuitability, HELPER_OverallSuitability.writeExternal (_OverallSuitability)); vals.put (FIELD_OverallRank, HELPER_OverallRank.writeExternal (_OverallRank));
vals.put (FIELD_RoleFit, HELPER_RoleFit.writeExternal (_RoleFit));
vals.put (FIELD_RequirementFit, HELPER_RequirementFit.writeExternal (_RequirementFit));
vals.put (FIELD_CultureFit, HELPER_CultureFit.writeExternal (_CultureFit));
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData()); vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData()); vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (MULTIPLEREFERENCE_AssessmentCriteriaAnswers, _AssessmentCriteriaAnswers.writeExternalData()); vals.put (MULTIPLEREFERENCE_AssessmentCriteriaAnswers, _AssessmentCriteriaAnswers.writeExternalData());
...@@ -1703,7 +2081,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1703,7 +2081,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_AppProcessOption, HELPER_AppProcessOption.toObject(getAppProcessOption())); visitor.visitField(this, FIELD_AppProcessOption, HELPER_AppProcessOption.toObject(getAppProcessOption()));
visitor.visitField(this, FIELD_OverallSuitability, HELPER_OverallSuitability.toObject(getOverallSuitability())); visitor.visitField(this, FIELD_OverallRank, HELPER_OverallRank.toObject(getOverallRank()));
visitor.visitField(this, FIELD_RoleFit, HELPER_RoleFit.toObject(getRoleFit()));
visitor.visitField(this, FIELD_RequirementFit, HELPER_RequirementFit.toObject(getRequirementFit()));
visitor.visitField(this, FIELD_CultureFit, HELPER_CultureFit.toObject(getCultureFit()));
} }
...@@ -1871,6 +2252,8 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1871,6 +2252,8 @@ public abstract class BaseJobApplication extends BaseBusinessClass
.search (transaction); .search (transaction);
} }
public abstract boolean filterCandidateJob(Candidate Candidate, Job Job) throws StorageException;
public static SearchCandidateJob SearchByCandidateJob () { return new SearchCandidateJob (); } public static SearchCandidateJob SearchByCandidateJob () { return new SearchCandidateJob (); }
public static class SearchCandidateJob extends SearchObject<JobApplication> public static class SearchCandidateJob extends SearchObject<JobApplication>
...@@ -1939,7 +2322,9 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1939,7 +2322,9 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public JobApplication search (ObjectTransaction transaction) throws StorageException public JobApplication search (ObjectTransaction transaction) throws StorageException
{ {
Candidate Candidate = (Candidate)criteria.get ("Candidate");
Job Job = (Job)criteria.get ("Job");
BaseBusinessClass[] results = super.search (transaction, REFERENCE_JobApplication, SEARCH_CandidateJob, criteria); BaseBusinessClass[] results = super.search (transaction, REFERENCE_JobApplication, SEARCH_CandidateJob, criteria);
Set<JobApplication> typedResults = new LinkedHashSet <JobApplication> (); Set<JobApplication> typedResults = new LinkedHashSet <JobApplication> ();
...@@ -1947,9 +2332,31 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1947,9 +2332,31 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
JobApplication aResult = (JobApplication)bbcResult; JobApplication aResult = (JobApplication)bbcResult;
// Check in case in memory objects should be excluded
if (!aResult.filterCandidateJob(Candidate, Job) || !filterAndsInMemory (aResult))
{
continue;
}
typedResults.add (aResult); typedResults.add (aResult);
} }
// Check in memory objects for matches
for (BaseBusinessClass bbcInMemory : transaction.getObjectsToStore ())
{
if (bbcInMemory instanceof JobApplication)
{
JobApplication aInMemory = (JobApplication)bbcInMemory;
if (!aInMemory.filterCandidateJob(Candidate, Job) || !filterAndsInMemory (aInMemory))
{
continue;
}
typedResults.add (aInMemory);
}
}
return (JobApplication)singletonResult(ObjstoreUtils.removeDeleted(transaction, typedResults).toArray(new BaseBusinessClass[0]), "JobApplication", ""); return (JobApplication)singletonResult(ObjstoreUtils.removeDeleted(transaction, typedResults).toArray(new BaseBusinessClass[0]), "JobApplication", "");
} }
...@@ -1988,9 +2395,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -1988,9 +2395,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return HELPER_AppProcessOption.toObject (getAppProcessOption ()); return HELPER_AppProcessOption.toObject (getAppProcessOption ());
} }
else if (attribName.equals (FIELD_OverallSuitability)) else if (attribName.equals (FIELD_OverallRank))
{
return HELPER_OverallRank.toObject (getOverallRank ());
}
else if (attribName.equals (FIELD_RoleFit))
{ {
return HELPER_OverallSuitability.toObject (getOverallSuitability ()); return HELPER_RoleFit.toObject (getRoleFit ());
}
else if (attribName.equals (FIELD_RequirementFit))
{
return HELPER_RequirementFit.toObject (getRequirementFit ());
}
else if (attribName.equals (FIELD_CultureFit))
{
return HELPER_CultureFit.toObject (getCultureFit ());
} }
else else
{ {
...@@ -2021,9 +2440,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2021,9 +2440,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return HELPER_AppProcessOption; return HELPER_AppProcessOption;
} }
else if (attribName.equals (FIELD_OverallSuitability)) else if (attribName.equals (FIELD_OverallRank))
{
return HELPER_OverallRank;
}
else if (attribName.equals (FIELD_RoleFit))
{ {
return HELPER_OverallSuitability; return HELPER_RoleFit;
}
else if (attribName.equals (FIELD_RequirementFit))
{
return HELPER_RequirementFit;
}
else if (attribName.equals (FIELD_CultureFit))
{
return HELPER_CultureFit;
} }
else else
{ {
...@@ -2054,9 +2485,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2054,9 +2485,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
setAppProcessOption ((AppProcessOption)(HELPER_AppProcessOption.fromObject (_AppProcessOption, attribValue))); setAppProcessOption ((AppProcessOption)(HELPER_AppProcessOption.fromObject (_AppProcessOption, attribValue)));
} }
else if (attribName.equals (FIELD_OverallSuitability)) else if (attribName.equals (FIELD_OverallRank))
{
setOverallRank ((Integer)(HELPER_OverallRank.fromObject (_OverallRank, attribValue)));
}
else if (attribName.equals (FIELD_RoleFit))
{ {
setOverallSuitability ((Integer)(HELPER_OverallSuitability.fromObject (_OverallSuitability, attribValue))); setRoleFit ((Map)(HELPER_RoleFit.fromObject (_RoleFit, attribValue)));
}
else if (attribName.equals (FIELD_RequirementFit))
{
setRequirementFit ((Map)(HELPER_RequirementFit.fromObject (_RequirementFit, attribValue)));
}
else if (attribName.equals (FIELD_CultureFit))
{
setCultureFit ((Map)(HELPER_CultureFit.fromObject (_CultureFit, attribValue)));
} }
else else
{ {
...@@ -2106,9 +2549,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2106,9 +2549,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return getWriteability_AppProcessOption (); return getWriteability_AppProcessOption ();
} }
else if (fieldName.equals (FIELD_OverallSuitability)) else if (fieldName.equals (FIELD_OverallRank))
{
return getWriteability_OverallRank ();
}
else if (fieldName.equals (FIELD_RoleFit))
{ {
return getWriteability_OverallSuitability (); return getWriteability_RoleFit ();
}
else if (fieldName.equals (FIELD_RequirementFit))
{
return getWriteability_RequirementFit ();
}
else if (fieldName.equals (FIELD_CultureFit))
{
return getWriteability_CultureFit ();
} }
else else
{ {
...@@ -2140,9 +2595,24 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2140,9 +2595,24 @@ public abstract class BaseJobApplication extends BaseBusinessClass
fields.add (FIELD_AppProcessOption); fields.add (FIELD_AppProcessOption);
} }
if (getWriteability_OverallSuitability () != FieldWriteability.TRUE) if (getWriteability_OverallRank () != FieldWriteability.TRUE)
{
fields.add (FIELD_OverallRank);
}
if (getWriteability_RoleFit () != FieldWriteability.TRUE)
{
fields.add (FIELD_RoleFit);
}
if (getWriteability_RequirementFit () != FieldWriteability.TRUE)
{
fields.add (FIELD_RequirementFit);
}
if (getWriteability_CultureFit () != FieldWriteability.TRUE)
{ {
fields.add (FIELD_OverallSuitability); fields.add (FIELD_CultureFit);
} }
...@@ -2158,7 +2628,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2158,7 +2628,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
result.add(HELPER_ApplicationStatus.getAttribObject (getClass (), _ApplicationStatus, true, FIELD_ApplicationStatus)); result.add(HELPER_ApplicationStatus.getAttribObject (getClass (), _ApplicationStatus, true, FIELD_ApplicationStatus));
result.add(HELPER_SubmittedDate.getAttribObject (getClass (), _SubmittedDate, false, FIELD_SubmittedDate)); result.add(HELPER_SubmittedDate.getAttribObject (getClass (), _SubmittedDate, false, FIELD_SubmittedDate));
result.add(HELPER_AppProcessOption.getAttribObject (getClass (), _AppProcessOption, false, FIELD_AppProcessOption)); result.add(HELPER_AppProcessOption.getAttribObject (getClass (), _AppProcessOption, false, FIELD_AppProcessOption));
result.add(HELPER_OverallSuitability.getAttribObject (getClass (), _OverallSuitability, false, FIELD_OverallSuitability)); result.add(HELPER_OverallRank.getAttribObject (getClass (), _OverallRank, false, FIELD_OverallRank));
result.add(HELPER_RoleFit.getAttribObject (getClass (), _RoleFit, false, FIELD_RoleFit));
result.add(HELPER_RequirementFit.getAttribObject (getClass (), _RequirementFit, false, FIELD_RequirementFit));
result.add(HELPER_CultureFit.getAttribObject (getClass (), _CultureFit, false, FIELD_CultureFit));
return result; return result;
} }
...@@ -2300,21 +2773,75 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2300,21 +2773,75 @@ public abstract class BaseJobApplication extends BaseBusinessClass
} }
/** /**
* Get the attribute OverallSuitability * Get the attribute OverallRank
*/ */
public Integer getOverallSuitability (JobApplication obj, Integer original) public Integer getOverallRank (JobApplication obj, Integer original)
{ {
return original; return original;
} }
/** /**
* Change the value set for attribute OverallSuitability. * Change the value set for attribute OverallRank.
* May modify the field beforehand * May modify the field beforehand
* Occurs before validation. * Occurs before validation.
*/ */
public Integer setOverallSuitability (JobApplication obj, Integer newOverallSuitability) throws FieldException public Integer setOverallRank (JobApplication obj, Integer newOverallRank) throws FieldException
{ {
return newOverallSuitability; return newOverallRank;
}
/**
* Get the attribute RoleFit
*/
public Map getRoleFit (JobApplication obj, Map original)
{
return original;
}
/**
* Change the value set for attribute RoleFit.
* May modify the field beforehand
* Occurs before validation.
*/
public Map setRoleFit (JobApplication obj, Map newRoleFit) throws FieldException
{
return newRoleFit;
}
/**
* Get the attribute RequirementFit
*/
public Map getRequirementFit (JobApplication obj, Map original)
{
return original;
}
/**
* Change the value set for attribute RequirementFit.
* May modify the field beforehand
* Occurs before validation.
*/
public Map setRequirementFit (JobApplication obj, Map newRequirementFit) throws FieldException
{
return newRequirementFit;
}
/**
* Get the attribute CultureFit
*/
public Map getCultureFit (JobApplication obj, Map original)
{
return original;
}
/**
* Change the value set for attribute CultureFit.
* May modify the field beforehand
* Occurs before validation.
*/
public Map setCultureFit (JobApplication obj, Map newCultureFit) throws FieldException
{
return newCultureFit;
} }
} }
...@@ -2377,9 +2904,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2377,9 +2904,21 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{ {
return toAppProcessOption (); return toAppProcessOption ();
} }
if (name.equals ("OverallSuitability")) if (name.equals ("OverallRank"))
{
return toOverallRank ();
}
if (name.equals ("RoleFit"))
{ {
return toOverallSuitability (); return toRoleFit ();
}
if (name.equals ("RequirementFit"))
{
return toRequirementFit ();
}
if (name.equals ("CultureFit"))
{
return toCultureFit ();
} }
if (name.equals ("CV")) if (name.equals ("CV"))
{ {
...@@ -2409,7 +2948,13 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2409,7 +2948,13 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public PipeLine<From, AppProcessOption> toAppProcessOption () { return pipe(new ORMAttributePipe<Me, AppProcessOption>(FIELD_AppProcessOption)); } public PipeLine<From, AppProcessOption> toAppProcessOption () { return pipe(new ORMAttributePipe<Me, AppProcessOption>(FIELD_AppProcessOption)); }
public PipeLine<From, Integer> toOverallSuitability () { return pipe(new ORMAttributePipe<Me, Integer>(FIELD_OverallSuitability)); } public PipeLine<From, Integer> toOverallRank () { return pipe(new ORMAttributePipe<Me, Integer>(FIELD_OverallRank)); }
public PipeLine<From, Map> toRoleFit () { return pipe(new ORMAttributePipe<Me, Map>(FIELD_RoleFit)); }
public PipeLine<From, Map> toRequirementFit () { return pipe(new ORMAttributePipe<Me, Map>(FIELD_RequirementFit)); }
public PipeLine<From, Map> toCultureFit () { return pipe(new ORMAttributePipe<Me, Map>(FIELD_CultureFit)); }
public PipeLine<From, BinaryContent> toCV () { return pipe(new ORMAttributePipe<Me, BinaryContent>(FIELD_CV)); } public PipeLine<From, BinaryContent> toCV () { return pipe(new ORMAttributePipe<Me, BinaryContent>(FIELD_CV)); }
...@@ -2445,7 +2990,22 @@ public abstract class BaseJobApplication extends BaseBusinessClass ...@@ -2445,7 +2990,22 @@ public abstract class BaseJobApplication extends BaseBusinessClass
return true; return true;
} }
if(CollectionUtils.equals(attribName, "OverallSuitability")) if(CollectionUtils.equals(attribName, "OverallRank"))
{
return true;
}
if(CollectionUtils.equals(attribName, "RoleFit"))
{
return true;
}
if(CollectionUtils.equals(attribName, "RequirementFit"))
{
return true;
}
if(CollectionUtils.equals(attribName, "CultureFit"))
{ {
return true; return true;
} }
......
...@@ -112,7 +112,7 @@ public class Candidate extends BaseCandidate ...@@ -112,7 +112,7 @@ public class Candidate extends BaseCandidate
public boolean assessmentCompleted(Job job) //role public boolean assessmentCompleted(Job job) //role
{ {
int allAnswersCount = job.getAllLeftQuestions(Arrays.asList(Question.searchAll(getTransaction()))).size(); int allAnswersCount = job.getAllQuestions().size();
if(allAnswersCount > 0) if(allAnswersCount > 0)
{ {
......
...@@ -14,7 +14,7 @@ import oneit.utils.filter.CollectionFilter; ...@@ -14,7 +14,7 @@ import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.types.*; import performa.orm.types.*;
import performa.utils.Utils; import performa.utils.*;
public class Job extends BaseJob public class Job extends BaseJob
...@@ -101,28 +101,55 @@ public class Job extends BaseJob ...@@ -101,28 +101,55 @@ public class Job extends BaseJob
return super.getWriteability_JobStatus(); return super.getWriteability_JobStatus();
} }
public void calculateRoleFitForRanking() throws FieldException
public Boolean jobDetailsCompleted()
{
return getJobTitle() != null && getJobDescription() != null;
}
public Boolean assessmentCompleted()
{ {
return Boolean.TRUE; if(!isTrue(getRankingCompleted()))
{
//Preloading data
pipelineJob().toJobApplications().toCandidate().toTestAnalysises().toCandidateClassScores().uniqueVals();
pipelineJob().toJobApplications().toCandidate().toCultureCriteriaAnswers().toSelectedQuestion().toNarratives().toCultureElementRating().uniqueVals();
pipelineJob().toJobApplications().toCandidate().toCultureCriteriaAnswers().toCultureElement().uniqueVals();
pipelineJob().toLevel().toLevelClassCriterias().toFactorClass().uniqueVals();
pipelineJob().toLevel().toClassNormalisations().uniqueVals();
pipelineJob().toLevel().toLevelNormalisations().uniqueVals();
List<JobApplication> sortedApplications = ObjstoreUtils.sort(getSubmittedApplications(),
new ObjectTransform[]{JobApplicationRoleFitTransform.INSTANCE, JobApplicationCultureFitTransform.INSTANCE},
new Comparator[]{CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR), CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR)});
for(JobApplication jobApplication : getSubmittedApplications())
{
jobApplication.setOverallRank(sortedApplications.indexOf(jobApplication) + 1);
}
}
setRankingCompleted(true);
} }
public JobApplication getTopper()
public Boolean cultureCompleted()
{ {
return Boolean.FALSE; try
{
calculateRoleFitForRanking();
}
catch(FieldException ex)
{
return null;
}
List<JobApplication> sortedApplications = ObjstoreUtils.sort(getSubmittedApplications(),
new ObjectTransform[]{JobApplicationRoleFitTransform.INSTANCE},
new Comparator[]{CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR)});
if(sortedApplications.size() > 0)
{
return sortedApplications.get(0);
}
return null;
} }
public Boolean jobDetailsCompleted()
public Boolean jobMatchCompleted()
{ {
return Boolean.TRUE; return getJobTitle() != null && getJobDescription() != null;
} }
...@@ -139,6 +166,15 @@ public class Job extends BaseJob ...@@ -139,6 +166,15 @@ public class Job extends BaseJob
return getAssessmentCriteraByType(criteria).size(); return getAssessmentCriteraByType(criteria).size();
} }
public List<Question> getAllQuestions()
{
return Arrays.asList(Question.searchAll(getTransaction()));
}
public List<Question> getAllLeftQuestions()
{
return getAllLeftQuestions(getAllQuestions());
}
//to get only left Questions //to get only left Questions
public List<Question> getAllLeftQuestions(List<Question> totalQuestions) public List<Question> getAllLeftQuestions(List<Question> totalQuestions)
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
<TRANSIENT name="AssessmentTemplateName" type="String"/> <TRANSIENT name="AssessmentTemplateName" type="String"/>
<TRANSIENT name="CultureTemplateName" type="String"/> <TRANSIENT name="CultureTemplateName" type="String"/>
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/> <TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="RankingCompleted" type="Boolean" />
<TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" /> <TRANSIENTSINGLE name="AssessmentTemplate" type="AssessmentCriteriaTemplate" />
<TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" /> <TRANSIENTSINGLE name="CultureTemplate" type="CultureCriteriaTemplate" />
......
package performa.orm; package performa.orm;
import java.util.*; import java.util.*;
import oneit.logging.LoggingArea; import oneit.logging.*;
import oneit.objstore.StorageException; import oneit.objstore.*;
import oneit.objstore.rdbms.filters.EqualsFilter; import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.objstore.rdbms.filters.IsNotNullFilter; import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.objstore.rdbms.filters.NotEqualsFilter; import oneit.objstore.rdbms.filters.NotEqualsFilter;
import oneit.utils.*;
import oneit.utils.filter.CollectionFilter; import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.math.NullArith; import oneit.utils.math.NullArith;
...@@ -36,7 +37,22 @@ public class JobApplication extends BaseJobApplication ...@@ -36,7 +37,22 @@ public class JobApplication extends BaseJobApplication
return jobApplication; return jobApplication;
} }
@Override
public void validate(ValidationContext context)
{
try
{
//Ideally should be managed with uniqueGroup, but uniqueGroup doesnt work without atleast 1 attribute
searchCandidateJob(getTransaction(), getCandidate(), getJob()); //It will throw RuntimeException when more than 1 record found.
}
catch(RuntimeException ex)
{
context.check(false, this, SINGLEREFERENCE_Job, "alreadyApplied");
}
super.validate(context);
}
public boolean createAssessmentCriteriaObjects() throws FieldException public boolean createAssessmentCriteriaObjects() throws FieldException
{ {
...@@ -220,33 +236,99 @@ public class JobApplication extends BaseJobApplication ...@@ -220,33 +236,99 @@ public class JobApplication extends BaseJobApplication
{ {
return getJob() != null && isTrue(getJob().getIncludeAssessmentCriteria()); return getJob() != null && isTrue(getJob().getIncludeAssessmentCriteria());
} }
// TODO: Fix these hard coded values
@Override @Override
public Integer getOverallSuitability() public Map getRoleFit()
{ {
return 1; if(super.getRoleFit() == null && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
try
{
setRoleFit(AnalysisEngine.getRoleFitSuitability(getCandidate(), getJob().getLevel()));
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting RoleFit for " + this);
}
}
return super.getRoleFit();
} }
@Override
public Double getJobMatchPercentage() //ROLE public Map getCultureFit()
{ {
return AnalysisEngine.getRoleFitSuitability(getCandidate(), getJob().getLevel()).get(null); if(super.getCultureFit() == null && getCandidate() != null && getJob() != null && getJob().getLevel() != null)
{
try
{
setCultureFit(AnalysisEngine.getCultureFit(getCandidate().getCultureCriteriaAnswersSet(), getJob()));
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting CultureFit for " + this);
}
}
return super.getCultureFit();
}
@Override
public Map getRequirementFit()
{
if(super.getRequirementFit() == null)
{
try
{
setRequirementFit(AnalysisEngine.getRequirementFit(getAssessmentCriteriaAnswersSet()));
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting RequirementFit for " + this);
}
}
return super.getRequirementFit();
}
@Override
public Integer getOverallRank()
{
if(getJob() != null)
{
try
{
getJob().calculateRoleFitForRanking();
}
catch (FieldException ex)
{
LogMgr.log(LOG, LogLevel.PROCESSING1, ex, "Error occured when setting OverallRank for " + this);
}
}
return super.getOverallRank();
} }
public Double getRoleFitScore()
public int getCulturePercentage()
{ {
return AnalysisEngine.getCultureFit(getCandidate().getCultureCriteriaAnswersSet(), getJob()).get(null).intValue(); return getRoleFit() != null ? (Double)getRoleFit().get(null) : 0d;
} }
public Long getCultureFitScore()
{
return getCultureFit() != null ? (Long) getCultureFit().get(null) : 0;
}
public int getCriteriaPercentage () //REQ public Long getRequirementFitScore()
{ {
return AnalysisEngine.getRequirementFit(getAssessmentCriteriaAnswersSet()).get(null).intValue(); return getRequirementFit() != null ? (Long) getRequirementFit().get(null) : 0;
} }
//This will return relative percentage considering topper as 100%
public Double getRoleFitPercentage()
{
JobApplication jobTopper = getJob() != null ? getJob().getTopper() : null;
Double myScore = getRoleFitScore();
Double topScore = jobTopper.getRoleFitScore();
return NullArith.round(NullArith.divide(NullArith.multiply(myScore, 100), topScore), 2);
}
public List<AppProcessOption> getValidProcessOptions() public List<AppProcessOption> getValidProcessOptions()
{ {
...@@ -323,7 +405,7 @@ public class JobApplication extends BaseJobApplication ...@@ -323,7 +405,7 @@ public class JobApplication extends BaseJobApplication
int remainingTime = 0; int remainingTime = 0;
//REQ //REQ
if(getJob()!=null && getJob().getIncludeAssessmentCriteria()==Boolean.TRUE) if(getJob()!=null && isTrue(getJob().getIncludeAssessmentCriteria()))
{ {
if(!selectionCompleted()) if(!selectionCompleted())
{ {
...@@ -359,7 +441,7 @@ public class JobApplication extends BaseJobApplication ...@@ -359,7 +441,7 @@ public class JobApplication extends BaseJobApplication
} }
else //partially completed test for role else //partially completed test for role
{ {
int allAnswersCount = getJob().getAllLeftQuestions(Arrays.asList(Question.searchAll(getTransaction()))).size(); int allAnswersCount = getJob().getAllQuestions().size();
if(allAnswersCount > 0) if(allAnswersCount > 0)
{ {
...@@ -374,7 +456,12 @@ public class JobApplication extends BaseJobApplication ...@@ -374,7 +456,12 @@ public class JobApplication extends BaseJobApplication
} }
} }
} }
return remainingTime; return remainingTime;
} }
@Override
public boolean filterCandidateJob(Candidate candidate, Job job) throws StorageException
{
return (CollectionUtils.equals(candidate, getCandidate()) && CollectionUtils.equals(job, getJob()));
}
} }
\ No newline at end of file
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
<MULTIPLEREFERENCE name="AssessmentCriteriaAnswers" type="AssessmentCriteriaAnswer" backreferenceName="JobApplication" /> <MULTIPLEREFERENCE name="AssessmentCriteriaAnswers" type="AssessmentCriteriaAnswer" backreferenceName="JobApplication" />
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/> <TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TRANSIENT name="OverallSuitability" type="Integer"/> <TRANSIENT name="OverallRank" type="Integer" />
<TRANSIENT name="RoleFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="RequirementFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TRANSIENT name="CultureFit" type="Map" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE"/>
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
...@@ -23,7 +26,7 @@ ...@@ -23,7 +26,7 @@
<SEARCH type="All" paramFilter="tl_job_application.object_id is not null" orderBy="tl_job_application.object_id" /> <SEARCH type="All" paramFilter="tl_job_application.object_id is not null" orderBy="tl_job_application.object_id" />
<SEARCH type="CandidateJob" paramFilter="tl_job_application.object_id is not null" singleton="TRUE"> <SEARCH type="CandidateJob" paramFilter="tl_job_application.object_id is not null" singleton="TRUE" checkTXObjects="TRUE">
<PARAM name="Candidate" type="Candidate" transform="Candidate.getObjectID()" paramFilter="candidate_id = ${Candidate} " /> <PARAM name="Candidate" type="Candidate" transform="Candidate.getObjectID()" paramFilter="candidate_id = ${Candidate} " />
<PARAM name="Job" type="Job" transform="Job.getObjectID()" paramFilter="job_id = ${Job}" /> <PARAM name="Job" type="Job" transform="Job.getObjectID()" paramFilter="job_id = ${Job}" />
</SEARCH> </SEARCH>
......
package performa.utils;
import oneit.utils.ObjectTransform;
import performa.orm.JobApplication;
/**
*
* @author Harsh
*/
public class JobApplicationCultureFitTransform implements ObjectTransform<JobApplication, Long>
{
public static final JobApplicationCultureFitTransform INSTANCE = new JobApplicationCultureFitTransform();
@Override
public Long transform(JobApplication original)
{
if(original == null)
{
return null;
}
return original.getCultureFitScore();
}
}
\ No newline at end of file
package performa.utils;
import oneit.utils.ObjectTransform;
import performa.orm.JobApplication;
/**
*
* @author Harsh
*/
public class JobApplicationRoleFitTransform implements ObjectTransform<JobApplication, Double>
{
public static final JobApplicationRoleFitTransform INSTANCE = new JobApplicationRoleFitTransform();
@Override
public Double transform(JobApplication original)
{
if(original == null)
{
return null;
}
return original.getRoleFitScore();
}
}
\ No newline at end of file
...@@ -3,6 +3,7 @@ package performa.utils; ...@@ -3,6 +3,7 @@ package performa.utils;
import java.util.*; import java.util.*;
import javax.activation.DataSource; import javax.activation.DataSource;
import javax.servlet.http.*; import javax.servlet.http.*;
import oneit.appservices.config.ConfigMgr;
import oneit.email.ConfigurableArticleTemplateEmailer; import oneit.email.ConfigurableArticleTemplateEmailer;
import oneit.email.ConfigurableEmailerException; import oneit.email.ConfigurableEmailerException;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
...@@ -56,7 +57,8 @@ public class Utils ...@@ -56,7 +57,8 @@ public class Utils
public static final String LEVEL_SALES = "Sales"; public static final String LEVEL_SALES = "Sales";
public static final String LEVEL_MANAGEMENT = "Management"; public static final String LEVEL_MANAGEMENT = "Management";
public static final String LEVEL_EXECUTIVE = "Executive"; public static final String LEVEL_EXECUTIVE = "Executive";
public static final String HEAP_ANALYSIS_ID = ConfigMgr.getKeyfileString("heap.analysis.id", "3411110378");
public static Role getRole(String role, ObjectTransaction transaction) public static Role getRole(String role, ObjectTransaction transaction)
{ {
return Role.SearchByNAME().byName(role).search(transaction); return Role.SearchByNAME().byName(role).search(transaction);
...@@ -251,17 +253,17 @@ public class Utils ...@@ -251,17 +253,17 @@ public class Utils
if(appSortOption==AppSortOption.OLDEST) if(appSortOption==AppSortOption.OLDEST)
{ {
transform = JobApplication.pipesJobApplication().toSubmittedDate(); transform = JobApplication.pipesJobApplication().toSubmittedDate();
comparator = CollectionUtils.DEFAULT_COMPARATOR; comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
} }
else if(appSortOption==AppSortOption.NEWEST) else if(appSortOption==AppSortOption.NEWEST)
{ {
transform = JobApplication.pipesJobApplication().toSubmittedDate(); transform = JobApplication.pipesJobApplication().toSubmittedDate();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR); comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST);
} }
else if(appSortOption==AppSortOption.RANK) else if(appSortOption==AppSortOption.RANK)
{ {
transform = JobApplication.pipesJobApplication().toOverallSuitability(); transform = JobApplication.pipesJobApplication().toOverallRank();
comparator = CollectionUtils.reverse(CollectionUtils.DEFAULT_COMPARATOR); comparator = CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST;
} }
else if(appSortOption==AppSortOption.ALPHA_A_Z) else if(appSortOption==AppSortOption.ALPHA_A_Z)
{ {
...@@ -275,8 +277,8 @@ public class Utils ...@@ -275,8 +277,8 @@ public class Utils
} }
return ObjstoreUtils.sort( Arrays.asList(applications), return ObjstoreUtils.sort( Arrays.asList(applications),
new ObjectTransform[]{transform}, new ObjectTransform[]{transform},
new Comparator[]{comparator}); new Comparator[]{comparator});
} }
......
...@@ -29,9 +29,9 @@ ...@@ -29,9 +29,9 @@
for(JobApplication jobApplication : applications) for(JobApplication jobApplication : applications)
{ {
String jobMatch = FormatUtils.stringify(jobApplication.getJobMatchPercentage(), "PercentageWholeNumber", "0"); String roleFit = FormatUtils.stringify(jobApplication.getRoleFitPercentage(), "PercentageTwoDP", "0");
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0"); String culture = FormatUtils.stringify(jobApplication.getCultureFitScore(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0"); String criteria = FormatUtils.stringify(jobApplication.getRequirementFitScore(), "PercentageWholeNumber", "0");
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
%> %>
<div class="appli-row" id="<%= jobApplication.getID() %>"> <div class="appli-row" id="<%= jobApplication.getID() %>">
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
</div> </div>
<!--TODO: logic needed to be worked out. Added to note that there are three colors--> <!--TODO: logic needed to be worked out. Added to note that there are three colors-->
<div class="<%= "appli-percent-no " + (j == 0 ? "first green" : (j < 3 ? "blue" : "grey" ))%>"> <div class="<%= "appli-percent-no " + (j == 0 ? "first green" : (j < 3 ? "blue" : "grey" ))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<% <%
...@@ -69,8 +69,8 @@ ...@@ -69,8 +69,8 @@
<div class="<%= widthClass %> appli-l eq-second-height"> <div class="<%= widthClass %> appli-l eq-second-height">
<span class="appli-view-bar"> <span class="appli-view-bar">
<div class="progress"> <div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="<%= jobMatch %>" aria-valuemin="0" aria-valuemax="100" <div class="progress-bar" role="progressbar" aria-valuenow="<%= roleFit %>" aria-valuemin="0" aria-valuemax="100"
style="<%= "width: " + jobMatch %>"> style="<%= "width: " + roleFit %>">
</div> </div>
</div> </div>
</span> </span>
......
...@@ -11,6 +11,8 @@ ...@@ -11,6 +11,8 @@
<title><%= "Talentology" + (company != null ? " - " + company.getCompanyName() : "")%></title> <title><%= "Talentology" + (company != null ? " - " + company.getCompanyName() : "")%></title>
<%@include file="/inc/std_imports.jsp" %> <%@include file="/inc/std_imports.jsp" %>
<%@include file="/hotjar.jsp" %>
<%@include file="/heapAnalysis.jsp" %>
</head> </head>
<script> <script>
window.intercomSettings = { window.intercomSettings = {
...@@ -107,7 +109,6 @@ ...@@ -107,7 +109,6 @@
} }
}); });
</script> </script>
<% <%
} }
%> %>
...@@ -35,15 +35,16 @@ ...@@ -35,15 +35,16 @@
</div> </div>
<div class="off-name"> <div class="off-name">
<span class="austr-post"> <span class="austr-post">
<% <%
if(job.isClientAvailable()) if(job.isClientAvailable())
{ {
%> %>
<oneit:toString value="<%= job.getClient() %>" mode="EscapeHTML" /> <oneit:toString value="<%= job.getClient() %>" mode="EscapeHTML" />
<% <%
} }
%> %>
</span> by <oneit:toString value="<%= job.getCompanyUser() %>" mode="EscapeHTML" nullValue=""/><span class="ex-management">&bull;&nbsp; </span> by <oneit:toString value="<%= job.getCompanyUser() %>" mode="EscapeHTML" nullValue=""/>
<span class="ex-management">&bull;&nbsp;
<oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" /> <oneit:toString value="<%= job.getLevel() %>" mode="EscapeHTML" />
</span> </span>
</div> </div>
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
Map<FactorClass, Double> roleScoreMap = AnalysisEngine.getRoleFitSuitability(candidate, job.getLevel()); Map<FactorClass, Double> roleScoreMap = (Map<FactorClass, Double>)jobApplication.getRoleFit();
%> %>
<script> <script>
function tabToggle(tab) { function tabToggle(tab) {
...@@ -73,14 +73,14 @@ ...@@ -73,14 +73,14 @@
<div class="applicant-progress"> <div class="applicant-progress">
<div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1')"> <div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-6" %> col-xs-12 text-center" href="#1a" data-toggle="tab" id="progress1" onClick="tabToggle('#tab1')">
<label class="progress-label">role fit</label> <label class="progress-label">role fit</label>
<div class="percent-green fixed-width"> <div class="percent-role fixed-width">
<p style="display:none;"><oneit:toString value="<%= roleScoreMap.get(null) %>" mode="TwoDPDouble" nullValue="0"/></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" nullValue="0"/></p>
</div> </div>
</div> </div>
<div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-4" %> col-xs-12 text-center" href="#2a" data-toggle="tab" id="progress2" onClick="tabToggle('#tab2')"> <div class="<%= job.getIncludeAssessmentCriteria()==Boolean.TRUE ? "col-sm-4" : "col-sm-4" %> col-xs-12 text-center" href="#2a" data-toggle="tab" id="progress2" onClick="tabToggle('#tab2')">
<label class="progress-label">culture fit</label> <label class="progress-label">culture fit</label>
<div class="percent-green fixed-width"> <div class="percent-culture fixed-width">
<p style="display:none;"><oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="PercentageWholeNumber" /></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="PercentageWholeNumber" /></p>
</div> </div>
</div> </div>
<% <%
...@@ -89,8 +89,8 @@ ...@@ -89,8 +89,8 @@
%> %>
<div class="col-sm-4 col-xs-12 text-center" href="#3a" data-toggle="tab" id="progress3" onClick="tabToggle('#tab3')"> <div class="col-sm-4 col-xs-12 text-center" href="#3a" data-toggle="tab" id="progress3" onClick="tabToggle('#tab3')">
<label class="progress-label">requirements</label> <label class="progress-label">requirements</label>
<div class="percent-blue fixed-width"> <div class="percent-req fixed-width">
<p style="display:none;"><oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="PercentageWholeNumber" /></p> <p style="display:none;"><oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="PercentageWholeNumber" /></p>
</div> </div>
</div> </div>
<% <%
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
<% <%
} }
%> %>
<li id="tab4"><a href="#4a" data-toggle="tab">areas of concern</a></li> <li id="tab4" style="display: none"><a href="#4a" data-toggle="tab">areas of concern</a></li>
</ul> </ul>
<div class="tab-content clearfix"> <div class="tab-content clearfix">
<div class="tab-pane active" id="1a"> <div class="tab-pane active" id="1a">
...@@ -177,7 +177,7 @@ ...@@ -177,7 +177,7 @@
</div> </div>
<div class="tab-pane" id="2a"> <div class="tab-pane" id="2a">
<% <%
Map<CultureClass, Long> cultureFitData = AnalysisEngine.getCultureFit(candidate.getCultureCriteriaAnswersSet(), job); Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
...@@ -254,7 +254,7 @@ ...@@ -254,7 +254,7 @@
%> %>
<div class="tab-pane" id="3a"> <div class="tab-pane" id="3a">
<% <%
Map<Importance, Long> requirementFitData = AnalysisEngine.getRequirementFit(jobApplication.getAssessmentCriteriaAnswersSet()); Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: requirementFitData.keySet()) for(Importance importance: requirementFitData.keySet())
{ {
...@@ -338,7 +338,7 @@ ...@@ -338,7 +338,7 @@
<div class="app-right-b"> <div class="app-right-b">
<div class="overall-suit">overall rank</div> <div class="overall-suit">overall rank</div>
<div class="big-percentage"> <div class="big-percentage">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<div class="applicant-contact-info"> <div class="applicant-contact-info">
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script"><NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Home">
<createSpecificIdentifier factory='String' value='HOME'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="HOME"/>
</articleIdentifiers>
<createdLabel factory="String" value="HOME"/>
<articleAttributeChanges factory="Map">
<NODE name="Additional CSS Class" factory="Null"/>
<NODE name="Exclude From Sitemap" factory="Boolean" value="false"/>
<NODE name="Exclude from SEO Indexing" factory="Boolean" value="false"/>
<NODE name="Add Brackline Separator" factory="Boolean" value="false"/>
<NODE name="On Top Menu" factory="Boolean" value="false"/>
<NODE name="On Footer Left" factory="Boolean" value="false"/>
<NODE name="Menu Title" factory="Null"/>
<NODE name="On Footer Menu" factory="Boolean" value="false"/>
<NODE name="OnLeftMenu" factory="Boolean" value="false"/>
<NODE name="Exclude From Search" factory="Boolean" value="false"/>
<NODE name="Target" factory="String" value="YRZCOYGLDTAG02BK7VK4TXHJIZF3ZS"/>
<NODE name="Menu Icon CSS" factory="Null"/>
<NODE name="On Left Menu" factory="Boolean" value="false"/>
<NODE name="Shortcuts" factory="Null"/>
<NODE name="Exclude From Navigation" factory="Boolean" value="false"/>
<NODE name="On Footer Right" factory="Boolean" value="false"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2000-01-01 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="3000-01-01 00:00:00"/>
<NODE name="Title" factory="String" value="Home"/>
<NODE name="ShortTitle" factory="String" value="Home"/>
<NODE name="SortOrder" factory="Integer" value="-36831027"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="INTERNAL_LINK"/>
</ormAttributeChanges>
<content factory="Map"> <NODE name="Body" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title></title>
<link type="text/css" rel="stylesheet" href="css/cms_style.css">
</head>
<body class="CMS_GENERIC_EDITOR CMS_${oneit.Template} CMS_${oneit.Template}_${oneit.ContentType} CMS_${oneit.ContentType}">
<p>This is some content that should sit within the Home page.</p>
<br>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>This is some content that should sit within the Home page.</p>
<br>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="Synopsis" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<html>
<head>
<meta name='author' content='Cougar Content by 1iT www.1it.com.au'>
<link href="css/cms_style.css" rel="stylesheet" type="text/css">
</head>
<body>
<p>
</p>
<br>
</body>
</html>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
...@@ -114,7 +114,7 @@ ...@@ -114,7 +114,7 @@
Candidate candidate = jobApplication.getCandidate(); Candidate candidate = jobApplication.getCandidate();
String appID = "app-id-" + jobApplication.getID().toString(); String appID = "app-id-" + jobApplication.getID().toString();
Map<FactorClass, Double> roleScoreMap = AnalysisEngine.getRoleFitSuitability(candidate, job.getLevel()); Map<FactorClass, Double> roleScoreMap = (Map<FactorClass, Double>)jobApplication.getRoleFit();
%> %>
<div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> "> <div class="<%= "appl-c-box " + (i == 0 ? " cb-one" : "")%> ">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this--> <!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
...@@ -135,14 +135,14 @@ ...@@ -135,14 +135,14 @@
<div class="overall-suitablity grid-suitability"> <div class="overall-suitablity grid-suitability">
<!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this--> <!--TODO: need to work on the logic. just added to demonstrate that there are 3 different colors for this-->
<div class="<%= "over-all " + (i == 0 ? "f-60 green" : (i < 3 ? "blue" : "gray"))%>"> <div class="<%= "over-all " + (i == 0 ? "f-60 green" : (i < 3 ? "blue" : "gray"))%>">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
<div class="<%= "overall " + (i == 0 ? "f-60" : "")%>">overall rank</div> <div class="<%= "overall " + (i == 0 ? "f-60" : "")%>">overall rank</div>
</div> </div>
<div class="jcc-box"> <div class="jcc-box">
<div class="job-match jcc"> <div class="job-match jcc">
<img src="images/app-job-match-icon.svg"> Role fit <img src="images/app-job-match-icon.svg"> Role fit
<span><oneit:toString value="<%= jobApplication.getJobMatchPercentage() %>" mode="TwoDPDouble" /></span> <span><oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" /></span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
...@@ -168,13 +168,13 @@ ...@@ -168,13 +168,13 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
Map<CultureClass, Long> cultureFitData = AnalysisEngine.getCultureFit(candidate.getCultureCriteriaAnswersSet(), job); Map<CultureClass, Long> cultureFitData = (Map<CultureClass, Long>)jobApplication.getCultureFit();
for(CultureClass cClass: cultureFitData.keySet()) for(CultureClass cClass: cultureFitData.keySet())
{ {
...@@ -191,43 +191,43 @@ ...@@ -191,43 +191,43 @@
} }
%> %>
</div> </div>
<% <%
if(job.getIncludeAssessmentCriteria()==Boolean.TRUE) if(job.getIncludeAssessmentCriteria()==Boolean.TRUE)
{ {
%> %>
<div class="jcc"> <div class="jcc">
<img src="images/criteria-icon.svg"> Requirements <img src="images/criteria-icon.svg"> Requirements
<span> <span>
<oneit:button value=" " name="gotoPage" skin="link" <oneit:button value=" " name="gotoPage" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
<div class="detail-box"> <div class="detail-box">
<% <%
Map<Importance, Long> requirementFitData = AnalysisEngine.getRequirementFit(jobApplication.getAssessmentCriteriaAnswersSet()); Map<Importance, Long> requirementFitData = (Map<Importance, Long>)jobApplication.getRequirementFit();
for(Importance importance: requirementFitData.keySet()) for(Importance importance: requirementFitData.keySet())
{ {
if(importance==null) if(importance==null)
{ {
continue; continue;
} }
%> %>
<div class="detail-row"> <div class="detail-row">
<div class="detail-label"><oneit:toString value="<%= importance %>" mode="EscapeHTML"/></div> <div class="detail-label"><oneit:toString value="<%= importance %>" mode="EscapeHTML"/></div>
<div class="detail-no green"><oneit:toString value="<%= requirementFitData.get(importance) %>" mode="WholeNumber" /></div> <div class="detail-no green"><oneit:toString value="<%= requirementFitData.get(importance) %>" mode="WholeNumber" /></div>
</div> </div>
<% <%
} }
%> %>
</div> </div>
<% <%
} }
%> %>
</div> </div>
</oneit:button> </oneit:button>
</div> </div>
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
<div class="overall-suitablity"> <div class="overall-suitablity">
<div class="<%= "overall " + (index == 0 ? "f-60" : "")%>">overall rank</div> <div class="<%= "overall " + (index == 0 ? "f-60" : "")%>">overall rank</div>
<div class="<%= "over-all " + (index == 0 ? "f-60 green" : (index < 3 ? "blue" : "gray"))%> "> <div class="<%= "over-all " + (index == 0 ? "f-60 green" : (index < 3 ? "blue" : "gray"))%> ">
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" /> <oneit:toString value="<%= jobApplication.getOverallRank() %>" mode="Integer" />
</div> </div>
</div> </div>
<div class="jcc-box"> <div class="jcc-box">
...@@ -145,7 +145,7 @@ ...@@ -145,7 +145,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getJobMatchPercentage() %>" mode="TwoDPDouble" /> <oneit:toString value="<%= jobApplication.getRoleFitScore() %>" mode="TwoDPDouble" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
...@@ -156,7 +156,7 @@ ...@@ -156,7 +156,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCulturePercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getCultureFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
...@@ -171,7 +171,7 @@ ...@@ -171,7 +171,7 @@
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicationPage)
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"> .toMap() %>">
<oneit:toString value="<%= jobApplication.getCriteriaPercentage() %>" mode="WholeNumber" /> <oneit:toString value="<%= jobApplication.getRequirementFitScore() %>" mode="WholeNumber" />
</oneit:button> </oneit:button>
</span> </span>
</div> </div>
......
...@@ -27,7 +27,18 @@ ...@@ -27,7 +27,18 @@
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function() $(document).ready(function()
{ {
$('.percent-green').percentageLoader({ $('.percent-role').percentageLoader({
valElement: 'p',
strokeWidth: 20,
bgColor: '#e5e8eb',
ringColor: '#67b413',
textColor: '#67b413',
fontSize: '30px',
fontWeight: 'normal',
showPercent: false
});
$('.percent-culture').percentageLoader({
valElement: 'p', valElement: 'p',
strokeWidth: 20, strokeWidth: 20,
bgColor: '#e5e8eb', bgColor: '#e5e8eb',
...@@ -37,7 +48,7 @@ ...@@ -37,7 +48,7 @@
fontWeight: 'normal' fontWeight: 'normal'
}); });
$('.percent-blue').percentageLoader({ $('.percent-req').percentageLoader({
valElement: 'p', valElement: 'p',
strokeWidth: 20, strokeWidth: 20,
bgColor: '#e5e8eb', bgColor: '#e5e8eb',
...@@ -51,11 +62,13 @@ ...@@ -51,11 +62,13 @@
<oneit:form name="jobApplication" method="post" enctype="multipart/form-data"> <oneit:form name="jobApplication" method="post" enctype="multipart/form-data">
<div class="dashboard-content-area first-part"> <div class="dashboard-content-area">
<oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <div class="first-part">
</div> <oneit:dynInclude page="/extensions/adminportal/inc/job_title_bar.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="dashboard-content-area second-part v-applicant-area"> </div>
<oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/> <div class="second-part v-applicant-area">
<oneit:dynInclude page="/extensions/adminportal/inc/view_application_tab_applicant.jsp" data="<%= CollectionUtils.EMPTY_MAP %>"/>
</div>
</div> </div>
</oneit:form> </oneit:form>
......
...@@ -121,11 +121,7 @@ ...@@ -121,11 +121,7 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, We'll ask you if you have certain skills, qualifications, knowledge, or experience that are somehow important to do this job.
consectetur adipiscing elit. Aenean
semper at magna a tristique. Ut ut
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
<% <%
...@@ -153,11 +149,9 @@ ...@@ -153,11 +149,9 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, A job isn't just about what one does, but the environment where one does it.
consectetur adipiscing elit. Aenean This questionnaire will help us both learn what's most important to you in a workplace environment.
semper at magna a tristique. Ut ut There are no right or wrong answers, so please choose what best fits you (not what you think might be right for a particular job).
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
<div class="<%= (job.getIncludeAssessmentCriteria() ? "col-sm-4 " : "col-sm-6 app-thired-block " ) + "col-xs-12 app-block eq-height last-border"%>"> <div class="<%= (job.getIncludeAssessmentCriteria() ? "col-sm-4 " : "col-sm-6 app-thired-block " ) + "col-xs-12 app-block eq-height last-border"%>">
...@@ -182,11 +176,9 @@ ...@@ -182,11 +176,9 @@
%> %>
</div> </div>
<p> <p>
Lorem ipsum dolor sit amet, Each of us has preferences and beliefs - and motivations - about the work that we do or seek.
consectetur adipiscing elit. Aenean It's not really about what we're good at doing, but what's right for us... what "fits".
semper at magna a tristique. Ut ut Just like with the workplace preferences questionnaire, there are no right or wrong answers, so please choose what best fits you.
magna ut mauris sagittis placerat.
Suspendisse vitae tempus sem.
</p> </p>
</div> </div>
</div> </div>
......
...@@ -23,6 +23,8 @@ ...@@ -23,6 +23,8 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge"></meta> <meta http-equiv="X-UA-Compatible" content="IE=edge"></meta>
<meta name="viewport" content="width=device-width, initial-scale=1"></meta> <meta name="viewport" content="width=device-width, initial-scale=1"></meta>
<title><%= job != null ? job.getPageTitle() : "Talentology" %></title> <title><%= job != null ? job.getPageTitle() : "Talentology" %></title>
<%@include file="/hotjar.jsp" %>
<%@include file="/heapAnalysis.jsp" %>
</head> </head>
<body> <body>
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
if(totalQuestions == null) if(totalQuestions == null)
{ {
totalQuestions = Arrays.asList(Question.searchAll(transaction)); totalQuestions = job.getAllQuestions();
process.setAttribute("TotalQuestions", totalQuestions); process.setAttribute("TotalQuestions", totalQuestions);
} }
...@@ -90,15 +90,15 @@ ...@@ -90,15 +90,15 @@
<div class="main-application-outline"> <div class="main-application-outline">
<div class="selection-aust-logo"> <div class="selection-aust-logo">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
<% <%
} }
%> %>
<span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span> <span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span>
<div class="clearfix no-height"></div> <div class="clearfix no-height"></div>
</div> </div>
...@@ -143,8 +143,8 @@ ...@@ -143,8 +143,8 @@
<p>Using the scale given, indicate how important to you are the following aspects in your work life. Use the following system:</p> <p>Using the scale given, indicate how important to you are the following aspects in your work life. Use the following system:</p>
<ul class="security-level"> <ul class="security-level">
<li><span>1</span> means of very little importance to you</li> <li><span>1</span> means of very little importance to you</li>
<li><span><oneit:toString value="<%= maxRating %>" mode="EscapeHTML"/></span> means about average in importance to you</li> <li><span><oneit:toString value="<%= midRating %>" mode="EscapeHTML"/></span> means about average in importance to you</li>
<li><span><oneit:toString value="<%= midRating %>" mode="EscapeHTML"/></span> means of high importance to you</li> <li><span><oneit:toString value="<%= maxRating %>" mode="EscapeHTML"/></span> means of high importance to you</li>
</ul> </ul>
<p>Use the other numbers (<oneit:toString value="<%= otherRating %>" mode="EscapeHTML"/>) to indicate in-between levels of importance to you.</p> <p>Use the other numbers (<oneit:toString value="<%= otherRating %>" mode="EscapeHTML"/>) to indicate in-between levels of importance to you.</p>
</div> </div>
......
...@@ -28,17 +28,17 @@ ...@@ -28,17 +28,17 @@
</style> </style>
<div class="main-position-overview"> <div class="main-position-overview">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<div class="aust-logo"> <div class="aust-logo">
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
</div> </div>
<% <%
} }
%> %>
<div class="overview-title"> <div class="overview-title">
<oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/> <oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/>
</div> </div>
......
...@@ -2,3 +2,4 @@ ...@@ -2,3 +2,4 @@
#completeCulture = Please complete the culture assessment. #completeCulture = Please complete the culture assessment.
#emailExists = An account already exists with this email address. #emailExists = An account already exists with this email address.
#emailSent = A verification email has been sent to you. Please check your email :). #emailSent = A verification email has been sent to you. Please check your email :).
#alreadyApplied = You have already applied for this job.
...@@ -45,15 +45,15 @@ ...@@ -45,15 +45,15 @@
<div class="main-application-outline"> <div class="main-application-outline">
<div class="selection-aust-logo"> <div class="selection-aust-logo">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
<% <%
} }
%> %>
<span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span> <span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span>
<div class="clearfix no-height"></div> <div class="clearfix no-height"></div>
</div> </div>
...@@ -78,9 +78,7 @@ ...@@ -78,9 +78,7 @@
<div class="section-page-area"> <div class="section-page-area">
<div class="main-sc-section"> <div class="main-sc-section">
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a We'll ask you if you have certain skills, qualifications, knowledge, or experience that are somehow important to do this job.
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem
ipsum dolor sit amet, consectetur adipiscing elit.
</p> </p>
</div> </div>
<% <%
......
...@@ -21,10 +21,12 @@ ...@@ -21,10 +21,12 @@
String socialLoginNextPage = nextPage + "&JobID=" + job.getID().toString(); String socialLoginNextPage = nextPage + "&JobID=" + job.getID().toString();
%> %>
<script type="text/javascript"> <script type="text/javascript">
var interval;
$(document.body).addClass('bg-color'); $(document.body).addClass('bg-color');
$(document).ready(function() { $(document).ready(function() {
recalcFunction = setupRecalc ($("#applyJob"), {'recalcOnError':true}); recalcFunction = setupRecalc ($("#applyJob"), {'recalcOnError':true});
interval = setInterval(function() { validate(); }, 500);
$('#applyJob').on('keyup keypress', function(e) { $('#applyJob').on('keyup keypress', function(e) {
var keyCode = e.keyCode || e.which; var keyCode = e.keyCode || e.which;
...@@ -33,19 +35,32 @@ ...@@ -33,19 +35,32 @@
return false; return false;
} }
}); });
validate(); validate();
$('input[type="password"]').keyup(function() { $('input[type="password"]').keyup(function() {
validate(); validate();
}); });
$('input[type="text"]').keyup(function() {
$(this).change();
});
}); });
function validate() { function validate() {
if($('input[type="password"]').val() != '') { var empty = false;
$('.sign-in-btn').removeAttr('disabled'); $('input[type="password"]').each(function() {
} else { if ($( this ).val() == '') {
empty = true;
if ($( this ).css('background-color') == 'rgb(250, 255, 189)') {
empty = false;
}
}
});
if (empty) {
$('.sign-in-btn').attr('disabled', 'disabled'); $('.sign-in-btn').attr('disabled', 'disabled');
} else {
$('.sign-in-btn').removeAttr('disabled');
clearInterval(interval);
} }
} }
</script> </script>
...@@ -130,7 +145,7 @@ ...@@ -130,7 +145,7 @@
<div class="form-group text-left" id="email-div"> <div class="form-group text-left" id="email-div">
<label>Email Address</label> <label>Email Address</label>
<oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" style="text-transform: lowercase"/> <oneit:ormInput obj="<%= job %>" type="text" attributeName="Email" cssClass="form-control second-style" style="text-transform: lowercase" autocomplete="off"/>
<oneit:recalcClass htmlTag="div" classScript="job.isEmailFound() ? 'show': 'hide'" job="<%= job %>" class="right-mark"> <oneit:recalcClass htmlTag="div" classScript="job.isEmailFound() ? 'show': 'hide'" job="<%= job %>" class="right-mark">
<span id="right-mark"><img src="images/right-mark.svg"/></span> <span id="right-mark"><img src="images/right-mark.svg"/></span>
</oneit:recalcClass> </oneit:recalcClass>
...@@ -156,6 +171,9 @@ ...@@ -156,6 +171,9 @@
<oneit:recalcClass htmlTag="div" classScript="job.getEmail()==null || job.isEmailFound() ? 'hide': 'show'" job="<%= job %>"> <oneit:recalcClass htmlTag="div" classScript="job.getEmail()==null || job.isEmailFound() ? 'hide': 'show'" job="<%= job %>">
<div class="form-group"> <div class="form-group">
<p>We don't recognize that email address yet, so we'll send a link so that you can create an account.</p>
</div>
<div class="form-group">
<oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn send-link-btn" <oneit:button value="Send link" name="sendVerificationMail" cssClass="box-btn send-link-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry("Job",job) .mapEntry("Job",job)
......
...@@ -17,15 +17,15 @@ ...@@ -17,15 +17,15 @@
<div class="main-application-outline"> <div class="main-application-outline">
<div class="selection-aust-logo"> <div class="selection-aust-logo">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
<% <%
} }
%> %>
<span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span> <span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span>
<div class="clearfix no-height"></div> <div class="clearfix no-height"></div>
</div> </div>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS xmlns:oneit="http://www.1iT.com.au" name="">
<NODE factory="Vector" name="Script">
<NODE class="oneit.appservices.upgrade.cms.CMSArticleUpdateOperation" factory="Participant" name="Account Verification Mail">
<createSpecificIdentifier factory='String' value='I90Q26LQURCWXZZFP21EWM3EHUGXTJ'/>
<articleIdentifiers factory="Array" class="java.lang.String">
<NODE factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
</articleIdentifiers>
<createdLabel factory="String" value="I90Q26LQURCWXZZFP21EWM3EHUGXTJ"/>
<newParentCategory factory="String" value="RESOURCE_LIBRARY"/>
<articleAttributeChanges factory="Map">
<NODE name="EmailTo" factory="Null"/>
<NODE name="EmailFrom" factory="String" value="info@talentology.com.au"/>
<NODE name="EmailSubject" factory="String" value="Verify your email"/>
<NODE name="Shortcuts" factory="String" value="AccountVerificationMail"/>
<NODE name="EmailCC" factory="Null"/>
<NODE name="EmailBCC" factory="Null"/>
</articleAttributeChanges>
<ormAttributeChanges factory="Map">
<NODE name="PublishDate" factory="Date" value="2016-02-05 00:00:00"/>
<NODE name="WithdrawDate" factory="Date" value="2066-02-05 16:00:00"/>
<NODE name="Title" factory="String" value="Account Verification Mail"/>
<NODE name="ShortTitle" factory="String" value="Reset Code Email"/>
<NODE name="SortOrder" factory="Integer" value="-200926"/>
<NODE name="Type" factory="Enumerated" class="oneit.business.content.ArticleType" value="ARTICLE"/>
<NODE name="Template" factory="Enumerated" class="oneit.business.content.ArticleTemplate" value="EMAIL_TEMPLATE"/>
</ormAttributeChanges>
<content factory="Map">
<NODE name="EmailBody" factory="Map">
<NODE name="Content" factory="String"><![CDATA[<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="HTML Tidy, see www.w3.org" name="generator">
<title></title>
</head>
<body>
<p>Welcome to Talentology! Your account has been created.</p>
<p>To verify your account, please <a href="${link}">click here</a>.</p>
<p>Thanks :)</p>
</body>
</html>
]]></NODE>
<NODE name="TransformedContent" factory="String"><![CDATA[<p>Welcome to Talentology! Your account has been created.</p><p>To verify your account, please <a href="${link}">click here</a>.</p><p>Thanks :)</p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
<NODE name="" factory="Map">
<NODE name="Content" factory="String"><![CDATA[
<p></p>
]]></NODE>
<NODE name="IncludeContent" factory="Boolean" value="true"/>
</NODE>
</content>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
...@@ -48,6 +48,7 @@ ...@@ -48,6 +48,7 @@
if(isVerify && (job==null || secUser==null)) if(isVerify && (job==null || secUser==null))
{ {
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError")); response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "AuthError"));
return; //Else it will continue execution and throws NPE.
} }
if(secUser==null) if(secUser==null)
...@@ -100,17 +101,17 @@ ...@@ -100,17 +101,17 @@
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/> <oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity"> <div class="main-verify-identity">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<div class="verify-aust-logo"> <div class="verify-aust-logo">
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
</div> </div>
<% <%
} }
%> %>
<div class="pl-confirm text-center">Please confirm your details to continue</div> <div class="pl-confirm text-center">Please confirm your details to continue</div>
<div class="main-box-layout main-verify-step-2"> <div class="main-box-layout main-verify-step-2">
<div class="form-group text-left"> <div class="form-group text-left">
...@@ -143,6 +144,16 @@ ...@@ -143,6 +144,16 @@
<label>Confirm password</label> <label>Confirm password</label>
<oneit:ormInput obj="<%= job %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/> <oneit:ormInput obj="<%= job %>" type="password" attributeName="ConfirmPassword" cssClass="form-control second-style reset-pw " required="true"/>
</div> </div>
<div class="form-group text-left">
<p>
Your password must:
<ul>
<li>* begin with a letter of the alphabet</li>
<li>* include at least one number</li>
<li>* not include any spaces or special characters.</li>
</ul>
</p>
</div>
<% <%
} }
%> %>
......
...@@ -68,15 +68,15 @@ ...@@ -68,15 +68,15 @@
<div class="main-application-outline"> <div class="main-application-outline">
<div class="selection-aust-logo"> <div class="selection-aust-logo">
<% <%
if(job.isClientLogoAvailable()) if(job.isClientLogoAvailable())
{ {
int logoWidth = 45; int logoWidth = 45;
%> %>
<tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" /> <tagfile:img src="<%= ThumbnailUtils.filterImage(DiskFileBinaryContent.getRelativeURL(job.getClient().getClientLogo()), "KEEP", new ScaleWithin (logoWidth, 0)) %>" />
<% <%
} }
%> %>
<span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span> <span><oneit:toString value="<%= job.getJobTitle() %>" mode="EscapeHTML"/></span>
<div class="clearfix no-height"></div> <div class="clearfix no-height"></div>
</div> </div>
...@@ -89,7 +89,7 @@ ...@@ -89,7 +89,7 @@
<div class="section-c-title m-hide"> <div class="section-c-title m-hide">
Culture Culture
<span class="estimated-time">Estimated time to complete: <span class="estimated-time">Estimated time to complete:
<span class="estimated-time-20">&nbsp;20 mins</span> <span class="estimated-time-20">&nbsp;5 mins</span>
</span> </span>
</div> </div>
<div class="section-tab-view"> <div class="section-tab-view">
...@@ -103,9 +103,9 @@ ...@@ -103,9 +103,9 @@
<div class="section-page-area"> <div class="section-page-area">
<div class="main-sc-section"> <div class="main-sc-section">
<p> <p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean semper at magna a A job isn't just about what one does, but the environment where one does it.
tristique. Ut ut magna ut mauris sagittis placerat. Suspendisse vitae tempus sem. Lorem This questionnaire will help us both learn what's most important to you in a workplace environment.
ipsum dolor sit amet, consectetur adipiscing elit. There are no right or wrong answers, so please choose what best fits you (not what you think might be right for a particular job).
</p> </p>
</div> </div>
<div class="selection-br-line"></div> <div class="selection-br-line"></div>
......
Add "heap.analysis.id" to keyfile properties.
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_job_application" indexName="idx_tl_job_application_CandidateJob" isUnique="true"><column name="candidate_id"/><column name="job_id"/></NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
<script>
var heapAnalysisID = "<%= Utils.HEAP_ANALYSIS_ID %>"
</script>
<oneit:script>
<oneit:script src="/scripts/heapAnalysis.js"/>
</oneit:script>
\ No newline at end of file
<oneit:script>
<oneit:script src="/scripts/hotjar.js"/>
</oneit:script>
\ No newline at end of file
window.heap = window.heap || [], heap.load = function(e, t){window.heap.appid = e, window.heap.config = t = t || {}; var r = t.forceSSL || "https:" === document.location.protocol, a = document.createElement("script"); a.type = "text/javascript", a.async = !0, a.src = (r?"https:":"http:") + "//cdn.heapanalytics.com/js/heap-" + e + ".js"; var n = document.getElementsByTagName("script")[0]; n.parentNode.insertBefore(a, n); for (var o = function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments, 0)))}}, p = ["addEventProperties", "addUserProperties", "clearEventProperties", "identify", "removeEventProperty", "setEventProperties", "track", "unsetEventProperty"], c = 0; c < p.length; c++)heap[p[c]] = o(p[c])};
heap.load(heapAnalysisID);
\ No newline at end of file
//Hotjar Tracking Code for www.talentology.com
(function (h, o, t, j, a, r) {
h.hj = h.hj || function () {
(h.hj.q = h.hj.q || []).push(arguments)
};
h._hjSettings = {hjid: 598700, hjsv: 5};
a = o.getElementsByTagName('head')[0];
r = o.createElement('script');
r.async = 1;
r.src = t + h._hjSettings.hjid + j + h._hjSettings.hjsv;
a.appendChild(r);
})(window, document, '//static.hotjar.com/c/hotjar-', '.js?sv=');
\ No newline at end of file
!function(a){a.fn.percentageLoader=function(b){this.each(function(){function q(){p.customAttributes.arc=function(a,b,c){var h,d=360/b*a,e=(90-d)*Math.PI/180,f=j+c*Math.cos(e),g=k-c*Math.sin(e);return h=b==a?[["M",j,k-c],["A",c,c,0,1,1,j-.01,k-c]]:[["M",j,k-c],["A",c,c,0,+(d>180),1,f,g]],{path:h}},p.path().attr({arc:[100,100,l],"stroke-width":d.strokeWidth,stroke:d.bgColor}),e&&(m=p.path().attr({arc:[.01,100,l],"stroke-width":d.strokeWidth,stroke:d.ringColor,cursor:"pointer"}),r(e,100,l,m,2)),n=p.text(j,k,e+"%").attr({font:d.fontWeight+" "+d.fontSize+" Arial",fill:d.textColor})}function r(a,b,c,d){f?d.animate({arc:[a,b,c]},900,">"):a&&a!=b?d.animate({arc:[a,b,c]},750,"elastic"):(a=b,d.animate({arc:[a,b,c]},750,"bounce",function(){d.attr({arc:[0,b,c]})}))}var c=a(this),d=a.extend({},a.fn.percentageLoader.defaultConfig,b),e=parseInt(c.children(d.valElement).text()),f=!0,h=parseInt(c.css("width")),i=parseInt(c.css("height")),j=h/2,k=i/2,l=j-d.strokeWidth/2,m=null,n=null,p=Raphael(this,h,i);q()})},a.fn.percentageLoader.defaultConfig={valElement:"p",strokeWidth:20,bgColor:"#d9d9d9",ringColor:"#d53f3f",textColor:"#9a9a9a",fontSize:"12px",fontWeight:"normal"}}(jQuery); !function(a){a.fn.percentageLoader=function(b){this.each(function(){function q(){p.customAttributes.arc=function(a,b,c){var h,d=360/b*a,e=(90-d)*Math.PI/180,f=j+c*Math.cos(e),g=k-c*Math.sin(e);return h=b==a?[["M",j,k-c],["A",c,c,0,1,1,j-.01,k-c]]:[["M",j,k-c],["A",c,c,0,+(d>180),1,f,g]],{path:h}},p.path().attr({arc:[100,100,l],"stroke-width":d.strokeWidth,stroke:d.bgColor}),e&&(m=p.path().attr({arc:[.01,100,l],"stroke-width":d.strokeWidth,stroke:d.ringColor,cursor:"pointer"}),r(e,100,l,m,2)),n=p.text(j,k,e+(d.showPercent ? "%" : "")).attr({font:d.fontWeight+" "+d.fontSize+" Arial",fill:d.textColor})}function r(a,b,c,d){f?d.animate({arc:[a,b,c]},900,">"):a&&a!=b?d.animate({arc:[a,b,c]},750,"elastic"):(a=b,d.animate({arc:[a,b,c]},750,"bounce",function(){d.attr({arc:[0,b,c]})}))}var c=a(this),d=a.extend({},a.fn.percentageLoader.defaultConfig,b),e=parseInt(c.children(d.valElement).text()),f=!0,h=parseInt(c.css("width")),i=parseInt(c.css("height")),j=h/2,k=i/2,l=j-d.strokeWidth/2,m=null,n=null,p=Raphael(this,h,i);q()})},a.fn.percentageLoader.defaultConfig={valElement:"p",strokeWidth:20,bgColor:"#d9d9d9",ringColor:"#d53f3f",textColor:"#9a9a9a",fontSize:"12px",fontWeight:"normal",showPercent: true}}(jQuery);
\ No newline at end of file \ No newline at end of file
...@@ -12,7 +12,7 @@ ...@@ -12,7 +12,7 @@
# should be different from the dev build # should be different from the dev build
# #
build.target.dir=${dir.root}/Build/Target/PerformaInvestments build.target.dir=${dir.root}/Build/Target/PerformaInvestments
keywebapp.deploy=/misc/PerformaInvestments/webapps/ROOT keywebapp.deploy=/misc/talentology/webapps/ROOT
keywebapp.target=${dir.root}/Deploy/Target/PerformaInvestments/webapps/ROOT keywebapp.target=${dir.root}/Deploy/Target/PerformaInvestments/webapps/ROOT
...@@ -43,5 +43,9 @@ app.deploy.dir=${keywebapp.deploy}/WEB-INF/apps ...@@ -43,5 +43,9 @@ app.deploy.dir=${keywebapp.deploy}/WEB-INF/apps
# #
cd.deploy.dir=${dir.root}/Deploy/PerformaInvestments/CD_image cd.deploy.dir=${dir.root}/Deploy/PerformaInvestments/CD_image
key.file=${config.deploy.dir}/thor.keyfile.properties key.file=${config.deploy.dir}/production.keyfile.properties
rsync.user=1itupdate
rsync.server=54.153.249.224
tctransform.version=55
rsync.port=40022
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