Commit 75ee647d by Nilu Committed by Harsh Shah

HT003 to shortlist functionality in rows

parent 0f9066dd
package performa.form;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import oneit.logging.LogLevel;
import oneit.logging.LogMgr;
import oneit.objstore.StorageException;
import oneit.servlets.forms.SubmissionDetails;
import oneit.servlets.forms.SuccessfulResult;
import oneit.servlets.process.ORMProcessState;
import oneit.servlets.process.SaveFP;
import oneit.utils.BusinessException;
import performa.orm.JobApplication;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus;
public class ChangeApplicationStatusFP extends SaveFP
{
@Override
public SuccessfulResult processForm(ORMProcessState process, SubmissionDetails submission, Map params) throws BusinessException, StorageException
{
HttpServletRequest request = submission.getRequest();
JobApplication jobApplication = (JobApplication) request.getAttribute("JobApplication");
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP changing status of Job Application : ", jobApplication );
if(jobApplication.getAppProcessOption() == AppProcessOption.TO_SHORTLIST)
{
jobApplication.setApplicationStatus(ApplicationStatus.SHORTLISTED);
}
else if(jobApplication.getAppProcessOption() == AppProcessOption.REMOVE_FROM_SHORTLIST)
{
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
}
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In ChangeApplicationStatusFP Job Application Status successfully changed : ", jobApplication );
return super.processForm(process, submission, params);
}
}
\ No newline at end of file
......@@ -44,6 +44,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public static final String FIELD_ApplicationStatus = "ApplicationStatus";
public static final String FIELD_SubmittedDate = "SubmittedDate";
public static final String FIELD_IsSelected = "IsSelected";
public static final String FIELD_AppProcessOption = "AppProcessOption";
public static final String SINGLEREFERENCE_Candidate = "Candidate";
public static final String BACKREF_Candidate = "";
public static final String SINGLEREFERENCE_Job = "Job";
......@@ -65,6 +66,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
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_IsSelected = DefaultAttributeHelper.INSTANCE;
private static final EnumeratedAttributeHelper<JobApplication, AppProcessOption> HELPER_AppProcessOption = new EnumeratedAttributeHelper<JobApplication, AppProcessOption> (AppProcessOption.FACTORY_AppProcessOption);
// Private attributes corresponding to business object data
......@@ -72,6 +74,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
private ApplicationStatus _ApplicationStatus;
private Date _SubmittedDate;
private Boolean _IsSelected;
private AppProcessOption _AppProcessOption;
// Private attributes corresponding to single references
......@@ -90,6 +93,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
// Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_IsSelected_Validators;
private static final AttributeValidator[] FIELD_AppProcessOption_Validators;
private static final AttributeValidator[] FIELD_CV_Validators;
private static final AttributeValidator[] FIELD_ApplicationStatus_Validators;
private static final AttributeValidator[] FIELD_SubmittedDate_Validators;
......@@ -117,6 +121,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
setupAssocMetaData_Candidate();
setupAssocMetaData_Job();
FIELD_IsSelected_Validators = (AttributeValidator[])setupAttribMetaData_IsSelected(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_AppProcessOption_Validators = (AttributeValidator[])setupAttribMetaData_AppProcessOption(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_SubmittedDate_Validators = (AttributeValidator[])setupAttribMetaData_SubmittedDate(validatorMapping).toArray (new AttributeValidator[0]);
......@@ -227,6 +232,24 @@ public abstract class BaseJobApplication extends BaseBusinessClass
}
// Meta Info setup
private static List setupAttribMetaData_AppProcessOption(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("attribHelper", "EnumeratedAttributeHelper");
metaInfo.put ("name", "AppProcessOption");
metaInfo.put ("type", "AppProcessOption");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for JobApplication.AppProcessOption:", metaInfo);
ATTRIBUTES_METADATA_JobApplication.put (FIELD_AppProcessOption, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(JobApplication.class, "AppProcessOption", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for JobApplication.AppProcessOption:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_CV(Map validatorMapping)
{
Map metaInfo = new HashMap ();
......@@ -317,6 +340,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = (ApplicationStatus)(ApplicationStatus.DRAFT);
_SubmittedDate = (Date)(HELPER_SubmittedDate.initialise (_SubmittedDate));
_IsSelected = (Boolean)(Boolean.FALSE);
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.initialise (_AppProcessOption));
}
......@@ -743,6 +767,104 @@ public abstract class BaseJobApplication extends BaseBusinessClass
}
}
/**
* Get the attribute AppProcessOption
*/
public AppProcessOption getAppProcessOption ()
{
assertValid();
AppProcessOption valToReturn = _AppProcessOption;
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
valToReturn = bhd.getAppProcessOption ((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 preAppProcessOptionChange (AppProcessOption newAppProcessOption) 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 postAppProcessOptionChange () throws FieldException
{
}
public FieldWriteability getWriteability_AppProcessOption ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute AppProcessOption. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setAppProcessOption (AppProcessOption newAppProcessOption) throws FieldException
{
boolean oldAndNewIdentical = HELPER_AppProcessOption.compare (_AppProcessOption, newAppProcessOption);
try
{
for (JobApplicationBehaviourDecorator bhd : JobApplication_BehaviourDecorators)
{
newAppProcessOption = bhd.setAppProcessOption ((JobApplication)this, newAppProcessOption);
oldAndNewIdentical = HELPER_AppProcessOption.compare (_AppProcessOption, newAppProcessOption);
}
if (FIELD_AppProcessOption_Validators.length > 0)
{
Object newAppProcessOptionObj = HELPER_AppProcessOption.toObject (newAppProcessOption);
if (newAppProcessOptionObj != null)
{
int loopMax = FIELD_AppProcessOption_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_JobApplication.get (FIELD_AppProcessOption);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_AppProcessOption_Validators[v].checkAttribute (this, FIELD_AppProcessOption, metadata, newAppProcessOptionObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_AppProcessOption () != FieldWriteability.FALSE, "Field AppProcessOption is not writeable");
preAppProcessOptionChange (newAppProcessOption);
markFieldChange (FIELD_AppProcessOption);
_AppProcessOption = newAppProcessOption;
postFieldChange (FIELD_AppProcessOption);
postAppProcessOptionChange ();
}
}
/**
......@@ -1736,6 +1858,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = sourceJobApplication._ApplicationStatus;
_SubmittedDate = sourceJobApplication._SubmittedDate;
_IsSelected = sourceJobApplication._IsSelected;
_AppProcessOption = sourceJobApplication._AppProcessOption;
}
}
......@@ -1801,6 +1924,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
_ApplicationStatus = (ApplicationStatus)(HELPER_ApplicationStatus.readExternal (_ApplicationStatus, vals.get(FIELD_ApplicationStatus))); //
_SubmittedDate = (Date)(HELPER_SubmittedDate.readExternal (_SubmittedDate, vals.get(FIELD_SubmittedDate))); //
_IsSelected = (Boolean)(HELPER_IsSelected.readExternal (_IsSelected, vals.get(FIELD_IsSelected))); //
_AppProcessOption = (AppProcessOption)(HELPER_AppProcessOption.readExternal (_AppProcessOption, vals.get(FIELD_AppProcessOption))); //
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_AssessmentCriteriaAnswers.readExternalData(vals.get(MULTIPLEREFERENCE_AssessmentCriteriaAnswers));
......@@ -1821,6 +1945,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
vals.put (FIELD_ApplicationStatus, HELPER_ApplicationStatus.writeExternal (_ApplicationStatus));
vals.put (FIELD_SubmittedDate, HELPER_SubmittedDate.writeExternal (_SubmittedDate));
vals.put (FIELD_IsSelected, HELPER_IsSelected.writeExternal (_IsSelected));
vals.put (FIELD_AppProcessOption, HELPER_AppProcessOption.writeExternal (_AppProcessOption));
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (MULTIPLEREFERENCE_AssessmentCriteriaAnswers, _AssessmentCriteriaAnswers.writeExternalData());
......@@ -1871,6 +1996,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
super.visitAttributes (visitor);
visitor.visitField(this, FIELD_IsSelected, HELPER_IsSelected.toObject(getIsSelected()));
visitor.visitField(this, FIELD_AppProcessOption, HELPER_AppProcessOption.toObject(getAppProcessOption()));
}
......@@ -2165,6 +2291,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{
return HELPER_IsSelected.toObject (getIsSelected ());
}
else if (attribName.equals (FIELD_AppProcessOption))
{
return HELPER_AppProcessOption.toObject (getAppProcessOption ());
}
else
{
return super.getAttribute (attribName);
......@@ -2194,6 +2324,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{
return HELPER_IsSelected;
}
else if (attribName.equals (FIELD_AppProcessOption))
{
return HELPER_AppProcessOption;
}
else
{
return super.getAttributeHelper (attribName);
......@@ -2223,6 +2357,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{
setIsSelected ((Boolean)(HELPER_IsSelected.fromObject (_IsSelected, attribValue)));
}
else if (attribName.equals (FIELD_AppProcessOption))
{
setAppProcessOption ((AppProcessOption)(HELPER_AppProcessOption.fromObject (_AppProcessOption, attribValue)));
}
else
{
super.setAttribute (attribName, attribValue);
......@@ -2279,6 +2417,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{
return getWriteability_IsSelected ();
}
else if (fieldName.equals (FIELD_AppProcessOption))
{
return getWriteability_AppProcessOption ();
}
else
{
return super.getWriteable (fieldName);
......@@ -2309,6 +2451,11 @@ public abstract class BaseJobApplication extends BaseBusinessClass
fields.add (FIELD_IsSelected);
}
if (getWriteability_AppProcessOption () != FieldWriteability.TRUE)
{
fields.add (FIELD_AppProcessOption);
}
super.putUnwriteable (fields);
}
......@@ -2322,6 +2469,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
result.add(HELPER_ApplicationStatus.getAttribObject (getClass (), _ApplicationStatus, false, FIELD_ApplicationStatus));
result.add(HELPER_SubmittedDate.getAttribObject (getClass (), _SubmittedDate, false, FIELD_SubmittedDate));
result.add(HELPER_IsSelected.getAttribObject (getClass (), _IsSelected, false, FIELD_IsSelected));
result.add(HELPER_AppProcessOption.getAttribObject (getClass (), _AppProcessOption, false, FIELD_AppProcessOption));
return result;
}
......@@ -2462,6 +2610,24 @@ public abstract class BaseJobApplication extends BaseBusinessClass
return newIsSelected;
}
/**
* Get the attribute AppProcessOption
*/
public AppProcessOption getAppProcessOption (JobApplication obj, AppProcessOption original)
{
return original;
}
/**
* Change the value set for attribute AppProcessOption.
* May modify the field beforehand
* Occurs before validation.
*/
public AppProcessOption setAppProcessOption (JobApplication obj, AppProcessOption newAppProcessOption) throws FieldException
{
return newAppProcessOption;
}
}
......@@ -2530,6 +2696,10 @@ public abstract class BaseJobApplication extends BaseBusinessClass
{
return toIsSelected ();
}
if (name.equals ("AppProcessOption"))
{
return toAppProcessOption ();
}
if (name.equals ("CV"))
{
return toCV ();
......@@ -2558,6 +2728,8 @@ public abstract class BaseJobApplication extends BaseBusinessClass
public PipeLine<From, Boolean> toIsSelected () { return pipe(new ORMAttributePipe<Me, Boolean>(FIELD_IsSelected)); }
public PipeLine<From, AppProcessOption> toAppProcessOption () { return pipe(new ORMAttributePipe<Me, AppProcessOption>(FIELD_AppProcessOption)); }
public PipeLine<From, BinaryContent> toCV () { return pipe(new ORMAttributePipe<Me, BinaryContent>(FIELD_CV)); }
public PipeLine<From, ApplicationStatus> toApplicationStatus () { return pipe(new ORMAttributePipe<Me, ApplicationStatus>(FIELD_ApplicationStatus)); }
......@@ -2604,6 +2776,11 @@ public abstract class BaseJobApplication extends BaseBusinessClass
return true;
}
if(CollectionUtils.equals(attribName, "AppProcessOption"))
{
return true;
}
return super.isTransientAttrib(attribName);
}
......
......@@ -8,6 +8,8 @@ import oneit.objstore.rdbms.filters.IsNotNullFilter;
import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException;
import performa.orm.types.AppProcessOption;
import performa.orm.types.ApplicationStatus;
import performa.orm.types.CriteriaType;
......@@ -185,4 +187,34 @@ public class JobApplication extends BaseJobApplication
{
return 95;
}
public List<AppProcessOption> getValidProcessOptions()
{
List<AppProcessOption> options = new ArrayList<>();
if(getApplicationStatus() == ApplicationStatus.SUBMITTED)
{
options.add(AppProcessOption.TO_SHORTLIST);
}
else if(getApplicationStatus() == ApplicationStatus.SHORTLISTED)
{
options.add(AppProcessOption.REMOVE_FROM_SHORTLIST);
}
return options;
}
public String getApplicantStatusStr()
{
if(getApplicationStatus() == ApplicationStatus.SUBMITTED)
{
return "Applicant";
}
else
{
return getApplicationStatus().getDescription();
}
}
}
\ No newline at end of file
......@@ -10,6 +10,7 @@
<MULTIPLEREFERENCE name="ProfileAssessmentAnswers" type="Answer" backreferenceName="JobApplication" />
<TRANSIENT name="IsSelected" type="Boolean" defaultValue="Boolean.FALSE"/>
<TRANSIENT name="AppProcessOption" type="AppProcessOption" attribHelper="EnumeratedAttributeHelper"/>
<TABLE name="tl_job_application" tablePrefix="object" polymorphic="FALSE">
......
package performa.orm.types;
import java.util.*;
import oneit.utils.*;
/**
* This class was generated using constGen.bat.
* DO NOT MODIFY THIS CODE.
* Edit the associated .xml file, and regenerate this file
* constGen (directory) (file minus extension)
* e.g. constGen C:\...\sql FieldType
*/
public class AppProcessOption extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_AppProcessOption = new AppProcessOptionFactory();
public static final AppProcessOption TO_SHORTLIST = new AppProcessOption ("TO_SHORTLIST", "TO_SHORTLIST", "To Shortlist", false);
public static final AppProcessOption REMOVE_FROM_SHORTLIST = new AppProcessOption ("REMOVE_FROM_SHORTLIST", "REMOVE_FROM_SHORTLIST", "Remove From Shortlist", false);
private static final AppProcessOption[] allAppProcessOptions =
new AppProcessOption[] { TO_SHORTLIST,REMOVE_FROM_SHORTLIST};
private static AppProcessOption[] getAllAppProcessOptions ()
{
return allAppProcessOptions;
}
private AppProcessOption (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allAppProcessOptions);
static
{
defineAdditionalData ();
}
public boolean isEqual (AppProcessOption other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return AppProcessOption.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return AppProcessOption.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_AppProcessOption;
}
public static AppProcessOption forName (String name)
{
if (name == null) { return null; }
AppProcessOption[] all = getAllAppProcessOptions();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static AppProcessOption forValue (String value)
{
if (value == null) { return null; }
AppProcessOption[] all = getAllAppProcessOptions();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllAppProcessOptions (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllAppProcessOptions());
}
public static AppProcessOption[] getAppProcessOptionArray ()
{
return (AppProcessOption[])getAllAppProcessOptions().clone ();
}
public static void defineAdditionalData ()
{
}
static class AppProcessOptionFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return AppProcessOption.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return AppProcessOption.forValue (name);
}
public Enumeration getAll ()
{
return AppProcessOption.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="AppProcessOption">
<VALUE name="TO_SHORTLIST" value="TO_SHORTLIST" description="To Shortlist"/>
<VALUE name="REMOVE_FROM_SHORTLIST" value="REMOVE_FROM_SHORTLIST" description="Remove From Shortlist"/>
</CONSTANT>
</ROOT>
......@@ -28,6 +28,7 @@
<FORM name="*.loadJobFromTemplate" factory="Participant" class="performa.form.LoadJobFromTemplateFP"/>
<FORM name="*.loadRequirementsFromTemplate" factory="Participant" class="performa.form.LoadRequirementsFromTemplateFP"/>
<FORM name="*.loadCultureFromTemplate" factory="Participant" class="performa.form.LoadCultureFromTemplateFP"/>
<FORM name="*.changeApplicationStatus" factory="Participant" class="performa.form.ChangeApplicationStatusFP"/>
</NODE>
<NODE name="job_assessment_criteria_add_jsp" factory="Participant">
......
......@@ -51,7 +51,7 @@
String culture = FormatUtils.stringify(jobApplication.getCulturePercentage(), "PercentageWholeNumber", "0");
String criteria = FormatUtils.stringify(jobApplication.getCriteriaPercentage(), "PercentageWholeNumber", "0");
%>
<div class="appli-row">
<div class="appli-row" id="<%= jobApplication.getID() %>">
<div class="appli-checkbox appli-l eq-second-height">
<div class="checkbox-list">
<oneit:ormInput obj="<%= jobApplication %>" id="<%= jobApplication.getID().toString()%>" attributeName="IsSelected" type="checkbox"/>
......@@ -62,7 +62,9 @@
</div>
<div class="appli-list-name appli-l eq-second-height">
<oneit:toString value="<%= jobApplication.getCandidate() %>" mode="EscapeHTML" />
<div class="appli-int-status">Shortlisted</div>
<div class="appli-int-status">
<oneit:toString value="<%= jobApplication.getApplicantStatusStr() %>" mode="EscapeHTML" />
</div>
</div>
<div class="appli-jcs appli-l eq-second-height">
<span class="appli-view-bar">
......@@ -100,11 +102,16 @@
<oneit:toString value="<%= jobApplication.getOverallSuitability() %>" mode="Integer" />
</div>
<div class="appli-list-drop">
<select class="form-control">
<option>Interview</option>
</select>
<oneit:ormEnum obj="<%= jobApplication %>" attributeName="AppProcessOption" cssClass="form-control app-process"
enums="<%= jobApplication.getValidProcessOptions() %>"/>
</div>
</div>
<oneit:button name="changeApplicationStatus" value=" " cssClass="<%= "save-application" + jobApplication.getID().toString() + " hidden"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", currentPage)
.mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry ("attribNamesToRestore", Collections.singleton("Job"))
.mapEntry("JobApplication", jobApplication)
.toMap() %>" />
</div>
<%
j++;
......
......@@ -65,10 +65,6 @@
<%
for (JobStatus status : JobStatus.getJobStatusArray())
{
if(status == JobStatus.FILLED)
{
continue;
}
%>
<li class="<%= (jobStatus != null && jobStatus == status ? "active" : "" )%>">
<oneit:button value="<%= status.getDescription() %>" name="gotoPage" skin="link"
......
......@@ -54,6 +54,12 @@
$(document).ready(function()
{
recalcFunction = setupRecalc ($("form"), {'recalcOnError':true});
$(".app-process").change(function()
{
var id = $(this).closest('.appli-row').attr('id');
$('.save-application' + id).click();
});
});
function gotoEditApplication (id) {
......
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