Commit 4d8872f4 by nilu

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity…

S43014153 # Matchd / Talentology - No Plan [Enhancement] #Including diversity questions in applicant process
parent bad2fe18
...@@ -39,15 +39,27 @@ public class SaveDiversityAnswersFP extends SaveFP ...@@ -39,15 +39,27 @@ public class SaveDiversityAnswersFP extends SaveFP
{ {
CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion()); CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion());
for(AnswerOption answer : diversityAnswer.getAnswersSet()) if(htQuestion.getQuestion().getMultipleAnswers())
{ {
if(!answer.isTrue(answer.getIsSelected())) for(AnswerOption answer : diversityAnswer.getAnswersSet())
{ {
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP deleting AnswerOption : ", answer ); if(!answer.isTrue(answer.getIsSelected()))
{
answer.delete(); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP for multiple answer questions deleting AnswerOption : ", answer );
answer.delete();
}
} }
} }
else
{
AnswerOption answerOption = AnswerOption.createAnswerOption(process.getTransaction());
diversityAnswer.addToAnswers(answerOption);
answerOption.setAnswer(diversityAnswer.getAnswerOption());
answerOption.setIsSelected(Boolean.TRUE);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1,"In SaveDiversityAnswersFP created AnswerOption : ", answerOption);
}
} }
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
...@@ -64,9 +76,17 @@ public class SaveDiversityAnswersFP extends SaveFP ...@@ -64,9 +76,17 @@ public class SaveDiversityAnswersFP extends SaveFP
for(HTDiversityQuestion htQuestion : job.getDiversityQuestions()) for(HTDiversityQuestion htQuestion : job.getDiversityQuestions())
{ {
CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion()); CandidateDiversityAnswer diversityAnswer = candidate.getDiversityAnswerByQuestion(htQuestion.getQuestion());
Filter<AnswerOption> filter = AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE));
if(htQuestion.getQuestion().getMultipleAnswers())
{
Filter<AnswerOption> filter = AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE));
BusinessObjectParser.assertFieldCondition(diversityAnswer.pipelineCandidateDiversityAnswer().toAnswers(filter).uniqueVals().size() >= 1 , diversityAnswer, CandidateDiversityAnswer.MULTIPLEREFERENCE_Answers, "atleastOneAnswer", exceptions, true, request); BusinessObjectParser.assertFieldCondition(diversityAnswer.pipelineCandidateDiversityAnswer().toAnswers(filter).uniqueVals().size() >= 1 , diversityAnswer, CandidateDiversityAnswer.MULTIPLEREFERENCE_Answers, "atleastOneAnswer", exceptions, true, request);
}
else
{
BusinessObjectParser.assertFieldCondition(diversityAnswer.getAnswerOption() != null , diversityAnswer, CandidateDiversityAnswer.SINGLEREFERENCE_AnswerOption, "mandatory", exceptions, true, request);
}
} }
super.validate(process, submission, exceptions, params); super.validate(process, submission, exceptions, params);
......
...@@ -38,6 +38,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -38,6 +38,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
// Static constants corresponding to field names // Static constants corresponding to field names
public static final String SINGLEREFERENCE_AnswerOption = "AnswerOption";
public static final String SINGLEREFERENCE_Question = "Question"; public static final String SINGLEREFERENCE_Question = "Question";
public static final String SINGLEREFERENCE_Candidate = "Candidate"; public static final String SINGLEREFERENCE_Candidate = "Candidate";
public static final String BACKREF_Candidate = ""; public static final String BACKREF_Candidate = "";
...@@ -55,6 +56,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -55,6 +56,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
// Private attributes corresponding to single references // Private attributes corresponding to single references
private SingleAssociation<CandidateDiversityAnswer, DiversityAnswer> _AnswerOption;
private SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> _Question; private SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> _Question;
private SingleAssociation<CandidateDiversityAnswer, Candidate> _Candidate; private SingleAssociation<CandidateDiversityAnswer, Candidate> _Candidate;
...@@ -82,6 +84,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -82,6 +84,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_AnswerOption();
setupAssocMetaData_Answers(); setupAssocMetaData_Answers();
setupAssocMetaData_Question(); setupAssocMetaData_Question();
setupAssocMetaData_Candidate(); setupAssocMetaData_Candidate();
...@@ -100,6 +103,19 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -100,6 +103,19 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_AnswerOption()
{
Map metaInfo = new HashMap ();
metaInfo.put ("name", "AnswerOption");
metaInfo.put ("type", "DiversityAnswer");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for CandidateDiversityAnswer.AnswerOption:", metaInfo);
ATTRIBUTES_METADATA_CandidateDiversityAnswer.put (SINGLEREFERENCE_AnswerOption, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Answers() private static void setupAssocMetaData_Answers()
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -179,6 +195,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -179,6 +195,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super._initialiseAssociations (); super._initialiseAssociations ();
_AnswerOption = new SingleAssociation<CandidateDiversityAnswer, DiversityAnswer> (this, SINGLEREFERENCE_AnswerOption, null, DiversityAnswer.REFERENCE_DiversityAnswer, "");
_Question = new SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> (this, SINGLEREFERENCE_Question, null, DiversityQuestion.REFERENCE_DiversityQuestion, "tl_candidate_diversity_answer"); _Question = new SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> (this, SINGLEREFERENCE_Question, null, DiversityQuestion.REFERENCE_DiversityQuestion, "tl_candidate_diversity_answer");
_Candidate = new SingleAssociation<CandidateDiversityAnswer, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_DiversityAnswers, Candidate.REFERENCE_Candidate, "tl_candidate_diversity_answer"); _Candidate = new SingleAssociation<CandidateDiversityAnswer, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_DiversityAnswers, Candidate.REFERENCE_Candidate, "tl_candidate_diversity_answer");
_Answers = new MultipleAssociation<CandidateDiversityAnswer, AnswerOption> (this, MULTIPLEREFERENCE_Answers, AnswerOption.SINGLEREFERENCE_CandidateAnswer, AnswerOption.REFERENCE_AnswerOption); _Answers = new MultipleAssociation<CandidateDiversityAnswer, AnswerOption> (this, MULTIPLEREFERENCE_Answers, AnswerOption.SINGLEREFERENCE_CandidateAnswer, AnswerOption.REFERENCE_AnswerOption);
...@@ -191,6 +208,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -191,6 +208,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super.initialiseReference (); super.initialiseReference ();
_AnswerOption = new SingleAssociation<CandidateDiversityAnswer, DiversityAnswer> (this, SINGLEREFERENCE_AnswerOption, null, DiversityAnswer.REFERENCE_DiversityAnswer, "");
_Question = new SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> (this, SINGLEREFERENCE_Question, null, DiversityQuestion.REFERENCE_DiversityQuestion, "tl_candidate_diversity_answer"); _Question = new SingleAssociation<CandidateDiversityAnswer, DiversityQuestion> (this, SINGLEREFERENCE_Question, null, DiversityQuestion.REFERENCE_DiversityQuestion, "tl_candidate_diversity_answer");
_Candidate = new SingleAssociation<CandidateDiversityAnswer, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_DiversityAnswers, Candidate.REFERENCE_Candidate, "tl_candidate_diversity_answer"); _Candidate = new SingleAssociation<CandidateDiversityAnswer, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_DiversityAnswers, Candidate.REFERENCE_Candidate, "tl_candidate_diversity_answer");
_Answers = new MultipleAssociation<CandidateDiversityAnswer, AnswerOption> (this, MULTIPLEREFERENCE_Answers, AnswerOption.SINGLEREFERENCE_CandidateAnswer, AnswerOption.REFERENCE_AnswerOption); _Answers = new MultipleAssociation<CandidateDiversityAnswer, AnswerOption> (this, MULTIPLEREFERENCE_Answers, AnswerOption.SINGLEREFERENCE_CandidateAnswer, AnswerOption.REFERENCE_AnswerOption);
...@@ -211,6 +229,8 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -211,6 +229,8 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
List result = super.getSingleAssocs (); List result = super.getSingleAssocs ();
result.add("AnswerOption");
result.add("Question"); result.add("Question");
result.add("Candidate"); result.add("Candidate");
...@@ -226,7 +246,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -226,7 +246,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Question)) else if (assocName.equals (SINGLEREFERENCE_AnswerOption))
{
return _AnswerOption.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Question))
{ {
return _Question.getReferencedType (); return _Question.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -266,7 +289,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -266,7 +289,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Question)) else if (assocName.equals (SINGLEREFERENCE_AnswerOption))
{
return getAnswerOption ();
}else if (assocName.equals (SINGLEREFERENCE_Question))
{ {
return getQuestion (); return getQuestion ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -286,7 +312,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -286,7 +312,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Question)) else if (assocName.equals (SINGLEREFERENCE_AnswerOption))
{
return getAnswerOption (getType);
}else if (assocName.equals (SINGLEREFERENCE_Question))
{ {
return getQuestion (getType); return getQuestion (getType);
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -306,7 +335,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -306,7 +335,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Question)) else if (assocName.equals (SINGLEREFERENCE_AnswerOption))
{
return getAnswerOptionID ();
}else if (assocName.equals (SINGLEREFERENCE_Question))
{ {
return getQuestionID (); return getQuestionID ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -326,7 +358,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -326,7 +358,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Question)) else if (assocName.equals (SINGLEREFERENCE_AnswerOption))
{
setAnswerOption ((DiversityAnswer)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Question))
{ {
setQuestion ((DiversityQuestion)(newValue)); setQuestion ((DiversityQuestion)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -342,6 +377,100 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -342,6 +377,100 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
/** /**
* Get the reference AnswerOption
*/
public DiversityAnswer getAnswerOption () throws StorageException
{
assertValid();
try
{
return (DiversityAnswer)(_AnswerOption.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in CandidateDiversityAnswer:", this.getObjectID (), ", was trying to get DiversityAnswer:", getAnswerOptionID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _AnswerOption.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public DiversityAnswer getAnswerOption (Get getType) throws StorageException
{
assertValid();
return _AnswerOption.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getAnswerOptionID ()
{
assertValid();
if (_AnswerOption == null)
{
return null;
}
else
{
return _AnswerOption.getID ();
}
}
/**
* Called prior to the assoc 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 preAnswerOptionChange (DiversityAnswer newAnswerOption) throws FieldException
{
}
/**
* Called after the assoc changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postAnswerOptionChange () throws FieldException
{
}
public FieldWriteability getWriteability_AnswerOption ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference AnswerOption. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setAnswerOption (DiversityAnswer newAnswerOption) throws StorageException, FieldException
{
if (_AnswerOption.wouldReferencedChange (newAnswerOption))
{
assertValid();
Debug.assertion (getWriteability_AnswerOption () != FieldWriteability.FALSE, "Assoc AnswerOption is not writeable");
preAnswerOptionChange (newAnswerOption);
_AnswerOption.set (newAnswerOption);
postAnswerOptionChange ();
}
}
/**
* Get the reference Question * Get the reference Question
*/ */
public DiversityQuestion getQuestion () throws StorageException public DiversityQuestion getQuestion () throws StorageException
...@@ -902,6 +1031,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -902,6 +1031,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
BaseCandidateDiversityAnswer sourceCandidateDiversityAnswer = (BaseCandidateDiversityAnswer)(source); BaseCandidateDiversityAnswer sourceCandidateDiversityAnswer = (BaseCandidateDiversityAnswer)(source);
_AnswerOption.copyFrom (sourceCandidateDiversityAnswer._AnswerOption, linkToGhosts);
_Question.copyFrom (sourceCandidateDiversityAnswer._Question, linkToGhosts); _Question.copyFrom (sourceCandidateDiversityAnswer._Question, linkToGhosts);
_Candidate.copyFrom (sourceCandidateDiversityAnswer._Candidate, linkToGhosts); _Candidate.copyFrom (sourceCandidateDiversityAnswer._Candidate, linkToGhosts);
...@@ -945,6 +1075,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -945,6 +1075,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super.readExternalData(vals); super.readExternalData(vals);
_AnswerOption.readExternalData(vals.get(SINGLEREFERENCE_AnswerOption));
_Question.readExternalData(vals.get(SINGLEREFERENCE_Question)); _Question.readExternalData(vals.get(SINGLEREFERENCE_Question));
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate)); _Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_Answers.readExternalData(vals.get(MULTIPLEREFERENCE_Answers)); _Answers.readExternalData(vals.get(MULTIPLEREFERENCE_Answers));
...@@ -959,6 +1090,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -959,6 +1090,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super.writeExternalData(vals); super.writeExternalData(vals);
vals.put (SINGLEREFERENCE_AnswerOption, _AnswerOption.writeExternalData());
vals.put (SINGLEREFERENCE_Question, _Question.writeExternalData()); vals.put (SINGLEREFERENCE_Question, _Question.writeExternalData());
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData()); vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (MULTIPLEREFERENCE_Answers, _Answers.writeExternalData()); vals.put (MULTIPLEREFERENCE_Answers, _Answers.writeExternalData());
...@@ -977,6 +1109,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -977,6 +1109,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
// Compare single assocs // Compare single assocs
_AnswerOption.compare (otherCandidateDiversityAnswer._AnswerOption, listener);
_Question.compare (otherCandidateDiversityAnswer._Question, listener); _Question.compare (otherCandidateDiversityAnswer._Question, listener);
_Candidate.compare (otherCandidateDiversityAnswer._Candidate, listener); _Candidate.compare (otherCandidateDiversityAnswer._Candidate, listener);
...@@ -1000,6 +1133,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1000,6 +1133,7 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitAssociation (_AnswerOption);
visitor.visitAssociation (_Question); visitor.visitAssociation (_Question);
visitor.visitAssociation (_Candidate); visitor.visitAssociation (_Candidate);
visitor.visitAssociation (_Answers); visitor.visitAssociation (_Answers);
...@@ -1011,6 +1145,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1011,6 +1145,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
super.visitAssociations (visitor, scope); super.visitAssociations (visitor, scope);
if (scope.includes (_AnswerOption))
{
visitor.visit (_AnswerOption);
}
if (scope.includes (_Question)) if (scope.includes (_Question))
{ {
visitor.visit (_Question); visitor.visit (_Question);
...@@ -1192,6 +1330,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1192,6 +1330,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
{ {
return getWriteability_Candidate (); return getWriteability_Candidate ();
} }
else if (fieldName.equals (SINGLEREFERENCE_AnswerOption))
{
return getWriteability_AnswerOption ();
}
else else
{ {
return super.getWriteable (fieldName); return super.getWriteable (fieldName);
...@@ -1313,6 +1455,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1313,6 +1455,10 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
public PipeLine<From, ? extends Object> to(String name) public PipeLine<From, ? extends Object> to(String name)
{ {
if (name.equals ("AnswerOption"))
{
return toAnswerOption ();
}
if (name.equals ("Answers")) if (name.equals ("Answers"))
{ {
return toAnswers (); return toAnswers ();
...@@ -1330,6 +1476,12 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1330,6 +1476,12 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
return super.to(name); return super.to(name);
} }
public DiversityAnswer.DiversityAnswerPipeLineFactory<From, DiversityAnswer> toAnswerOption () { return toAnswerOption (Filter.ALL); }
public DiversityAnswer.DiversityAnswerPipeLineFactory<From, DiversityAnswer> toAnswerOption (Filter<DiversityAnswer> filter)
{
return DiversityAnswer.REFERENCE_DiversityAnswer.new DiversityAnswerPipeLineFactory<From, DiversityAnswer> (this, new ORMSingleAssocPipe<Me, DiversityAnswer>(SINGLEREFERENCE_AnswerOption, filter));
}
public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion () { return toQuestion (Filter.ALL); } public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion () { return toQuestion (Filter.ALL); }
public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion (Filter<DiversityQuestion> filter) public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion (Filter<DiversityQuestion> filter)
...@@ -1361,6 +1513,11 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass ...@@ -1361,6 +1513,11 @@ public abstract class BaseCandidateDiversityAnswer extends BaseBusinessClass
public boolean isTransientSingleReference(String assocName) public boolean isTransientSingleReference(String assocName)
{ {
if(CollectionUtils.equals(assocName, "AnswerOption"))
{
return true;
}
return super.isTransientSingleReference(assocName); return super.isTransientSingleReference(assocName);
} }
...@@ -1379,6 +1536,20 @@ class DummyCandidateDiversityAnswer extends CandidateDiversityAnswer ...@@ -1379,6 +1536,20 @@ class DummyCandidateDiversityAnswer extends CandidateDiversityAnswer
} }
public DiversityAnswer getAnswerOption () throws StorageException
{
return (DiversityAnswer)(DiversityAnswer.DUMMY_DiversityAnswer);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getAnswerOptionID ()
{
return DiversityAnswer.DUMMY_DiversityAnswer.getObjectID();
}
public DiversityQuestion getQuestion () throws StorageException public DiversityQuestion getQuestion () throws StorageException
{ {
return (DiversityQuestion)(DiversityQuestion.DUMMY_DiversityQuestion); return (DiversityQuestion)(DiversityQuestion.DUMMY_DiversityQuestion);
......
package performa.orm; package performa.orm;
import oneit.utils.CollectionUtils;
public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer
{ {
...@@ -12,24 +10,4 @@ public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer ...@@ -12,24 +10,4 @@ public class CandidateDiversityAnswer extends BaseCandidateDiversityAnswer
{ {
// Do not add any code to this, always put it in initialiseNewObject // Do not add any code to this, always put it in initialiseNewObject
} }
public CandidateDiversityAnswer getAnswerForQuestion(HTDiversityQuestion htQuestion)
{
CandidateDiversityAnswer answer = null;
if(htQuestion != null)
{
// for(CultureCriteria cc: htQuestion.getQ)
// {
// if(CollectionUtils.equals(cc.getCultureElement(), getCultureElement()))
// {
// criteria = cc;
//
// break;
// }
// }
}
return answer;
}
} }
\ No newline at end of file
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://www.oneit.com.au/schemas/5.2/BusinessObject.xsd'> <ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://www.oneit.com.au/schemas/5.2/BusinessObject.xsd'>
<BUSINESSCLASS name="CandidateDiversityAnswer" package="performa.orm"> <BUSINESSCLASS name="CandidateDiversityAnswer" package="performa.orm">
<TRANSIENTSINGLE name="AnswerOption" type="DiversityAnswer" />
<MULTIPLEREFERENCE name="Answers" type="AnswerOption" backreferenceName="CandidateAnswer" /> <MULTIPLEREFERENCE name="Answers" type="AnswerOption" backreferenceName="CandidateAnswer" />
<TABLE name="tl_candidate_diversity_answer" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_candidate_diversity_answer" tablePrefix="object" polymorphic="FALSE">
......
...@@ -228,12 +228,15 @@ public class JobApplication extends BaseJobApplication ...@@ -228,12 +228,15 @@ public class JobApplication extends BaseJobApplication
{ {
CandidateDiversityAnswer answer = CandidateDiversityAnswer.createCandidateDiversityAnswer(getTransaction()); CandidateDiversityAnswer answer = CandidateDiversityAnswer.createCandidateDiversityAnswer(getTransaction());
for(DiversityAnswer diversityAnswer : question.getAnswersSet()) if(question.getMultipleAnswers())
{ {
AnswerOption answerOption = AnswerOption.createAnswerOption(getTransaction()); for(DiversityAnswer diversityAnswer : question.getAnswersSet())
{
answer.addToAnswers(answerOption); AnswerOption answerOption = AnswerOption.createAnswerOption(getTransaction());
answerOption.setAnswer(diversityAnswer);
answer.addToAnswers(answerOption);
answerOption.setAnswer(diversityAnswer);
}
} }
candidate.addToDiversityAnswers(answer); candidate.addToDiversityAnswers(answer);
...@@ -246,6 +249,21 @@ public class JobApplication extends BaseJobApplication ...@@ -246,6 +249,21 @@ public class JobApplication extends BaseJobApplication
return safeRedirect; return safeRedirect;
} }
public void setDiversityAnswerOptions() throws StorageException, FieldException
{
for(CandidateDiversityAnswer candidateAnswer : pipelineJobApplication().toCandidate().toDiversityAnswers().uniqueVals())
{
if(!candidateAnswer.getQuestion().getMultipleAnswers())
{
AnswerOption answerOption = candidateAnswer.pipelineCandidateDiversityAnswer().toAnswers().val();
if(answerOption != null && answerOption.getAnswer() != null && answerOption.isTrue(answerOption.getIsSelected()))
{
candidateAnswer.setAnswerOption(answerOption.getAnswer());
}
}
}
}
public Answer getAnswerForQuestion(Question question) throws FieldException public Answer getAnswerForQuestion(Question question) throws FieldException
{ {
......
...@@ -22,6 +22,11 @@ ...@@ -22,6 +22,11 @@
JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job); JobApplication jobApplication = JobApplication.searchCandidateJob(transaction, candidate, job);
Debug.assertion(jobApplication != null, "Invalid Job Application in applicant portal"); Debug.assertion(jobApplication != null, "Invalid Job Application in applicant portal");
if(jobApplication.diversityCompleted())
{
response.sendRedirect(WebUtils.getSamePageInRenderMode(request, "VerificationSent") + "&JobID=" + job.getID());
}
Boolean isSelectionComplete = jobApplication.selectionCompleted(); Boolean isSelectionComplete = jobApplication.selectionCompleted();
Boolean isCultureComplete = jobApplication.cultureCompleted(); Boolean isCultureComplete = jobApplication.cultureCompleted();
...@@ -56,6 +61,8 @@ ...@@ -56,6 +61,8 @@
%><%@include file="/saferedirect.jsp" %><% %><%@include file="/saferedirect.jsp" %><%
} }
jobApplication.setDiversityAnswerOptions();
process.setAttribute("JobApplication", jobApplication); process.setAttribute("JobApplication", jobApplication);
%> %>
<oneit:form name="diversity" method="post" enctype="multipart/form-data"> <oneit:form name="diversity" method="post" enctype="multipart/form-data">
...@@ -89,17 +96,26 @@ ...@@ -89,17 +96,26 @@
<div class="main-verify-identity"> <div class="main-verify-identity">
<div class="main-box-layout main-verify-step-2"> <div class="main-box-layout main-verify-step-2">
<% <%
FormTag applicationForm = FormTag.getActiveFormTag(request);
FormBuilder formBuilder = applicationForm.getFormBuilder();
for(HTDiversityQuestion question : job.getDiversityQuestions()) for(HTDiversityQuestion question : job.getDiversityQuestions())
{ {
DiversityQuestion originalQuestion = question.getQuestion(); DiversityQuestion originalQuestion = question.getQuestion();
CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion); CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion);
// not showing question if already answered
if(candidateAnswer.pipelineCandidateDiversityAnswer().toAnswers(AnswerOption.SearchByAll().andIsSelected(new EqualsFilter<>(Boolean.TRUE))).uniqueVals().size() >= 1)
{
continue;
}
%> %>
<div class="form-group text-left"> <div class="form-group text-left">
<label><%= question.getQuestionText() %></label> <label><%= question.getQuestionText() %></label>
<% <%
for(AnswerOption answer : candidateAnswer.getAnswersSet()) if(originalQuestion.getMultipleAnswers())
{ {
if(originalQuestion.getMultipleAnswers()) for(AnswerOption answer : candidateAnswer.getAnswersSet())
{ {
%> %>
<div class="styled_checkboxes"> <div class="styled_checkboxes">
...@@ -114,14 +130,31 @@ ...@@ -114,14 +130,31 @@
</div> </div>
<% <%
} }
else }
{ else
{
String optionKey = WebUtils.getRadioSingleAssocKey(request, candidateAnswer, CandidateDiversityAnswer.SINGLEREFERENCE_AnswerOption);
String formValue = formBuilder.fieldValue (optionKey, candidateAnswer.getAnswerOption() == null ? "" : String.valueOf(candidateAnswer.getAnswerOptionID()));
%> %>
<div class="radio radio-primary second-radio-primary full-width"> <%--<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" name="<%= candidateAnswer.getObjectID() %>" value="<%= answer.getIsSelected() %>" id="<%= answer.getObjectID() %>"/> <input type="radio" name="<%= candidateAnswer.getObjectID() %>" value="<%= answer.getIsSelected() %>" id="<%= answer.getObjectID() %>"/>
<label for="<%= answer.getObjectID() %>"> <label for="<%= answer.getObjectID() %>">
<%= answer.getAnswer().getAnswer() %> <%= answer.getAnswer().getAnswer() %>
</label> </label>
</div>--%>
<%
for(DiversityAnswer diversityAnswer : originalQuestion.getAnswersSet())
{
String answerId = String.valueOf(diversityAnswer.getID().longID());
String selectedStr = (CollectionUtils.equals(answerId, formValue) ? "checked" : "");
%>
<div class="radio radio-primary second-radio-primary full-width">
<input type="radio" name="<%= optionKey %>" id="<%= answerId %>" class="element_rating_radio" value="<%= answerId %>" <%= selectedStr %>>
<label for="<%= answerId %>">
<oneit:toString value="<%= diversityAnswer.getAnswer() %>" mode="EscapeHTML" nullValue="-"/>
</label>
</div> </div>
<% <%
} }
......
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