Commit ad6d3de0 by Harsh Shah

Review changes

parent 5348c027
......@@ -14,6 +14,8 @@
<column name="job_application_id" type="Long" length="11" nullable="false"/>
</NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_assessment_criteria_answer" indexName="idx_tl_assessment_criteria_answer_assessment_criteria_id" isUnique="false"><column name="assessment_criteria_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_assessment_criteria_answer" indexName="idx_tl_assessment_criteria_answer_job_application_id" isUnique="false"><column name="job_application_id"/></NODE>
</NODE></OBJECTS>
\ No newline at end of file
......@@ -13,6 +13,8 @@
<column name="job_application_id" type="Long" length="11" nullable="false"/>
</NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_culture_criteria_answer" indexName="idx_tl_culture_criteria_answer_culture_criteria_id" isUnique="false"><column name="culture_criteria_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_culture_criteria_answer" indexName="idx_tl_culture_criteria_answer_job_application_id" isUnique="false"><column name="job_application_id"/></NODE>
</NODE></OBJECTS>
\ No newline at end of file
......@@ -24,5 +24,8 @@ ALTER TABLE tl_assessment_criteria_answer ADD
CREATE INDEX idx_tl_assessment_criteria_answer_assessment_criteria_id
ON tl_assessment_criteria_answer (assessment_criteria_id);
CREATE INDEX idx_tl_assessment_criteria_answer_job_application_id
ON tl_assessment_criteria_answer (job_application_id);
......@@ -23,5 +23,8 @@ ALTER TABLE tl_culture_criteria_answer ADD
CREATE INDEX idx_tl_culture_criteria_answer_culture_criteria_id
ON tl_culture_criteria_answer (culture_criteria_id);
CREATE INDEX idx_tl_culture_criteria_answer_job_application_id
ON tl_culture_criteria_answer (job_application_id);
......@@ -25,5 +25,8 @@ ALTER TABLE tl_assessment_criteria_answer ADD
CREATE INDEX idx_tl_assessment_criteria_answer_assessment_criteria_id
ON tl_assessment_criteria_answer (assessment_criteria_id);
CREATE INDEX idx_tl_assessment_criteria_answer_job_application_id
ON tl_assessment_criteria_answer (job_application_id);
......@@ -24,5 +24,8 @@ ALTER TABLE tl_culture_criteria_answer ADD
CREATE INDEX idx_tl_culture_criteria_answer_culture_criteria_id
ON tl_culture_criteria_answer (culture_criteria_id);
CREATE INDEX idx_tl_culture_criteria_answer_job_application_id
ON tl_culture_criteria_answer (job_application_id);
......@@ -25,5 +25,8 @@ ALTER TABLE tl_assessment_criteria_answer ADD
CREATE INDEX idx_tl_assessment_criteria_answer_assessment_criteria_id
ON tl_assessment_criteria_answer (assessment_criteria_id);
CREATE INDEX idx_tl_assessment_criteria_answer_job_application_id
ON tl_assessment_criteria_answer (job_application_id);
......@@ -24,5 +24,8 @@ ALTER TABLE tl_culture_criteria_answer ADD
CREATE INDEX idx_tl_culture_criteria_answer_culture_criteria_id
ON tl_culture_criteria_answer (culture_criteria_id);
CREATE INDEX idx_tl_culture_criteria_answer_job_application_id
ON tl_culture_criteria_answer (job_application_id);
......@@ -12,16 +12,6 @@ import performa.orm.Job;
public class SignInCandidateFP extends NavigationFP
{
@Override
public SuccessfulResult processForm(SubmissionDetails submission, Map params) throws BusinessException
{
HttpServletRequest request = submission.getRequest();
Job job = (Job) request.getAttribute("Job");
return super.processForm(submission, params);
}
@Override
protected Map validate(SubmissionDetails submission, MultiException exceptions)
{
HttpServletRequest request = submission.getRequest();
......
......@@ -17,29 +17,25 @@ public class Answer extends BaseAnswer
// Do not add any code to this, always put it in initialiseNewObject
}
// @Override
// public String getObjectIDSpace()
// {
// return "Answer";
// }
@Override
protected void postAnswerNoChange() throws FieldException
{
super.postAnswerNoChange();
Question rightQuestion = this.getQuestion().getRightQuestion();
if(getQuestion() != null)
{
Question rightQuestion = getQuestion().getRightQuestion();
if(rightQuestion!=null)
if(rightQuestion != null)
{
Filter<Answer> filter = Answer.SearchByAll().andQuestion(new EqualsFilter<>(rightQuestion));
Answer rightAnswer = CollectionFilter.getFirstMatch(this.getJobApplication().getProfileAssessmentAnswersSet(), filter);
Answer rightAnswer = CollectionFilter.getFirstMatch(getJobApplication().getProfileAssessmentAnswersSet(), filter);
if(rightAnswer!=null)
{
rightAnswer.setAnswerNo(this.calculateRightAnswerNo());
rightAnswer.setAnswerNo(calculateRightAnswerNo());
}
}
}
}
......@@ -47,11 +43,10 @@ public class Answer extends BaseAnswer
public Integer calculateRightAnswerNo()
{
if(this.getAnswerNo()!=null)
if(getAnswerNo()!=null)
{
return MAX_ANSWER_NO - this.getAnswerNo();
return MAX_ANSWER_NO - getAnswerNo();
}
return null;
}
}
\ No newline at end of file
......@@ -5,6 +5,8 @@
<BUSINESSCLASS name="AssessmentCriteria" package="performa.orm">
<IMPORT value="performa.orm.types.*"/>
<MULTIPLEREFERENCE name="Answers" type="AssessmentCriteriaAnswer" backreferenceName="AssessmentCriteria"/>
<TABLE name="tl_assessment_criteria" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Name" type="String" dbcol="name" length="200" mandatory="true"/>
......
......@@ -16,8 +16,19 @@ public class AssessmentCriteriaAnswer extends BaseAssessmentCriteriaAnswer
@Override
public boolean filterCriteriaType(CriteriaType CriteriaType) throws StorageException
public boolean filterCriteriaType(CriteriaType criteriaType) throws StorageException
{
return Boolean.TRUE;
return checkCriteriaTypeMatches(criteriaType);
}
@Override
public boolean filterByCriteriaType(CriteriaType criteriaType) throws StorageException
{
return checkCriteriaTypeMatches(criteriaType);
}
private boolean checkCriteriaTypeMatches(CriteriaType criteriaType)
{
return (criteriaType == null ? true : (getAssessmentCriteria() != null && (getAssessmentCriteria().getCriteriaType() == criteriaType))); //Should bypass condition if input param is null
}
}
\ No newline at end of file
......@@ -10,18 +10,18 @@
<ATTRIB name="Answer" type="Boolean" dbcol="answer" mandatory="true"/>
<ATTRIB name="Notes" type="String" dbcol="notes"/>
<SINGLEREFERENCE name="AssessmentCriteria" type="AssessmentCriteria" dbcol="assessment_criteria_id" mandatory="true" />
<SINGLEREFERENCE name="AssessmentCriteria" type="AssessmentCriteria" dbcol="assessment_criteria_id" mandatory="true" backreferenceName="Answers"/>
<SINGLEREFERENCE name="JobApplication" type="JobApplication" dbcol="job_application_id" mandatory="true" backreferenceName="AssessmentCriteriaAnswers"/>
</TABLE>
<SEARCH type="All" paramFilter="tl_assessment_criteria_answer.object_id is not null" orderBy="tl_assessment_criteria_answer.object_id" />
<SEARCH type="CriteriaType" paramFilter="tl_assessment_criteria_answer.object_id is not null"
orderBy="tl_assessment_criteria_answer.object_id" checkTXObjects="TRUE">
<SEARCH type="CriteriaType" paramFilter="tl_assessment_criteria_answer.object_id is not null" orderBy="tl_assessment_criteria_answer.object_id"
checkTXObjects="TRUE" allowByFilter="TRUE">
<TABLE name="tl_assessment_criteria" join="tl_assessment_criteria.object_id = tl_assessment_criteria_answer.assessment_criteria_id"/>
<PARAM name="CriteriaType" type="CriteriaType" paramFilter="tl_assessment_criteria.assessment_type >= ${CriteriaType}" />
<PARAM name="CriteriaType" type="CriteriaType" paramFilter="tl_assessment_criteria.assessment_type = ${CriteriaType}" />
</SEARCH>
</BUSINESSCLASS>
......
......@@ -145,6 +145,16 @@ public class AssessmentCriteriaAnswerPersistenceMgr extends ObjectPersistenceMgr
{
throw new RuntimeException ();
}
else if (refName.equals (AssessmentCriteriaAnswer.SINGLEREFERENCE_AssessmentCriteria))
{
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}tl_assessment_criteria_answer " +
"WHERE " + SELECT_JOINS + "assessment_criteria_id = ?";
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, new Object[] { _objectID.longID () }, null, false);
return results;
}
else if (refName.equals (AssessmentCriteriaAnswer.SINGLEREFERENCE_JobApplication))
{
String query = "SELECT " + SELECT_COLUMNS +
......@@ -442,7 +452,7 @@ public class AssessmentCriteriaAnswerPersistenceMgr extends ObjectPersistenceMgr
if (criteria.containsKey("CriteriaType"))
{
preFilter += " AND (tl_assessment_criteria.assessment_type >= ${CriteriaType}) ";
preFilter += " AND (tl_assessment_criteria.assessment_type = ${CriteriaType}) ";
preFilter += "";
}
......
......@@ -45,6 +45,8 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public static final String FIELD_CriteriaType = "CriteriaType";
public static final String SINGLEREFERENCE_Job = "Job";
public static final String BACKREF_Job = "";
public static final String MULTIPLEREFERENCE_Answers = "Answers";
public static final String BACKREF_Answers = "";
// Static constants corresponding to searches
public static final String SEARCH_All = "All";
......@@ -67,6 +69,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
// Private attributes corresponding to multiple references
private MultipleAssociation<AssessmentCriteria, AssessmentCriteriaAnswer> _Answers;
// Map of maps of metadata
......@@ -86,10 +89,12 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
try
{
String tmp_Answers = AssessmentCriteriaAnswer.BACKREF_AssessmentCriteria;
String tmp_Job = Job.BACKREF_AssessmentCriterias;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_Answers();
setupAssocMetaData_Job();
FIELD_Name_Validators = (AttributeValidator[])setupAttribMetaData_Name(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Importance_Validators = (AttributeValidator[])setupAttribMetaData_Importance(validatorMapping).toArray (new AttributeValidator[0]);
......@@ -109,6 +114,20 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
// Meta Info setup
private static void setupAssocMetaData_Answers()
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "AssessmentCriteria");
metaInfo.put ("name", "Answers");
metaInfo.put ("type", "AssessmentCriteriaAnswer");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for AssessmentCriteria.Answers:", metaInfo);
ATTRIBUTES_METADATA_AssessmentCriteria.put (MULTIPLEREFERENCE_Answers, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Job()
{
Map metaInfo = new HashMap ();
......@@ -223,6 +242,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
super._initialiseAssociations ();
_Job = new SingleAssociation<AssessmentCriteria, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_AssessmentCriterias, Job.REFERENCE_Job, "tl_assessment_criteria");
_Answers = new MultipleAssociation<AssessmentCriteria, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_Answers, AssessmentCriteriaAnswer.SINGLEREFERENCE_AssessmentCriteria, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer);
}
......@@ -233,6 +253,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
super.initialiseReference ();
_Job = new SingleAssociation<AssessmentCriteria, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_AssessmentCriterias, Job.REFERENCE_Job, "tl_assessment_criteria");
_Answers = new MultipleAssociation<AssessmentCriteria, AssessmentCriteriaAnswer> (this, MULTIPLEREFERENCE_Answers, AssessmentCriteriaAnswer.SINGLEREFERENCE_AssessmentCriteria, AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer);
return this;
......@@ -773,6 +794,8 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
List result = super.getMultiAssocs ();
result.add("Answers");
return result;
}
......@@ -784,6 +807,11 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public BaseBusinessClass getMultiAssocReferenceInstance(String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer ;
}
return super.getMultiAssocReferenceInstance(attribName);
}
......@@ -792,6 +820,11 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public String getMultiAssocBackReference(String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return AssessmentCriteriaAnswer.SINGLEREFERENCE_AssessmentCriteria ;
}
return super.getMultiAssocBackReference(attribName);
}
......@@ -803,6 +836,11 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public int getMultiAssocCount(String attribName) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return this.getAnswersCount();
}
return super.getMultiAssocCount(attribName);
}
......@@ -814,6 +852,11 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public BaseBusinessClass getMultiAssocAt(String attribName, int index) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return this.getAnswersAt(index);
}
return super.getMultiAssocAt(attribName, index);
}
......@@ -825,6 +868,13 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public void addToMultiAssoc(String attribName, BaseBusinessClass newElement) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
addToAnswers((AssessmentCriteriaAnswer)newElement);
return;
}
super.addToMultiAssoc(attribName, newElement);
}
......@@ -835,6 +885,13 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public void removeFromMultiAssoc(String attribName, BaseBusinessClass oldElement) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
removeFromAnswers((AssessmentCriteriaAnswer)oldElement);
return;
}
super.removeFromMultiAssoc(attribName, oldElement);
}
......@@ -843,6 +900,12 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
protected void __loadMultiAssoc (String attribName, BaseBusinessClass[] elements)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
_Answers.__loadAssociation (elements);
return;
}
super.__loadMultiAssoc(attribName, elements);
}
......@@ -851,12 +914,86 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
protected boolean __isMultiAssocLoaded (String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return _Answers.isLoaded ();
}
return super.__isMultiAssocLoaded(attribName);
}
public FieldWriteability getWriteability_Answers ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
public int getAnswersCount () throws StorageException
{
assertValid();
return _Answers.getReferencedObjectsCount ();
}
public void addToAnswers (AssessmentCriteriaAnswer newElement) throws StorageException
{
if (_Answers.wouldAddChange (newElement))
{
assertValid();
Debug.assertion (getWriteability_Answers () != FieldWriteability.FALSE, "MultiAssoc Answers is not writeable (add)");
_Answers.appendElement (newElement);
try
{
if (newElement.getAssessmentCriteria () != this)
{
newElement.setAssessmentCriteria ((AssessmentCriteria)(this));
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public void removeFromAnswers (AssessmentCriteriaAnswer elementToRemove) throws StorageException
{
if (_Answers.wouldRemoveChange (elementToRemove))
{
assertValid();
Debug.assertion (getWriteability_Answers () != FieldWriteability.FALSE, "MultiAssoc Answers is not writeable (remove)");
_Answers.removeElement (elementToRemove);
try
{
if (elementToRemove.getAssessmentCriteria () != null)
{
elementToRemove.setAssessmentCriteria (null);
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public AssessmentCriteriaAnswer getAnswersAt (int index) throws StorageException
{
return (AssessmentCriteriaAnswer)(_Answers.getElementAt (index));
}
public SortedSet<AssessmentCriteriaAnswer> getAnswersSet () throws StorageException
{
return _Answers.getSet ();
}
public void onDelete ()
......@@ -877,6 +1014,12 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
}
}
for(AssessmentCriteriaAnswer referenced : CollectionUtils.reverse(getAnswersSet()))
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null AssessmentCriteria from ", getObjectID (), " to ", referenced.getObjectID ());
referenced.setAssessmentCriteria(null);
}
}
catch (Exception e)
{
......@@ -1052,6 +1195,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
{
BaseAssessmentCriteria sourceAssessmentCriteria = (BaseAssessmentCriteria)(source);
_Answers.copyFrom (sourceAssessmentCriteria._Answers, linkToGhosts);
}
}
......@@ -1078,6 +1222,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
_Importance = (Importance)(HELPER_Importance.readExternal (_Importance, vals.get(FIELD_Importance))); //
_CriteriaType = (CriteriaType)(HELPER_CriteriaType.readExternal (_CriteriaType, vals.get(FIELD_CriteriaType))); //
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_Answers.readExternalData(vals.get(MULTIPLEREFERENCE_Answers));
}
......@@ -1093,6 +1238,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
vals.put (FIELD_Importance, HELPER_Importance.writeExternal (_Importance));
vals.put (FIELD_CriteriaType, HELPER_CriteriaType.writeExternal (_CriteriaType));
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (MULTIPLEREFERENCE_Answers, _Answers.writeExternalData());
}
......@@ -1124,6 +1270,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
// Compare multiple assocs
_Answers.compare (otherAssessmentCriteria._Answers, listener);
}
}
......@@ -1145,6 +1292,7 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
visitor.visitField(this, FIELD_Importance, HELPER_Importance.toObject(getImportance()));
visitor.visitField(this, FIELD_CriteriaType, HELPER_CriteriaType.toObject(getCriteriaType()));
visitor.visitAssociation (_Job);
visitor.visitAssociation (_Answers);
}
......@@ -1157,6 +1305,10 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
{
visitor.visit (_Job);
}
if (scope.includes (_Answers))
{
visitor.visit (_Answers);
}
}
......@@ -1382,6 +1534,10 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
{
return getWriteability_CriteriaType ();
}
else if (fieldName.equals (MULTIPLEREFERENCE_Answers))
{
return getWriteability_Answers ();
}
else if (fieldName.equals (SINGLEREFERENCE_Job))
{
return getWriteability_Job ();
......@@ -1579,6 +1735,10 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
public PipeLine<From, ? extends Object> to(String name)
{
if (name.equals ("Answers"))
{
return toAnswers ();
}
if (name.equals ("Name"))
{
return toName ();
......@@ -1612,6 +1772,12 @@ public abstract class BaseAssessmentCriteria extends BaseBusinessClass
{
return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_Job, filter));
}
public AssessmentCriteriaAnswer.AssessmentCriteriaAnswerPipeLineFactory<From, AssessmentCriteriaAnswer> toAnswers () { return toAnswers(Filter.ALL); }
public AssessmentCriteriaAnswer.AssessmentCriteriaAnswerPipeLineFactory<From, AssessmentCriteriaAnswer> toAnswers (Filter<AssessmentCriteriaAnswer> filter)
{
return AssessmentCriteriaAnswer.REFERENCE_AssessmentCriteriaAnswer.new AssessmentCriteriaAnswerPipeLineFactory<From, AssessmentCriteriaAnswer> (this, new ORMMultiAssocPipe<Me, AssessmentCriteriaAnswer>(MULTIPLEREFERENCE_Answers, filter));
}
}
......@@ -1657,6 +1823,23 @@ class DummyAssessmentCriteria extends AssessmentCriteria
return Job.DUMMY_Job.getObjectID();
}
public int getAnswersCount () throws StorageException
{
return 0;
}
public AssessmentCriteriaAnswer getAnswersAt (int index) throws StorageException
{
throw new RuntimeException ("No elements in a dummy object in association Answers");
}
public SortedSet getAnswersSet () throws StorageException
{
return new TreeSet();
}
}
......@@ -43,6 +43,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
public static final String FIELD_Answer = "Answer";
public static final String FIELD_Notes = "Notes";
public static final String SINGLEREFERENCE_AssessmentCriteria = "AssessmentCriteria";
public static final String BACKREF_AssessmentCriteria = "";
public static final String SINGLEREFERENCE_JobApplication = "JobApplication";
public static final String BACKREF_JobApplication = "";
......@@ -85,6 +86,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
try
{
String tmp_AssessmentCriteria = AssessmentCriteria.BACKREF_Answers;
String tmp_JobApplication = JobApplication.BACKREF_AssessmentCriteriaAnswers;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
......@@ -112,6 +114,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "Answers");
metaInfo.put ("dbcol", "assessment_criteria_id");
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "AssessmentCriteria");
......@@ -212,7 +215,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
{
super._initialiseAssociations ();
_AssessmentCriteria = new SingleAssociation<AssessmentCriteriaAnswer, AssessmentCriteria> (this, SINGLEREFERENCE_AssessmentCriteria, null, AssessmentCriteria.REFERENCE_AssessmentCriteria, "tl_assessment_criteria_answer");
_AssessmentCriteria = new SingleAssociation<AssessmentCriteriaAnswer, AssessmentCriteria> (this, SINGLEREFERENCE_AssessmentCriteria, AssessmentCriteria.MULTIPLEREFERENCE_Answers, AssessmentCriteria.REFERENCE_AssessmentCriteria, "tl_assessment_criteria_answer");
_JobApplication = new SingleAssociation<AssessmentCriteriaAnswer, JobApplication> (this, SINGLEREFERENCE_JobApplication, JobApplication.MULTIPLEREFERENCE_AssessmentCriteriaAnswers, JobApplication.REFERENCE_JobApplication, "tl_assessment_criteria_answer");
}
......@@ -223,7 +226,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
{
super.initialiseReference ();
_AssessmentCriteria = new SingleAssociation<AssessmentCriteriaAnswer, AssessmentCriteria> (this, SINGLEREFERENCE_AssessmentCriteria, null, AssessmentCriteria.REFERENCE_AssessmentCriteria, "tl_assessment_criteria_answer");
_AssessmentCriteria = new SingleAssociation<AssessmentCriteriaAnswer, AssessmentCriteria> (this, SINGLEREFERENCE_AssessmentCriteria, AssessmentCriteria.MULTIPLEREFERENCE_Answers, AssessmentCriteria.REFERENCE_AssessmentCriteria, "tl_assessment_criteria_answer");
_JobApplication = new SingleAssociation<AssessmentCriteriaAnswer, JobApplication> (this, SINGLEREFERENCE_JobApplication, JobApplication.MULTIPLEREFERENCE_AssessmentCriteriaAnswers, JobApplication.REFERENCE_JobApplication, "tl_assessment_criteria_answer");
......@@ -476,7 +479,7 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
}
else if (assocName.equals (SINGLEREFERENCE_AssessmentCriteria))
{
return null ;
return AssessmentCriteria.MULTIPLEREFERENCE_Answers ;
}else if (assocName.equals (SINGLEREFERENCE_JobApplication))
{
return JobApplication.MULTIPLEREFERENCE_AssessmentCriteriaAnswers ;
......@@ -657,9 +660,22 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
assertValid();
Debug.assertion (getWriteability_AssessmentCriteria () != FieldWriteability.FALSE, "Assoc AssessmentCriteria is not writeable");
preAssessmentCriteriaChange (newAssessmentCriteria);
AssessmentCriteria oldAssessmentCriteria = getAssessmentCriteria ();
if (oldAssessmentCriteria != null)
{
// This is to stop validation from triggering when we are removed
_AssessmentCriteria.set (null);
oldAssessmentCriteria.removeFromAnswers ((AssessmentCriteriaAnswer)(this));
}
_AssessmentCriteria.set (newAssessmentCriteria);
if (newAssessmentCriteria != null)
{
newAssessmentCriteria.addToAnswers ((AssessmentCriteriaAnswer)(this));
}
postAssessmentCriteriaChange ();
}
}
......@@ -871,6 +887,20 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
try
{
// Ensure we are removed from any loaded multi-associations that aren't mandatory
if (_AssessmentCriteria.isLoaded () || getTransaction ().isObjectLoaded (_AssessmentCriteria.getReferencedType (), getAssessmentCriteriaID ()))
{
AssessmentCriteria referenced = getAssessmentCriteria ();
if (referenced != null)
{
// Stop the callback
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null Answers from ", getObjectID (), " to ", referenced.getObjectID ());
_AssessmentCriteria.set (null);
referenced.removeFromAnswers ((AssessmentCriteriaAnswer)this);
}
}
// Ensure we are removed from any loaded multi-associations that aren't mandatory
if (_JobApplication.isLoaded () || getTransaction ().isObjectLoaded (_JobApplication.getReferencedType (), getJobApplicationID ()))
{
JobApplication referenced = getJobApplication ();
......@@ -1283,6 +1313,8 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
public abstract boolean filterCriteriaType(CriteriaType CriteriaType) throws StorageException;
public abstract boolean filterByCriteriaType(CriteriaType CriteriaType) throws StorageException;
public static SearchCriteriaType SearchByCriteriaType () { return new SearchCriteriaType (); }
public static class SearchCriteriaType extends SearchObject<AssessmentCriteriaAnswer>
......@@ -1377,6 +1409,13 @@ public abstract class BaseAssessmentCriteriaAnswer extends BaseBusinessClass
return ObjstoreUtils.removeDeleted(transaction, typedResults).toArray (new AssessmentCriteriaAnswer[0]);
}
@Override
public boolean accept(AssessmentCriteriaAnswer objToAccept)
{
return super.accept(objToAccept) && objToAccept.filterByCriteriaType((CriteriaType)criteria.get ("CriteriaType"));
}
}
......
......@@ -45,6 +45,8 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public static final String SINGLEREFERENCE_CultureElementRating = "CultureElementRating";
public static final String SINGLEREFERENCE_Job = "Job";
public static final String BACKREF_Job = "";
public static final String MULTIPLEREFERENCE_Answers = "Answers";
public static final String BACKREF_Answers = "";
// Static constants corresponding to searches
public static final String SEARCH_All = "All";
......@@ -65,6 +67,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
// Private attributes corresponding to multiple references
private MultipleAssociation<CultureCriteria, CultureCriteriaAnswer> _Answers;
// Map of maps of metadata
......@@ -82,10 +85,12 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
try
{
String tmp_Answers = CultureCriteriaAnswer.BACKREF_CultureCriteria;
String tmp_Job = Job.BACKREF_CultureCriterias;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_Answers();
setupAssocMetaData_CultureElement();
setupAssocMetaData_CultureElementRating();
setupAssocMetaData_Job();
......@@ -105,6 +110,20 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
// Meta Info setup
private static void setupAssocMetaData_Answers()
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "CultureCriteria");
metaInfo.put ("name", "Answers");
metaInfo.put ("type", "CultureCriteriaAnswer");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for CultureCriteria.Answers:", metaInfo);
ATTRIBUTES_METADATA_CultureCriteria.put (MULTIPLEREFERENCE_Answers, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_CultureElement()
{
Map metaInfo = new HashMap ();
......@@ -209,6 +228,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
_CultureElement = new SingleAssociation<CultureCriteria, CultureElement> (this, SINGLEREFERENCE_CultureElement, null, CultureElement.REFERENCE_CultureElement, "tl_culture_criteria");
_CultureElementRating = new SingleAssociation<CultureCriteria, CultureElementRating> (this, SINGLEREFERENCE_CultureElementRating, null, CultureElementRating.REFERENCE_CultureElementRating, "tl_culture_criteria");
_Job = new SingleAssociation<CultureCriteria, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_CultureCriterias, Job.REFERENCE_Job, "tl_culture_criteria");
_Answers = new MultipleAssociation<CultureCriteria, CultureCriteriaAnswer> (this, MULTIPLEREFERENCE_Answers, CultureCriteriaAnswer.SINGLEREFERENCE_CultureCriteria, CultureCriteriaAnswer.REFERENCE_CultureCriteriaAnswer);
}
......@@ -221,6 +241,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
_CultureElement = new SingleAssociation<CultureCriteria, CultureElement> (this, SINGLEREFERENCE_CultureElement, null, CultureElement.REFERENCE_CultureElement, "tl_culture_criteria");
_CultureElementRating = new SingleAssociation<CultureCriteria, CultureElementRating> (this, SINGLEREFERENCE_CultureElementRating, null, CultureElementRating.REFERENCE_CultureElementRating, "tl_culture_criteria");
_Job = new SingleAssociation<CultureCriteria, Job> (this, SINGLEREFERENCE_Job, Job.MULTIPLEREFERENCE_CultureCriterias, Job.REFERENCE_Job, "tl_culture_criteria");
_Answers = new MultipleAssociation<CultureCriteria, CultureCriteriaAnswer> (this, MULTIPLEREFERENCE_Answers, CultureCriteriaAnswer.SINGLEREFERENCE_CultureCriteria, CultureCriteriaAnswer.REFERENCE_CultureCriteriaAnswer);
return this;
......@@ -793,6 +814,8 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
List result = super.getMultiAssocs ();
result.add("Answers");
return result;
}
......@@ -804,6 +827,11 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public BaseBusinessClass getMultiAssocReferenceInstance(String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return CultureCriteriaAnswer.REFERENCE_CultureCriteriaAnswer ;
}
return super.getMultiAssocReferenceInstance(attribName);
}
......@@ -812,6 +840,11 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public String getMultiAssocBackReference(String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return CultureCriteriaAnswer.SINGLEREFERENCE_CultureCriteria ;
}
return super.getMultiAssocBackReference(attribName);
}
......@@ -823,6 +856,11 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public int getMultiAssocCount(String attribName) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return this.getAnswersCount();
}
return super.getMultiAssocCount(attribName);
}
......@@ -834,6 +872,11 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public BaseBusinessClass getMultiAssocAt(String attribName, int index) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return this.getAnswersAt(index);
}
return super.getMultiAssocAt(attribName, index);
}
......@@ -845,6 +888,13 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public void addToMultiAssoc(String attribName, BaseBusinessClass newElement) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
addToAnswers((CultureCriteriaAnswer)newElement);
return;
}
super.addToMultiAssoc(attribName, newElement);
}
......@@ -855,6 +905,13 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public void removeFromMultiAssoc(String attribName, BaseBusinessClass oldElement) throws StorageException
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
removeFromAnswers((CultureCriteriaAnswer)oldElement);
return;
}
super.removeFromMultiAssoc(attribName, oldElement);
}
......@@ -863,6 +920,12 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
protected void __loadMultiAssoc (String attribName, BaseBusinessClass[] elements)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
_Answers.__loadAssociation (elements);
return;
}
super.__loadMultiAssoc(attribName, elements);
}
......@@ -871,12 +934,86 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
protected boolean __isMultiAssocLoaded (String attribName)
{
if (MULTIPLEREFERENCE_Answers.equals(attribName))
{
return _Answers.isLoaded ();
}
return super.__isMultiAssocLoaded(attribName);
}
public FieldWriteability getWriteability_Answers ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
public int getAnswersCount () throws StorageException
{
assertValid();
return _Answers.getReferencedObjectsCount ();
}
public void addToAnswers (CultureCriteriaAnswer newElement) throws StorageException
{
if (_Answers.wouldAddChange (newElement))
{
assertValid();
Debug.assertion (getWriteability_Answers () != FieldWriteability.FALSE, "MultiAssoc Answers is not writeable (add)");
_Answers.appendElement (newElement);
try
{
if (newElement.getCultureCriteria () != this)
{
newElement.setCultureCriteria ((CultureCriteria)(this));
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public void removeFromAnswers (CultureCriteriaAnswer elementToRemove) throws StorageException
{
if (_Answers.wouldRemoveChange (elementToRemove))
{
assertValid();
Debug.assertion (getWriteability_Answers () != FieldWriteability.FALSE, "MultiAssoc Answers is not writeable (remove)");
_Answers.removeElement (elementToRemove);
try
{
if (elementToRemove.getCultureCriteria () != null)
{
elementToRemove.setCultureCriteria (null);
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public CultureCriteriaAnswer getAnswersAt (int index) throws StorageException
{
return (CultureCriteriaAnswer)(_Answers.getElementAt (index));
}
public SortedSet<CultureCriteriaAnswer> getAnswersSet () throws StorageException
{
return _Answers.getSet ();
}
public void onDelete ()
......@@ -897,6 +1034,12 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
}
}
for(CultureCriteriaAnswer referenced : CollectionUtils.reverse(getAnswersSet()))
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null CultureCriteria from ", getObjectID (), " to ", referenced.getObjectID ());
referenced.setCultureCriteria(null);
}
}
catch (Exception e)
{
......@@ -1054,6 +1197,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
{
BaseCultureCriteria sourceCultureCriteria = (BaseCultureCriteria)(source);
_Answers.copyFrom (sourceCultureCriteria._Answers, linkToGhosts);
}
}
......@@ -1084,6 +1228,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
_CultureElement.readExternalData(vals.get(SINGLEREFERENCE_CultureElement));
_CultureElementRating.readExternalData(vals.get(SINGLEREFERENCE_CultureElementRating));
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_Answers.readExternalData(vals.get(MULTIPLEREFERENCE_Answers));
}
......@@ -1099,6 +1244,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
vals.put (SINGLEREFERENCE_CultureElement, _CultureElement.writeExternalData());
vals.put (SINGLEREFERENCE_CultureElementRating, _CultureElementRating.writeExternalData());
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (MULTIPLEREFERENCE_Answers, _Answers.writeExternalData());
}
......@@ -1124,6 +1270,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
// Compare multiple assocs
_Answers.compare (otherCultureCriteria._Answers, listener);
}
}
......@@ -1145,6 +1292,7 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
visitor.visitAssociation (_CultureElement);
visitor.visitAssociation (_CultureElementRating);
visitor.visitAssociation (_Job);
visitor.visitAssociation (_Answers);
}
......@@ -1165,6 +1313,10 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
{
visitor.visit (_Job);
}
if (scope.includes (_Answers))
{
visitor.visit (_Answers);
}
}
......@@ -1358,6 +1510,10 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
{
return getWriteability_Importance ();
}
else if (fieldName.equals (MULTIPLEREFERENCE_Answers))
{
return getWriteability_Answers ();
}
else if (fieldName.equals (SINGLEREFERENCE_CultureElement))
{
return getWriteability_CultureElement ();
......@@ -1515,6 +1671,10 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
public PipeLine<From, ? extends Object> to(String name)
{
if (name.equals ("Answers"))
{
return toAnswers ();
}
if (name.equals ("Importance"))
{
return toImportance ();
......@@ -1556,6 +1716,12 @@ public abstract class BaseCultureCriteria extends BaseBusinessClass
{
return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_Job, filter));
}
public CultureCriteriaAnswer.CultureCriteriaAnswerPipeLineFactory<From, CultureCriteriaAnswer> toAnswers () { return toAnswers(Filter.ALL); }
public CultureCriteriaAnswer.CultureCriteriaAnswerPipeLineFactory<From, CultureCriteriaAnswer> toAnswers (Filter<CultureCriteriaAnswer> filter)
{
return CultureCriteriaAnswer.REFERENCE_CultureCriteriaAnswer.new CultureCriteriaAnswerPipeLineFactory<From, CultureCriteriaAnswer> (this, new ORMMultiAssocPipe<Me, CultureCriteriaAnswer>(MULTIPLEREFERENCE_Answers, filter));
}
}
......@@ -1629,6 +1795,23 @@ class DummyCultureCriteria extends CultureCriteria
return Job.DUMMY_Job.getObjectID();
}
public int getAnswersCount () throws StorageException
{
return 0;
}
public CultureCriteriaAnswer getAnswersAt (int index) throws StorageException
{
throw new RuntimeException ("No elements in a dummy object in association Answers");
}
public SortedSet getAnswersSet () throws StorageException
{
return new TreeSet();
}
}
......@@ -39,6 +39,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
// Static constants corresponding to field names
public static final String SINGLEREFERENCE_CultureCriteria = "CultureCriteria";
public static final String BACKREF_CultureCriteria = "";
public static final String SINGLEREFERENCE_SelectedQuestion = "SelectedQuestion";
public static final String SINGLEREFERENCE_JobApplication = "JobApplication";
public static final String BACKREF_JobApplication = "";
......@@ -76,6 +77,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
try
{
String tmp_CultureCriteria = CultureCriteria.BACKREF_Answers;
String tmp_JobApplication = JobApplication.BACKREF_CultureCriteriaAnswers;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
......@@ -102,6 +104,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "Answers");
metaInfo.put ("dbcol", "culture_criteria_id");
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "CultureCriteria");
......@@ -178,7 +181,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
{
super._initialiseAssociations ();
_CultureCriteria = new SingleAssociation<CultureCriteriaAnswer, CultureCriteria> (this, SINGLEREFERENCE_CultureCriteria, null, CultureCriteria.REFERENCE_CultureCriteria, "tl_culture_criteria_answer");
_CultureCriteria = new SingleAssociation<CultureCriteriaAnswer, CultureCriteria> (this, SINGLEREFERENCE_CultureCriteria, CultureCriteria.MULTIPLEREFERENCE_Answers, CultureCriteria.REFERENCE_CultureCriteria, "tl_culture_criteria_answer");
_SelectedQuestion = new SingleAssociation<CultureCriteriaAnswer, CultureElementQuestion> (this, SINGLEREFERENCE_SelectedQuestion, null, CultureElementQuestion.REFERENCE_CultureElementQuestion, "tl_culture_criteria_answer");
_JobApplication = new SingleAssociation<CultureCriteriaAnswer, JobApplication> (this, SINGLEREFERENCE_JobApplication, JobApplication.MULTIPLEREFERENCE_CultureCriteriaAnswers, JobApplication.REFERENCE_JobApplication, "tl_culture_criteria_answer");
......@@ -190,7 +193,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
{
super.initialiseReference ();
_CultureCriteria = new SingleAssociation<CultureCriteriaAnswer, CultureCriteria> (this, SINGLEREFERENCE_CultureCriteria, null, CultureCriteria.REFERENCE_CultureCriteria, "tl_culture_criteria_answer");
_CultureCriteria = new SingleAssociation<CultureCriteriaAnswer, CultureCriteria> (this, SINGLEREFERENCE_CultureCriteria, CultureCriteria.MULTIPLEREFERENCE_Answers, CultureCriteria.REFERENCE_CultureCriteria, "tl_culture_criteria_answer");
_SelectedQuestion = new SingleAssociation<CultureCriteriaAnswer, CultureElementQuestion> (this, SINGLEREFERENCE_SelectedQuestion, null, CultureElementQuestion.REFERENCE_CultureElementQuestion, "tl_culture_criteria_answer");
_JobApplication = new SingleAssociation<CultureCriteriaAnswer, JobApplication> (this, SINGLEREFERENCE_JobApplication, JobApplication.MULTIPLEREFERENCE_CultureCriteriaAnswers, JobApplication.REFERENCE_JobApplication, "tl_culture_criteria_answer");
......@@ -252,7 +255,7 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
}
else if (assocName.equals (SINGLEREFERENCE_CultureCriteria))
{
return null ;
return CultureCriteria.MULTIPLEREFERENCE_Answers ;
}else if (assocName.equals (SINGLEREFERENCE_SelectedQuestion))
{
return null ;
......@@ -448,9 +451,22 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
assertValid();
Debug.assertion (getWriteability_CultureCriteria () != FieldWriteability.FALSE, "Assoc CultureCriteria is not writeable");
preCultureCriteriaChange (newCultureCriteria);
CultureCriteria oldCultureCriteria = getCultureCriteria ();
if (oldCultureCriteria != null)
{
// This is to stop validation from triggering when we are removed
_CultureCriteria.set (null);
oldCultureCriteria.removeFromAnswers ((CultureCriteriaAnswer)(this));
}
_CultureCriteria.set (newCultureCriteria);
if (newCultureCriteria != null)
{
newCultureCriteria.addToAnswers ((CultureCriteriaAnswer)(this));
}
postCultureCriteriaChange ();
}
}
......@@ -757,6 +773,20 @@ public abstract class BaseCultureCriteriaAnswer extends BaseBusinessClass
try
{
// Ensure we are removed from any loaded multi-associations that aren't mandatory
if (_CultureCriteria.isLoaded () || getTransaction ().isObjectLoaded (_CultureCriteria.getReferencedType (), getCultureCriteriaID ()))
{
CultureCriteria referenced = getCultureCriteria ();
if (referenced != null)
{
// Stop the callback
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null Answers from ", getObjectID (), " to ", referenced.getObjectID ());
_CultureCriteria.set (null);
referenced.removeFromAnswers ((CultureCriteriaAnswer)this);
}
}
// Ensure we are removed from any loaded multi-associations that aren't mandatory
if (_JobApplication.isLoaded () || getTransaction ().isObjectLoaded (_JobApplication.getReferencedType (), getJobApplicationID ()))
{
JobApplication referenced = getJobApplication ();
......
......@@ -14,13 +14,13 @@ public class Candidate extends BaseCandidate
public String getFirstName()
{
return getUser().getFirstName();
return getUser() != null ? getUser().getFirstName() : null;
}
@Override
public String getToString()
{
return this.getUser().getName();
return getUser() != null ? getUser().getName() : null;
}
}
\ No newline at end of file
......@@ -5,6 +5,8 @@
<BUSINESSCLASS name="CultureCriteria" package="performa.orm">
<IMPORT value="performa.orm.types.*"/>
<MULTIPLEREFERENCE name="Answers" type="CultureCriteriaAnswer" backreferenceName="CultureCriteria"/>
<TABLE name="tl_culture_criteria" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Importance" type="Importance" dbcol="importance" attribHelper="EnumeratedAttributeHelper" mandatory="true" />
......
......@@ -6,7 +6,7 @@
<TABLE name="tl_culture_criteria_answer" tablePrefix="object" polymorphic="FALSE">
<SINGLEREFERENCE name="CultureCriteria" type="CultureCriteria" dbcol="culture_criteria_id" mandatory="true" />
<SINGLEREFERENCE name="CultureCriteria" type="CultureCriteria" dbcol="culture_criteria_id" mandatory="true" backreferenceName="Answers"/>
<SINGLEREFERENCE name="SelectedQuestion" type="CultureElementQuestion" dbcol="selected_question_id" mandatory="true" />
<SINGLEREFERENCE name="JobApplication" type="JobApplication" dbcol="job_application_id" mandatory="true" backreferenceName="CultureCriteriaAnswers"/>
......
......@@ -137,6 +137,16 @@ public class CultureCriteriaAnswerPersistenceMgr extends ObjectPersistenceMgr
{
throw new RuntimeException ();
}
else if (refName.equals (CultureCriteriaAnswer.SINGLEREFERENCE_CultureCriteria))
{
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}tl_culture_criteria_answer " +
"WHERE " + SELECT_JOINS + "culture_criteria_id = ?";
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, new Object[] { _objectID.longID () }, null, false);
return results;
}
else if (refName.equals (CultureCriteriaAnswer.SINGLEREFERENCE_JobApplication))
{
String query = "SELECT " + SELECT_COLUMNS +
......
......@@ -106,7 +106,7 @@ public class Job extends BaseJob
//to get All Profile Assessment Questions
public Collection<Question> getAllProfileAssessmentQuestions()
{
return this.pipelineJob().toLevel().toFactors().toFactor().toQuestions().toQuestion().vals();
return pipelineJob().toLevel().toFactors().toFactor().toQuestions().toQuestion().vals();
}
......@@ -115,8 +115,8 @@ public class Job extends BaseJob
{
Filter filter = Question.SearchByAll().andIsRightQuestion(new EqualsFilter<>(Boolean.FALSE));
return ObjstoreUtils.sort(CollectionFilter.filter(this.getAllProfileAssessmentQuestions(), filter),
new ObjectTransform[] {Question.pipesQuestion().toSection().toDescription()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR});
return ObjstoreUtils.sort(CollectionFilter.filter(getAllProfileAssessmentQuestions(), filter),
new ObjectTransform[] {Question.pipesQuestion().toSection().toObjectID(), Question.pipesQuestion().toObjectID()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR, CollectionUtils.DEFAULT_COMPARATOR});
}
}
\ No newline at end of file
package performa.orm;
import java.util.Collection;
import java.util.List;
import oneit.logging.LoggingArea;
import oneit.objstore.StorageException;
import oneit.objstore.rdbms.filters.EqualsFilter;
import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter;
......@@ -21,27 +21,38 @@ public class JobApplication extends BaseJobApplication
// Do not add any code to this, always put it in initialiseNewObject
}
public static JobApplication createNewApplication(Candidate candidate, Job job) throws StorageException, FieldException
{
JobApplication jobApplication = createJobApplication(job.getTransaction());
jobApplication.setCandidate(candidate);
jobApplication.setJob(job);
jobApplication.initACAnswers();
jobApplication.initCCAnswers();
return jobApplication;
}
public void initACAnswers() throws FieldException
private void initACAnswers()
{
for(AssessmentCriteria ac: getJob().getAssessmentCriteriasSet())
for(AssessmentCriteria assessmentCriteria : getJob().getAssessmentCriteriasSet())
{
AssessmentCriteriaAnswer answer = AssessmentCriteriaAnswer.createAssessmentCriteriaAnswer(getTransaction());
answer.setJobApplication(this);
answer.setAssessmentCriteria(ac);
addToAssessmentCriteriaAnswers(answer);
assessmentCriteria.addToAnswers(answer);
}
}
public void initCCAnswers() throws FieldException
private void initCCAnswers()
{
for(CultureCriteria cc: getJob().getCultureCriteriasSet())
for(CultureCriteria cultureCriteria : getJob().getCultureCriteriasSet())
{
CultureCriteriaAnswer answer = CultureCriteriaAnswer.createCultureCriteriaAnswer(getTransaction());
answer.setJobApplication(this);
answer.setCultureCriteria(cc);
addToCultureCriteriaAnswers(answer);
cultureCriteria.addToAnswers(answer);
}
}
......@@ -70,12 +81,9 @@ public class JobApplication extends BaseJobApplication
return answer;
}
public Collection<AssessmentCriteriaAnswer> getACAnswersByType(CriteriaType criteria)
public Collection<AssessmentCriteriaAnswer> getACAnswersByType(CriteriaType criteriaType)
{
Filter filter = AssessmentCriteriaAnswer.SearchByCriteriaType()
.andJobApplication(new EqualsFilter<>(this))
.byCriteriaType(criteria);
Filter filter = AssessmentCriteriaAnswer.SearchByCriteriaType().byCriteriaType(criteriaType);
return CollectionFilter.filter(getAssessmentCriteriaAnswersSet(), filter);
}
......
......@@ -20,7 +20,7 @@ public class Importance extends AbstractEnumerated
public static final EnumeratedFactory FACTORY_Importance = new ImportanceFactory();
public static final Importance ESSENTIAL = new Importance ("ESSENTIAL", "OPEN", "Essential", false);
public static final Importance ESSENTIAL = new Importance ("ESSENTIAL", "ESSENTIAL", "Essential", false);
public static final Importance HIGHLY_DESIRABLE = new Importance ("HIGHLY_DESIRABLE", "HIGHLY_DESIRABLE", "Highly Desirable", false);
......
......@@ -3,9 +3,9 @@
<ROOT>
<CONSTANT package="performa.orm.types" name="Importance">
<VALUE name="ESSENTIAL" value="OPEN" description="Essential"/>
<VALUE name="HIGHLY_DESIRABLE" value="HIGHLY_DESIRABLE" description="Highly Desirable"/>
<VALUE name="DESIRABLE" value="DESIRABLE" description="Desirable"/>
<VALUE name="ESSENTIAL" description="Essential"/>
<VALUE name="HIGHLY_DESIRABLE" description="Highly Desirable"/>
<VALUE name="DESIRABLE" description="Desirable"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
......@@ -660,7 +660,7 @@ span.checkbox.checked + .slider:before {-webkit-transform: translateX(18px);-ms-
margin-bottom: 28px;
font-weight: 800;
}
.btn.btn-primary{
.btn.btn-primary.largeBtn{
border-radius: 100px;
background-color: #03a0e7;
font-size: 15px;
......@@ -671,7 +671,7 @@ span.checkbox.checked + .slider:before {-webkit-transform: translateX(18px);-ms-
margin-top: 10px;
font-weight: 500;
}
.btn.btn-primary:hover{
.btn.btn-primary.largeBtn:hover{
background-color: #0e87be;
}
.btn.active, .btn:active{
......@@ -3802,7 +3802,7 @@ img.alert-icon {float: left;}
.applicant-tab ul li a{margin-left: 0;}
.applicant-progress{margin: 29px 0 0;}
.fixed-width {margin-bottom: 30px;}
.btn.btn-primary{height: 46px;font-size: 13px;width: 50%;}
.btn.btn-primary.largeBtn{height: 46px;font-size: 13px;width: 50%;}
.welcome-title{font-size: 12px;text-align: center;}
.welcome-aust-logo {text-align: center;margin-bottom: 33px;}
.appli-aust-title{margin: 11px 0 21px;font-size: 15px;text-align: center;}
......
......@@ -6,6 +6,9 @@
<oneit:dynIncluded>
<%
Job job = (Job) process.getAttribute("Job");
Debug.assertion(job != null, "Job is null in admin portal create job");
String secondPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
String thirdPage = WebUtils.getSamePageInRenderMode(request, WebUtils.WORKPLACE_CULTURE);
%>
......@@ -49,6 +52,9 @@
}
});
$("#assessmentCriteriaSection").on("ormtable_row_post_delete", function (){
recalcFunction();
});
});
function addCriteria(criteria)
......@@ -60,20 +66,20 @@
});
}
function deleteCriteria(deleteVarKey, criteria)
function deleteCriteria(deleteVarKey)
{
var divID = "#" + criteria;
ajaxProcessDeleteJQ("<%= request.getContextPath() %>/genericDelete_AJAX.jsp", divID , { varKey: deleteVarKey });
ajaxProcessDeleteJQ("<%= request.getContextPath() %>/genericDelete_AJAX.jsp", "#assessmentCriteriaSection" , { varKey: deleteVarKey });
return false;
}
</script>
<oneit:form name="editJob" method="post" enctype="multipart/form-data" action="<%= thirdPage %>">
<oneit:form name="editJob" method="post" enctype="multipart/form-data">
<div class="container-fluid">
<h1 class="page-title">Create a job <span class="active-time">(Active for 30 days)</span> </h1>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title">Create a job <span class="active-time">(Active for 30 days)</span></h1>
<oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="2" data="<%= CollectionUtils.EMPTY_MAP%>"/>
......@@ -103,7 +109,6 @@
<%
for(CriteriaType criteria : CriteriaType.getCriteriaTypeArray())
{
Collection<AssessmentCriteria> assessmentCriterias = job.getAssessmentCriteraByType(criteria);
String name = criteria.getName();
%>
<div class="form-group">
......@@ -124,21 +129,21 @@
</span>
</div>
<div id="assessmentCriteriaSection">
<%
for (AssessmentCriteria assessmentCriteria : assessmentCriterias)
for (AssessmentCriteria assessmentCriteria : job.getAssessmentCriteraByType(criteria))
{
%>
<oneit:dynInclude page="/extensions/adminportal/inc/job_assessment_criteria_add.jsp" AssessmentCriteria="<%= assessmentCriteria %>"
data="<%= CollectionUtils.EMPTY_MAP%>"/>
<%
}
%>
<div class="main-add-more">
<oneit:button value="<%= "Add " + name%>" name="newAssessmentCriteria" cssClass="add-more-btn" skin="link"
onClick="<%="addCriteria('" + name + "'); return false;"%>"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondPage)
.toMap() %>"/>
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", secondPage).toMap() %>"/>
</div>
</div>
</div>
<div class="form-brack-line-sub"></div>
......@@ -162,15 +167,16 @@
<input type="text" placeholder="Template Name" class="form-control" id="email">
</div>
<span class="input-group-btn">
<oneit:button value="SAVE" name="gotoPage" cssClass="btn btn-primary"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap()).toMap() %>"/>
<a href="#" class="btn btn-primary">SAVE</a> <!-- todo -->
</span>
</div>
</div>
</div>
<div class="text-center">
<input type="button" class="btn btn-primary top-margin-25" value="Proceed to Workplace Culture" />
<oneit:button value="Proceed to Workplace Culture" name="gotoPage" cssClass="btn btn-primary top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", thirdPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>" />
</div>
</div>
</div>
......
......@@ -38,7 +38,7 @@
<div class="main-qualification" id="<%= criteria.getID() %>">
<span class="delete-qualification" onclick="return deleteCriteria (<%= deleteVarKey %>, '<%= criteria.getCriteriaType().getName() %>')"><span></span></span>
<span class="delete-qualification" onclick="return deleteCriteria (<%= deleteVarKey %>)"><span></span></span>
<oneit:ormInput obj="<%= criteria %>" type="text" attributeName="Name" cssClass="form-control" />
<%
......
......@@ -7,34 +7,22 @@
<oneit:dynIncluded>
<%
boolean toRedirect = GenericObjDF.getOrCreateObject (request, "Job", Job.REFERENCE_Job);
Job job = (Job) process.getAttribute("Job");
if(job == null)
{
job = Job.createJob(transaction);
process.setAttribute("Job", job);
Debug.assertion(job != null, "Job is null in admin portal create job");
if(toRedirect)
{
%><%@include file="/saferedirect.jsp" %><%
}
Level[] levels = Level.SearchByAll().search(transaction);
String nextPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
%>
<oneit:form name="editJob" method="post" enctype="multipart/form-data">
<div class="container-fluid">
<%
oneit.servlets.jsp.FormInformation fi = oneit.servlets.jsp.FormJSP.getFormInformation (request);
if (fi != null && fi.hasErrors ())
{
%>
<div class="alert alert-danger">
<oneit:multifieldtext prefixTextName="pageHeader_errorPrefix" suffixTextName="pageHeader_errorSuffix" fieldTextName="pageHeader_errorText" deriveAllFields="true"/>
</div>
<%
}
%>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title">Create a job <span class="active-time">(Active for 30 days)</span> </h1>
<oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
......@@ -77,7 +65,7 @@
</div>
</div>
<div class="text-center">
<oneit:button value="Proceed to Assessment Criteria" name="gotoPage" cssClass="btn btn-primary"
<oneit:button value="Proceed to Assessment Criteria" name="gotoPage" cssClass="btn btn-primary largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", nextPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
......
......@@ -7,11 +7,15 @@
<%
Job job = (Job) process.getAttribute("Job");
String fifthPage = WebUtils.getSamePageInRenderMode(request, WebUtils.JOB_REVIEW);
Debug.assertion(job != null, "Job is null in admin portal create job");
%>
<oneit:form name="editJob" method="post" enctype="multipart/form-data" action="<%= fifthPage %>">
<div class="container-fluid">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title">Create a job <span class="active-time">(Active for 30 days)</span> </h1>
<oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="4" data="<%= CollectionUtils.EMPTY_MAP%>"/>
......@@ -73,7 +77,7 @@
</label>
</div>
<div class="text-center">
<oneit:button value="Review Details" name="gotoPage" cssClass="btn btn-primary top-margin-37"
<oneit:button value="Review Details" name="gotoPage" cssClass="btn btn-primary top-margin-37 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", fifthPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>"/>
......
......@@ -11,6 +11,8 @@
<div class="container-fluid">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title review-title">Review Job</h1>
<div class="page-subtitle-">
......
......@@ -9,6 +9,7 @@
String fourthPage = WebUtils.getSamePageInRenderMode(request, WebUtils.JOB_MATCH);
String secondPage = WebUtils.getSamePageInRenderMode(request, WebUtils.ASSESSMENT_CRITERIA);
Debug.assertion(job != null, "Job is null in admin portal create job");
%>
<script type="text/javascript">
......@@ -47,6 +48,8 @@
<div class="container-fluid">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<h1 class="page-title">Create a job <span class="active-time">(Active for 30 days)</span> </h1>
<oneit:dynInclude page="/extensions/adminportal/inc/job_main_tabs.jsp" PageNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>"/>
......@@ -167,12 +170,15 @@
<input type="text" placeholder="Template Name" class="form-control" id="email">
</div>
<span class="input-group-btn">
<button class="btn btn-primary" type="button">SAVE</button>
<a href="#" class="btn btn-primary">SAVE</a> <!-- todo -->
</span>
</div>
</div>
<div class="text-center">
<input type="button" class="btn btn-primary top-margin-25" value="Proceed to Job Match" />
<oneit:button value="Proceed to Job Match" name="gotoPage" cssClass="btn btn-primary top-margin-25 largeBtn"
requestAttribs="<%= CollectionUtils.mapEntry("nextPage", fourthPage)
.mapEntry("procParams", CollectionUtils.mapEntry("Job", job).toMap())
.toMap() %>" />
</div>
</div>
</div>
......
......@@ -13,11 +13,7 @@
if(jobApplication==null)
{
jobApplication = JobApplication.createJobApplication(objTran);
jobApplication.setCandidate(candidate);
jobApplication.setJob(job);
jobApplication.initACAnswers();
jobApplication.initCCAnswers();
jobApplication = JobApplication.createNewApplication(candidate, job);
}
process.setAttribute("JobApplication", jobApplication);
......
......@@ -13,7 +13,8 @@
<div class="alert alert-danger">
<oneit:multifieldtext prefixTextName="pageHeader_errorPrefix"
suffixTextName="pageHeader_errorSuffix"
fieldTextName="pageHeader_errorText" deriveAllFields="true"/>
fieldTextName="pageHeader_errorText"
deriveAllFields="true"/>
</div>
<%
}
......
......@@ -43,6 +43,8 @@
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="3" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area section-job-match">
......
......@@ -33,6 +33,8 @@
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="1" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area">
......
......@@ -16,7 +16,7 @@
<oneit:form name="applyJob" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/notifications.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity">
<div class="verify-aust-logo"><img src="images/australia-post.png"></div>
......
......@@ -31,7 +31,7 @@
<oneit:form name="signIn" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/notifications.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="main-verify-identity">
<div class="verify-aust-logo"><img src="images/australia-post.png"></div>
......
......@@ -33,6 +33,8 @@
<oneit:form name="editApplication" method="post" enctype="multipart/form-data">
<oneit:dynInclude page="/extensions/applicantportal/inc/multifieldtext.jsp" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<oneit:dynInclude page="/extensions/applicantportal/inc/application_main_tabs.jsp" PageNumber="2" data="<%= CollectionUtils.EMPTY_MAP%>"/>
<div class="section-page-area">
......
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