Commit 8cd9d7f8 by chenith Committed by Harsh Shah

Create Job Application in application_outline.

parent 3f9aa707
......@@ -50,6 +50,7 @@ public abstract class BaseJobApplication extends BaseBusinessClass
// Static constants corresponding to searches
public static final String SEARCH_All = "All";
public static final String SEARCH_CandidateJob = "CandidateJob";
// Static constants corresponding to attribute helpers
......@@ -1454,6 +1455,87 @@ public abstract class BaseJobApplication extends BaseBusinessClass
.search (transaction);
}
public static SearchCandidateJob SearchByCandidateJob () { return new SearchCandidateJob (); }
public static class SearchCandidateJob extends SearchObject<JobApplication>
{
public SearchCandidateJob byCandidate (Candidate Candidate)
{
by ("Candidate", Candidate);
return this;
}
public SearchCandidateJob byJob (Job Job)
{
by ("Job", Job);
return this;
}
public SearchCandidateJob andObjectID (QueryFilter<Long> filter)
{
filter.addFilter (context, "tl_job_application.object_id", FIELD_ObjectID);
return this;
}
public SearchCandidateJob andObjectCreated (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job_application.object_created_date", FIELD_ObjectCreated);
return this;
}
public SearchCandidateJob andObjectLastModified (QueryFilter<Date> filter)
{
filter.addFilter (context, "tl_job_application.object_last_updated_date", FIELD_ObjectLastModified);
return this;
}
public SearchCandidateJob andCV (QueryFilter<BinaryContent> filter)
{
filter.addFilter (context, "tl_job_application.cv", "CV");
return this;
}
public SearchCandidateJob andCandidate (QueryFilter<Candidate> filter)
{
filter.addFilter (context, "tl_job_application.candidate_id", "Candidate");
return this;
}
public SearchCandidateJob andJob (QueryFilter<Job> filter)
{
filter.addFilter (context, "tl_job_application.job_id", "Job");
return this;
}
public JobApplication search (ObjectTransaction transaction) throws StorageException
{
BaseBusinessClass[] results = super.search (transaction, REFERENCE_JobApplication, SEARCH_CandidateJob, criteria);
Set<JobApplication> typedResults = new LinkedHashSet <JobApplication> ();
for (BaseBusinessClass bbcResult : results)
{
JobApplication aResult = (JobApplication)bbcResult;
typedResults.add (aResult);
}
return (JobApplication)singletonResult(ObjstoreUtils.removeDeleted(transaction, typedResults).toArray(new BaseBusinessClass[0]), "JobApplication", "");
}
}
public static JobApplication searchCandidateJob (ObjectTransaction transaction, Candidate Candidate, Job Job) throws StorageException
{
return SearchByCandidateJob ()
.byCandidate (Candidate)
.byJob (Job)
.search (transaction);
}
public Object getAttribute (String attribName)
......
......@@ -18,6 +18,11 @@
<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">
<PARAM name="Candidate" type="Candidate" transform="Candidate.getObjectID()" paramFilter="candidate_id = ${Candidate} " />
<PARAM name="Job" type="Job" transform="Job.getObjectID()" paramFilter="job_id = ${Job}" />
</SEARCH>
</BUSINESSCLASS>
</ROOT>
\ No newline at end of file
......@@ -275,6 +275,10 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
{
throw new RuntimeException ("NOT implemented: executeSearchQueryAll");
}
public ResultSet executeSearchQueryCandidateJob (SQLManager sqlMgr, Candidate Candidate, Job Job) throws SQLException
{
throw new RuntimeException ("NOT implemented: executeSearchQueryCandidateJob");
}
......@@ -424,6 +428,68 @@ public class JobApplicationPersistenceMgr extends ObjectPersistenceMgr
return results;
}
else if (searchType.equals (JobApplication.SEARCH_CandidateJob))
{
// Local scope for transformed variables
{
if (criteria.containsKey("Candidate"))
{
Candidate Candidate = (Candidate)(criteria.get("Candidate"));
criteria.put ("Candidate", Candidate.getObjectID());
}
if (criteria.containsKey("Job"))
{
Job Job = (Job)(criteria.get("Job"));
criteria.put ("Job", Job.getObjectID());
}
}
String orderBy = " ";
String tables = " ";
Set<String> joinTableSet = new HashSet<String>();
String filter;
Object[] searchParams; // paramFilter: tl_job_application.object_id is not null
String preFilter = "(tl_job_application.object_id is not null)"
+ " ";
if (criteria.containsKey("Candidate"))
{
preFilter += " AND (candidate_id = ${Candidate} ) ";
preFilter += "";
}
if (criteria.containsKey("Job"))
{
preFilter += " AND (job_id = ${Job}) ";
preFilter += "";
}
preFilter += context.getLoadingAttributes ().getCustomSQL() ;
SearchParamTransform tx = new SearchParamTransform (criteria);
filter = StringUtils.replaceParams (preFilter, tx);
searchParams = tx.getParamsArray();
Integer maxRows = context.getLoadingAttributes ().getMaxRows ();
boolean truncateExtra = !context.getLoadingAttributes ().isFailIfMaxExceeded();
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}tl_job_application " + tables + tableSetToSQL(joinTableSet) +
"WHERE " + SELECT_JOINS + " " + filter + orderBy;
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, searchParams, maxRows, truncateExtra);
return results;
}
else
{
......
......@@ -5,10 +5,21 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = (process == null ? ObjectTransaction.getTransaction () : process.getTransaction ());
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
Job job = (Job) process.getAttribute("Job");
Candidate candidate = (Candidate) process.getAttribute("Candidate");
JobApplication jobApplication = JobApplication.searchCandidateJob(objTran, candidate, job);
if(jobApplication==null)
{
jobApplication = JobApplication.createJobApplication(objTran);
jobApplication.setCandidate(candidate);
jobApplication.setJob(job);
}
process.setAttribute("JobApplication", jobApplication);
%>
<div class="main-application-outline">
<div class="welcome-aust-logo"><img src="images/australia-post.png" /></div>
......@@ -60,7 +71,7 @@
<span>Total time to complete: Approximately 40 minutes</span>
<oneit:button value="Begin the application" name="gotoPage" skin="link" cssClass="box-btn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.mapEntry("procParams", CollectionUtils.mapEntry("JobApplication", jobApplication).toMap())
.toMap() %>"/>
</div>
</oneit:form>
......
......@@ -5,10 +5,10 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = (process == null ? ObjectTransaction.getTransaction () : process.getTransaction ());
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "SelectionCriteria");
Job job = (Job) process.getAttribute("Job");
SecUser loggedInUser = SecUser.getTXUser(objTran);
JobApplication jobApplication = (JobApplication) process.getAttribute("JobApplication");
Job job = jobApplication.getJob();
%>
<script>
......
......@@ -5,7 +5,7 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = (process == null ? ObjectTransaction.getTransaction () : process.getTransaction ());
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "VerifyIdentity");
Job job = (Job) process.getAttribute("Job");
......
......@@ -5,7 +5,7 @@
<oneit:dynIncluded>
<%
ObjectTransaction objTran = (process == null ? ObjectTransaction.getTransaction () : process.getTransaction ());
ObjectTransaction objTran = process.getTransaction ();
String nextPage = WebUtils.getSamePageInRenderMode(request, "ApplicationOutline");
Job job = (Job) process.getAttribute("Job");
SecUser secUser = SecUser.searchNAME(objTran, job.getEmail());
......
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