Commit 37ade20a by Nilu

S12519869 # Client - Incoming Issues (raised by Client) #The Showing filter does…

S12519869 # Client - Incoming Issues (raised by Client) #The Showing filter does not use correct values
parent e68f73e6
...@@ -649,4 +649,20 @@ public class Job extends BaseJob ...@@ -649,4 +649,20 @@ public class Job extends BaseJob
return pipelineJob().toWorkFlows(filter).uniqueVals(); return pipelineJob().toWorkFlows(filter).uniqueVals();
} }
public List<JobApplication> filterEssentialRequirements(boolean meetsRequirements, List<JobApplication> applicantList)
{
List<JobApplication> filteredList = new ArrayList();
for (JobApplication application : applicantList)
{
boolean failed = application.hasFailedEssentialRequirements();
if((meetsRequirements && !failed) || (!meetsRequirements && failed))
{
filteredList.add(application);
}
}
return filteredList;
}
} }
\ No newline at end of file
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 ApplicationFilter extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_ApplicationFilter = new ApplicationFilterFactory();
public static final ApplicationFilter ALL_APPLICATIONS = new ApplicationFilter ("ALL_APPLICATIONS", "ALL_APPLICATIONS", "All Applicants", false);
public static final ApplicationFilter HAS_REQ = new ApplicationFilter ("HAS_REQ", "HAS_REQ", "Requirements", false);
public static final ApplicationFilter NO_REQ = new ApplicationFilter ("NO_REQ", "NO_REQ", "Requirements", false);
private static final ApplicationFilter[] allApplicationFilters =
new ApplicationFilter[] { ALL_APPLICATIONS,HAS_REQ,NO_REQ};
private static ApplicationFilter[] getAllApplicationFilters ()
{
return allApplicationFilters;
}
private ApplicationFilter (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allApplicationFilters);
static
{
defineAdditionalData ();
}
public boolean isEqual (ApplicationFilter other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return ApplicationFilter.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return ApplicationFilter.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_ApplicationFilter;
}
public static ApplicationFilter forName (String name)
{
if (name == null) { return null; }
ApplicationFilter[] all = getAllApplicationFilters();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static ApplicationFilter forValue (String value)
{
if (value == null) { return null; }
ApplicationFilter[] all = getAllApplicationFilters();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllApplicationFilters (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllApplicationFilters());
}
public static ApplicationFilter[] getApplicationFilterArray ()
{
return (ApplicationFilter[])getAllApplicationFilters().clone ();
}
public static void defineAdditionalData ()
{
}
static class ApplicationFilterFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return ApplicationFilter.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return ApplicationFilter.forValue (name);
}
public Enumeration getAll ()
{
return ApplicationFilter.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="ApplicationFilter">
<VALUE name="ALL_APPLICATIONS" description="All Applicants"/>
<VALUE name="HAS_REQ" description="Requirements"/>
<VALUE name="NO_REQ" description="Requirements"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
...@@ -8,12 +8,15 @@ ...@@ -8,12 +8,15 @@
<% <%
Job job = (Job) process.getAttribute("Job"); Job job = (Job) process.getAttribute("Job");
AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption"); AppSortOption appSortOpt = (AppSortOption) getData(request, "SortOption");
ApplicationStatus appStatus = (ApplicationStatus) getData(request, "AppStatus");
ApplicationStatus workflowStatus = (ApplicationStatus) getData(request, "WorkFlowStatus"); ApplicationStatus workflowStatus = (ApplicationStatus) getData(request, "WorkFlowStatus");
ApplicationFilter appFilter = (ApplicationFilter) getData(request, "ApplicationFilter");
Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE; Boolean showOrderBy = getData(request, "ShowOrderBy")!= null ? (Boolean) getData(request, "ShowOrderBy") : Boolean.FALSE;
boolean showList = (boolean) getData(request, "ShowList"); boolean showList = (boolean) getData(request, "ShowList");
SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant"); SearchApplicant searchApplicant = (SearchApplicant) getData(request, "SearchApplicant");
String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID(); String applicantsPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS) + "&JobID=" + job.getID() + "&WorkFlowStatus=" + workflowStatus.getName();
List<WorkFlow> sortedWorkFlows = ObjstoreUtils.sort(job.getApplicantWFs(),
new ObjectTransform[]{WorkFlow.pipesWorkFlow().toSortOrder()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST});
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -55,12 +58,12 @@ ...@@ -55,12 +58,12 @@
<span class="appli-order-label">Bulk Update</span> <span class="appli-order-label">Bulk Update</span>
<div class="wider-select bullk-app-process"> <div class="wider-select bullk-app-process">
<tagfile:ormsingleasso_select obj="<%= job %>" assocName="AppStatusWorkFlow" cssClass="form-control app-process" id="AppProcessOption" <tagfile:ormsingleasso_select obj="<%= job %>" assocName="AppStatusWorkFlow" cssClass="form-control app-process" id="AppProcessOption"
options="<%= job.getWorkFlowsSet().toArray(new WorkFlow[0]) %>"/> options="<%= sortedWorkFlows.toArray(new WorkFlow[0]) %>"/>
</div> </div>
<oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link" <oneit:button name="bulkupdate" value=" " cssClass="bulk-update" skin="link"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage) requestAttribs="<%= CollectionUtils.mapEntry("nextPage", applicantsPage)
.mapEntry ("restartProcess", Boolean.TRUE) .mapEntry ("restartProcess", Boolean.TRUE)
.mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", appStatus).mapEntry("Job", job).toMap()) .mapEntry("procParams", CollectionUtils.mapEntry("WorkFlowStatus", workflowStatus).mapEntry("Job", job).toMap())
.mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"}))) .mapEntry ("attribNamesToRestore", new HashSet<String> (Arrays.asList(new String[] {"Job", "WorkFlowStatus"})))
.mapEntry("Job", job) .mapEntry("Job", job)
.toMap() %>" /> .toMap() %>" />
...@@ -110,33 +113,22 @@ ...@@ -110,33 +113,22 @@
<% <%
} }
%> %>
<% <div class="shorting-dropdown">
if(workflowStatus == ApplicationStatus.SUBMITTED) <span class="appli-order-label">Showing</span>
{ <select class="form-control" onChange="location=this.value">
%> <%
<div class="shorting-dropdown"> for (ApplicationFilter applicationFilter : ApplicationFilter.getApplicationFilterArray())
<span class="appli-order-label">Showing</span> {
<select class="form-control" onChange="location=this.value"> String optionLink = applicantsPage + "&ApplicationFilter=" + applicationFilter.getName();
<option <%= (appStatus == null ? "selected" : "" )%> value="<%= applicantsPage + "&ApplicationStatus" %>"> %>
<oneit:toString value="All Applicants" mode="EscapeHTML"/> <option <%= (appFilter != null && appFilter == applicationFilter ? "selected" : "" )%> value="<%= optionLink %>">
</option> <oneit:toString value="<%= applicationFilter.getName() %>" mode="EscapeHTML"/>
<% </option>
for (WorkFlow workflow : job.getSortedWorkFlows()) <%
{ }
ApplicationStatus status = workflow.getApplicationStatus(); %>
String optionLink = applicantsPage + "&ApplicationStatus=" + status.getName(); </select>
%> </div>
<option <%= (appStatus != null && appStatus == status ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= workflow.getName() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div>
<%
}
%>
</div> </div>
<div class="checkbox-list select-all"> <div class="checkbox-list select-all">
<input type='checkbox' id='select_all' value='select_all' class='norecalc'> <input type='checkbox' id='select_all' value='select_all' class='norecalc'>
......
...@@ -22,13 +22,12 @@ ...@@ -22,13 +22,12 @@
String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS); String currentPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICANTS);
String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION); String applicationPage = WebUtils.getSamePageInRenderMode(request, WebUtils.VIEW_APPLICATION);
AppSortOption appSortOpt = null; AppSortOption appSortOpt = null;
ApplicationStatus appStatus = null; ApplicationFilter appFilter = null;
ApplicationStatus workflowStatus = process.getAttribute("WorkFlowStatus") != null ? (ApplicationStatus) process.getAttribute("WorkFlowStatus") : ApplicationStatus.SUBMITTED; ApplicationStatus workflowStatus = null;
boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true; boolean showList = process.getAttribute("ShowList") != null ? (boolean) process.getAttribute("ShowList") : true;
SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true); SearchApplicant searchApplicant = (SearchApplicant) RunSearchExecutorFP.setupExecutor(request, SearchApplicant.REFERENCE_SearchApplicant, true);
JobApplication[] applications = null; JobApplication[] applications = null;
Map<String, String[]> parameterMap = request.getParameterMap(); Map<String, String[]> parameterMap = request.getParameterMap();
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
searchApplicant.setJob(job); searchApplicant.setJob(job);
...@@ -58,33 +57,55 @@ ...@@ -58,33 +57,55 @@
appSortOpt = AppSortOption.RANK; appSortOpt = AppSortOption.RANK;
} }
// handle application status // handle workflow status
if(isApplicantPage && parameterMap.containsKey("ApplicationStatus")) if(parameterMap.containsKey("WorkFlowStatus") && !request.getParameter("WorkFlowStatus").isEmpty())
{ {
if(!request.getParameter("ApplicationStatus").isEmpty()) workflowStatus = ApplicationStatus.forName((String) request.getParameter("WorkFlowStatus"));
{
appStatus = ApplicationStatus.forName((String) request.getParameter("ApplicationStatus"));
}
} }
else if(process.getAttribute("ApplicationStatus") != null) else if(process.getAttribute("WorkFlowStatus") != null)
{ {
appStatus = (ApplicationStatus) process.getAttribute("ApplicationStatus"); workflowStatus = (ApplicationStatus) process.getAttribute("WorkFlowStatus");
}
else
{
workflowStatus = ApplicationStatus.SUBMITTED;
}
boolean isApplicantPage = workflowStatus == ApplicationStatus.SUBMITTED;
// handle application filter (showing dropdown)
if(parameterMap.containsKey("ApplicationFilter") && !request.getParameter("ApplicationFilter").isEmpty())
{
appFilter = ApplicationFilter.forName((String) request.getParameter("ApplicationFilter"));
}
else if(process.getAttribute("ApplicationFilter") != null)
{
appFilter = (ApplicationFilter) process.getAttribute("ApplicationFilter");
}
else
{
appFilter = ApplicationFilter.ALL_APPLICATIONS;
} }
List<JobApplication> applicantList = Arrays.asList(applications); List<JobApplication> applicantList = Arrays.asList(applications);
WorkFlow workflow = job.getWorkFlowByStatus(workflowStatus); WorkFlow workflow = job.getWorkFlowByStatus(workflowStatus);
// filter applicants by status // filter applicants by status
oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(isApplicantPage ? appStatus : workflowStatus)); oneit.utils.filter.Filter<JobApplication> filter = JobApplication.SearchByAll().andApplicationStatus(new EqualsFilter<>(workflowStatus));
oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT)); oneit.utils.filter.Filter<JobApplication> applicantFilter = JobApplication.SearchByAll().andApplicationStatus(new NotEqualsFilter<>(ApplicationStatus.DRAFT));
// if Applicant Status, then show all application completed applicants // if Applicant Status, then show all application completed applicants
applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, appStatus == null && isApplicantPage ? applicantFilter : filter)); applicantList = new ArrayList<>(CollectionFilter.filter(applicantList, isApplicantPage ? applicantFilter : filter));
if(appFilter != ApplicationFilter.ALL_APPLICATIONS)
{
applicantList = job.filterEssentialRequirements(appFilter == ApplicationFilter.HAS_REQ , applicantList);
}
List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt); List<JobApplication> sortedApplications = Utils.getApplicationsSorted(applicantList, appSortOpt);
process.setAttribute("AppSortOption", appSortOpt); process.setAttribute("AppSortOption", appSortOpt);
process.setAttribute("ApplicationStatus", appStatus); process.setAttribute("ApplicationFilter", appFilter);
process.setAttribute("WorkFlowStatus", workflowStatus); process.setAttribute("WorkFlowStatus", workflowStatus);
process.setAttribute("ShowList", showList); process.setAttribute("ShowList", showList);
%> %>
...@@ -105,7 +126,7 @@ ...@@ -105,7 +126,7 @@
ShowList="<%= showList %>" ShowList="<%= showList %>"
SearchApplicant="<%= searchApplicant %>" SearchApplicant="<%= searchApplicant %>"
ShowOrderBy="<%= sortedApplications.size() > 1 %>" ShowOrderBy="<%= sortedApplications.size() > 1 %>"
AppStatus="<%= appStatus %>" ApplicationFilter="<%= appFilter %>"
WorkFlowStatus="<%= workflowStatus %>" WorkFlowStatus="<%= workflowStatus %>"
SortOption="<%= appSortOpt %>" SortOption="<%= appSortOpt %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/> data="<%= CollectionUtils.EMPTY_MAP%>"/>
......
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