Commit fa6016ac by nilu

S43015973 # Matchd / Talentology - No Plan [Enhancement] #Add additional…

S43015973 # Matchd / Talentology - No Plan [Enhancement] #Add additional filtering to applicant list
parent 50dee13e
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<column name="object_id" type="Long" nullable="false" length="11"/> <column name="object_id" type="Long" nullable="false" length="11"/>
<column name="object_last_updated_date" type="Date" nullable="false" length="22"/> <column name="object_last_updated_date" type="Date" nullable="false" length="22"/>
<column name="object_created_date" type="Date" nullable="false" length="22"/> <column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="answer_code" type="CLOB" nullable="false"/>
<column name="answer" type="CLOB" nullable="false"/> <column name="answer" type="CLOB" nullable="false"/>
<column name="question_id" type="Long" length="11" nullable="false"/> <column name="question_id" type="Long" length="11" nullable="false"/>
</NODE> </NODE>
......
...@@ -9,6 +9,7 @@ ...@@ -9,6 +9,7 @@
<column name="object_last_updated_date" type="Date" nullable="false" length="22"/> <column name="object_last_updated_date" type="Date" nullable="false" length="22"/>
<column name="object_created_date" type="Date" nullable="false" length="22"/> <column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="xxxx" type="CLOB" nullable="true"/> <column name="xxxx" type="CLOB" nullable="true"/>
<column name="xxxx" type="String" nullable="true" length="200"/>
<column name="xxxx" type="Long" length="11" nullable="true"/> <column name="xxxx" type="Long" length="11" nullable="true"/>
</NODE> </NODE>
......
...@@ -8,6 +8,7 @@ CREATE TABLE tl_diversity_answer ( ...@@ -8,6 +8,7 @@ CREATE TABLE tl_diversity_answer (
object_last_updated_date datetime DEFAULT getdate() NOT NULL , object_last_updated_date datetime DEFAULT getdate() NOT NULL ,
object_created_date datetime DEFAULT getdate() NOT NULL object_created_date datetime DEFAULT getdate() NOT NULL
, ,
answer_code text NOT NULL,
answer text NOT NULL, answer text NOT NULL,
question_id numeric(12) NOT NULL question_id numeric(12) NOT NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE it_does_not_matter ( ...@@ -9,6 +9,7 @@ CREATE TABLE it_does_not_matter (
object_created_date datetime DEFAULT getdate() NOT NULL object_created_date datetime DEFAULT getdate() NOT NULL
, ,
xxxx text NULL, xxxx text NULL,
xxxx varchar(200) NULL,
xxxx numeric(12) NULL xxxx numeric(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_answer ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_answer (
object_last_updated_date date DEFAULT SYSDATE NOT NULL , object_last_updated_date date DEFAULT SYSDATE NOT NULL ,
object_created_date date DEFAULT SYSDATE NOT NULL object_created_date date DEFAULT SYSDATE NOT NULL
, ,
answer_code clob NOT NULL,
answer clob NOT NULL, answer clob NOT NULL,
question_id number(12) NOT NULL question_id number(12) NOT NULL
); );
......
...@@ -10,6 +10,7 @@ CREATE TABLE it_does_not_matter ( ...@@ -10,6 +10,7 @@ CREATE TABLE it_does_not_matter (
object_created_date date DEFAULT SYSDATE NOT NULL object_created_date date DEFAULT SYSDATE NOT NULL
, ,
xxxx clob NULL, xxxx clob NULL,
xxxx varchar2(200) NULL,
xxxx number(12) NULL xxxx number(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_answer ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_diversity_answer (
object_last_updated_date timestamp DEFAULT NOW() NOT NULL , object_last_updated_date timestamp DEFAULT NOW() NOT NULL ,
object_created_date timestamp DEFAULT NOW() NOT NULL object_created_date timestamp DEFAULT NOW() NOT NULL
, ,
answer_code text NOT NULL,
answer text NOT NULL, answer text NOT NULL,
question_id numeric(12) NOT NULL question_id numeric(12) NOT NULL
); );
......
...@@ -10,6 +10,7 @@ CREATE TABLE it_does_not_matter ( ...@@ -10,6 +10,7 @@ CREATE TABLE it_does_not_matter (
object_created_date timestamp DEFAULT NOW() NOT NULL object_created_date timestamp DEFAULT NOW() NOT NULL
, ,
xxxx text NULL, xxxx text NULL,
xxxx varchar(200) NULL,
xxxx numeric(12) NULL xxxx numeric(12) NULL
); );
......
...@@ -38,6 +38,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -38,6 +38,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
// Static constants corresponding to field names // Static constants corresponding to field names
public static final String FIELD_Code = "Code";
public static final String FIELD_Answer = "Answer"; public static final String FIELD_Answer = "Answer";
public static final String SINGLEREFERENCE_Question = "Question"; public static final String SINGLEREFERENCE_Question = "Question";
public static final String BACKREF_Question = ""; public static final String BACKREF_Question = "";
...@@ -47,10 +48,12 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -47,10 +48,12 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper<DiversityAnswer> HELPER_Code = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper<DiversityAnswer> HELPER_Answer = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<DiversityAnswer> HELPER_Answer = DefaultAttributeHelper.INSTANCE;
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String _Code;
private String _Answer; private String _Answer;
...@@ -65,6 +68,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -65,6 +68,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
private static final Map ATTRIBUTES_METADATA_DiversityAnswer = new HashMap (); private static final Map ATTRIBUTES_METADATA_DiversityAnswer = new HashMap ();
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_Code_Validators;
private static final AttributeValidator[] FIELD_Answer_Validators; private static final AttributeValidator[] FIELD_Answer_Validators;
...@@ -81,6 +85,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -81,6 +85,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_Question(); setupAssocMetaData_Question();
FIELD_Code_Validators = (AttributeValidator[])setupAttribMetaData_Code(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Answer_Validators = (AttributeValidator[])setupAttribMetaData_Answer(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Answer_Validators = (AttributeValidator[])setupAttribMetaData_Answer(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -113,6 +118,25 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -113,6 +118,25 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static List setupAttribMetaData_Code(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "answer_code");
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "Code");
metaInfo.put ("type", "String");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for DiversityAnswer.Code:", metaInfo);
ATTRIBUTES_METADATA_DiversityAnswer.put (FIELD_Code, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(DiversityAnswer.class, "Code", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for DiversityAnswer.Code:", validators);
return validators;
}
// Meta Info setup
private static List setupAttribMetaData_Answer(Map validatorMapping) private static List setupAttribMetaData_Answer(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -158,6 +182,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -158,6 +182,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
super._initialiseNewObjAttributes (transaction); super._initialiseNewObjAttributes (transaction);
_Code = (String)(HELPER_Code.initialise (_Code));
_Answer = (String)(HELPER_Answer.initialise (_Answer)); _Answer = (String)(HELPER_Answer.initialise (_Answer));
} }
...@@ -186,6 +211,105 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -186,6 +211,105 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
/** /**
* Get the attribute Code
*/
public String getCode ()
{
assertValid();
String valToReturn = _Code;
for (DiversityAnswerBehaviourDecorator bhd : DiversityAnswer_BehaviourDecorators)
{
valToReturn = bhd.getCode ((DiversityAnswer)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preCodeChange (String newCode) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postCodeChange () throws FieldException
{
}
public FieldWriteability getWriteability_Code ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute Code. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setCode (String newCode) throws FieldException
{
boolean oldAndNewIdentical = HELPER_Code.compare (_Code, newCode);
try
{
for (DiversityAnswerBehaviourDecorator bhd : DiversityAnswer_BehaviourDecorators)
{
newCode = bhd.setCode ((DiversityAnswer)this, newCode);
oldAndNewIdentical = HELPER_Code.compare (_Code, newCode);
}
BusinessObjectParser.assertFieldCondition (newCode != null, this, FIELD_Code, "mandatory");
if (FIELD_Code_Validators.length > 0)
{
Object newCodeObj = HELPER_Code.toObject (newCode);
if (newCodeObj != null)
{
int loopMax = FIELD_Code_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_DiversityAnswer.get (FIELD_Code);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_Code_Validators[v].checkAttribute (this, FIELD_Code, metadata, newCodeObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_Code () != FieldWriteability.FALSE, "Field Code is not writeable");
preCodeChange (newCode);
markFieldChange (FIELD_Code);
_Code = newCode;
postFieldChange (FIELD_Code);
postCodeChange ();
}
}
/**
* Get the attribute Answer * Get the attribute Answer
*/ */
public String getAnswer () public String getAnswer ()
...@@ -684,6 +808,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -684,6 +808,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
PersistentSet tl_diversity_answerPSet = allSets.getPersistentSet (myID, "tl_diversity_answer", myPSetStatus); PersistentSet tl_diversity_answerPSet = allSets.getPersistentSet (myID, "tl_diversity_answer", myPSetStatus);
tl_diversity_answerPSet.setAttrib (FIELD_ObjectID, myID); tl_diversity_answerPSet.setAttrib (FIELD_ObjectID, myID);
tl_diversity_answerPSet.setAttrib (FIELD_Code, HELPER_Code.toObject (_Code)); //
tl_diversity_answerPSet.setAttrib (FIELD_Answer, HELPER_Answer.toObject (_Answer)); // tl_diversity_answerPSet.setAttrib (FIELD_Answer, HELPER_Answer.toObject (_Answer)); //
_Question.getPersistentSets (allSets); _Question.getPersistentSets (allSets);
...@@ -700,6 +825,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -700,6 +825,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
PersistentSet tl_diversity_answerPSet = allSets.getPersistentSet (objectID, "tl_diversity_answer"); PersistentSet tl_diversity_answerPSet = allSets.getPersistentSet (objectID, "tl_diversity_answer");
_Code = (String)(HELPER_Code.fromObject (_Code, tl_diversity_answerPSet.getAttrib (FIELD_Code))); //
_Answer = (String)(HELPER_Answer.fromObject (_Answer, tl_diversity_answerPSet.getAttrib (FIELD_Answer))); // _Answer = (String)(HELPER_Answer.fromObject (_Answer, tl_diversity_answerPSet.getAttrib (FIELD_Answer))); //
_Question.setFromPersistentSets (objectID, allSets); _Question.setFromPersistentSets (objectID, allSets);
...@@ -719,6 +845,15 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -719,6 +845,15 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
try try
{ {
setCode (otherDiversityAnswer.getCode ());
}
catch (FieldException ex)
{
e.addException (ex);
}
try
{
setAnswer (otherDiversityAnswer.getAnswer ()); setAnswer (otherDiversityAnswer.getAnswer ());
} }
catch (FieldException ex) catch (FieldException ex)
...@@ -741,6 +876,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -741,6 +876,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
BaseDiversityAnswer sourceDiversityAnswer = (BaseDiversityAnswer)(source); BaseDiversityAnswer sourceDiversityAnswer = (BaseDiversityAnswer)(source);
_Code = sourceDiversityAnswer._Code;
_Answer = sourceDiversityAnswer._Answer; _Answer = sourceDiversityAnswer._Answer;
} }
...@@ -797,6 +933,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -797,6 +933,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
super.readExternalData(vals); super.readExternalData(vals);
_Code = (String)(HELPER_Code.readExternal (_Code, vals.get(FIELD_Code))); //
_Answer = (String)(HELPER_Answer.readExternal (_Answer, vals.get(FIELD_Answer))); // _Answer = (String)(HELPER_Answer.readExternal (_Answer, vals.get(FIELD_Answer))); //
_Question.readExternalData(vals.get(SINGLEREFERENCE_Question)); _Question.readExternalData(vals.get(SINGLEREFERENCE_Question));
...@@ -810,6 +947,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -810,6 +947,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
super.writeExternalData(vals); super.writeExternalData(vals);
vals.put (FIELD_Code, HELPER_Code.writeExternal (_Code));
vals.put (FIELD_Answer, HELPER_Answer.writeExternal (_Answer)); vals.put (FIELD_Answer, HELPER_Answer.writeExternal (_Answer));
vals.put (SINGLEREFERENCE_Question, _Question.writeExternalData()); vals.put (SINGLEREFERENCE_Question, _Question.writeExternalData());
...@@ -825,6 +963,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -825,6 +963,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
BaseDiversityAnswer otherDiversityAnswer = (BaseDiversityAnswer)(other); BaseDiversityAnswer otherDiversityAnswer = (BaseDiversityAnswer)(other);
if (!HELPER_Code.compare(this._Code, otherDiversityAnswer._Code))
{
listener.notifyFieldChange(this, other, FIELD_Code, HELPER_Code.toObject(this._Code), HELPER_Code.toObject(otherDiversityAnswer._Code));
}
if (!HELPER_Answer.compare(this._Answer, otherDiversityAnswer._Answer)) if (!HELPER_Answer.compare(this._Answer, otherDiversityAnswer._Answer))
{ {
listener.notifyFieldChange(this, other, FIELD_Answer, HELPER_Answer.toObject(this._Answer), HELPER_Answer.toObject(otherDiversityAnswer._Answer)); listener.notifyFieldChange(this, other, FIELD_Answer, HELPER_Answer.toObject(this._Answer), HELPER_Answer.toObject(otherDiversityAnswer._Answer));
...@@ -852,6 +994,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -852,6 +994,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_Code, HELPER_Code.toObject(getCode()));
visitor.visitField(this, FIELD_Answer, HELPER_Answer.toObject(getAnswer())); visitor.visitField(this, FIELD_Answer, HELPER_Answer.toObject(getAnswer()));
visitor.visitAssociation (_Question); visitor.visitAssociation (_Question);
...@@ -891,6 +1034,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -891,6 +1034,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (attribName.equals (FIELD_Code))
{
return filter.matches (getCode ());
}
else if (attribName.equals (FIELD_Answer)) else if (attribName.equals (FIELD_Answer))
{ {
return filter.matches (getAnswer ()); return filter.matches (getAnswer ());
...@@ -930,6 +1077,12 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -930,6 +1077,12 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
} }
public SearchAll andCode (QueryFilter<String> filter)
{
filter.addFilter (context, "tl_diversity_answer.answer_code", "Code");
return this;
}
public SearchAll andAnswer (QueryFilter<String> filter) public SearchAll andAnswer (QueryFilter<String> filter)
{ {
filter.addFilter (context, "tl_diversity_answer.answer", "Answer"); filter.addFilter (context, "tl_diversity_answer.answer", "Answer");
...@@ -977,6 +1130,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -977,6 +1130,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (attribName.equals (FIELD_Code))
{
return HELPER_Code.toObject (getCode ());
}
else if (attribName.equals (FIELD_Answer)) else if (attribName.equals (FIELD_Answer))
{ {
return HELPER_Answer.toObject (getAnswer ()); return HELPER_Answer.toObject (getAnswer ());
...@@ -994,6 +1151,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -994,6 +1151,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (attribName.equals (FIELD_Code))
{
return HELPER_Code;
}
else if (attribName.equals (FIELD_Answer)) else if (attribName.equals (FIELD_Answer))
{ {
return HELPER_Answer; return HELPER_Answer;
...@@ -1011,6 +1172,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1011,6 +1172,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (attribName.equals (FIELD_Code))
{
setCode ((String)(HELPER_Code.fromObject (_Code, attribValue)));
}
else if (attribName.equals (FIELD_Answer)) else if (attribName.equals (FIELD_Answer))
{ {
setAnswer ((String)(HELPER_Answer.fromObject (_Answer, attribValue))); setAnswer ((String)(HELPER_Answer.fromObject (_Answer, attribValue)));
...@@ -1035,6 +1200,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1035,6 +1200,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (fieldName.equals (FIELD_Code))
{
return getWriteability_Code ();
}
else if (fieldName.equals (FIELD_Answer)) else if (fieldName.equals (FIELD_Answer))
{ {
return getWriteability_Answer (); return getWriteability_Answer ();
...@@ -1053,6 +1222,11 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1053,6 +1222,11 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
public void putUnwriteable (Set<String> fields) public void putUnwriteable (Set<String> fields)
{ {
if (getWriteability_Code () != FieldWriteability.TRUE)
{
fields.add (FIELD_Code);
}
if (getWriteability_Answer () != FieldWriteability.TRUE) if (getWriteability_Answer () != FieldWriteability.TRUE)
{ {
fields.add (FIELD_Answer); fields.add (FIELD_Answer);
...@@ -1067,6 +1241,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1067,6 +1241,7 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
List result = super.getAttributes (); List result = super.getAttributes ();
result.add(HELPER_Code.getAttribObject (getClass (), _Code, true, FIELD_Code));
result.add(HELPER_Answer.getAttribObject (getClass (), _Answer, true, FIELD_Answer)); result.add(HELPER_Answer.getAttribObject (getClass (), _Answer, true, FIELD_Answer));
return result; return result;
...@@ -1119,6 +1294,24 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1119,6 +1294,24 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
{ {
/** /**
* Get the attribute Code
*/
public String getCode (DiversityAnswer obj, String original)
{
return original;
}
/**
* Change the value set for attribute Code.
* May modify the field beforehand
* Occurs before validation.
*/
public String setCode (DiversityAnswer obj, String newCode) throws FieldException
{
return newCode;
}
/**
* Get the attribute Answer * Get the attribute Answer
*/ */
public String getAnswer (DiversityAnswer obj, String original) public String getAnswer (DiversityAnswer obj, String original)
...@@ -1188,6 +1381,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1188,6 +1381,10 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
public PipeLine<From, ? extends Object> to(String name) public PipeLine<From, ? extends Object> to(String name)
{ {
if (name.equals ("Code"))
{
return toCode ();
}
if (name.equals ("Answer")) if (name.equals ("Answer"))
{ {
return toAnswer (); return toAnswer ();
...@@ -1202,6 +1399,8 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass ...@@ -1202,6 +1399,8 @@ public abstract class BaseDiversityAnswer extends BaseBusinessClass
} }
public PipeLine<From, String> toCode () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Code)); }
public PipeLine<From, String> toAnswer () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Answer)); } public PipeLine<From, String> toAnswer () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Answer)); }
public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion () { return toQuestion (Filter.ALL); } public DiversityQuestion.DiversityQuestionPipeLineFactory<From, DiversityQuestion> toQuestion () { return toQuestion (Filter.ALL); }
......
...@@ -6,7 +6,8 @@ ...@@ -6,7 +6,8 @@
<TABLE name="tl_diversity_answer" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_diversity_answer" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Answer" type="String" dbcol="answer" mandatory="true"/> <ATTRIB name="Code" type="String" dbcol="answer_code" mandatory="true"/>
<ATTRIB name="Answer" type="String" dbcol="answer" mandatory="true"/>
<SINGLEREFERENCE name="Question" type="DiversityQuestion" dbcol="question_id" backreferenceName="Answers" mandatory="true"/> <SINGLEREFERENCE name="Question" type="DiversityQuestion" dbcol="question_id" backreferenceName="Answers" mandatory="true"/>
......
...@@ -26,10 +26,12 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -26,10 +26,12 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
private static final LoggingArea DiversityAnswerPersistence = LoggingArea.createLoggingArea(ObjectPersistenceMgr.OBJECT_PERSISTENCE, "DiversityAnswer"); private static final LoggingArea DiversityAnswerPersistence = LoggingArea.createLoggingArea(ObjectPersistenceMgr.OBJECT_PERSISTENCE, "DiversityAnswer");
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String dummyCode;
private String dummyAnswer; private String dummyAnswer;
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Code = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_Answer = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper HELPER_Answer = DefaultAttributeHelper.INSTANCE;
...@@ -37,11 +39,12 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -37,11 +39,12 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
public DiversityAnswerPersistenceMgr () public DiversityAnswerPersistenceMgr ()
{ {
dummyCode = (String)(HELPER_Code.initialise (dummyCode));
dummyAnswer = (String)(HELPER_Answer.initialise (dummyAnswer)); dummyAnswer = (String)(HELPER_Answer.initialise (dummyAnswer));
} }
private String SELECT_COLUMNS = "{PREFIX}tl_diversity_answer.object_id as id, {PREFIX}tl_diversity_answer.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_diversity_answer.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_diversity_answer.answer, {PREFIX}tl_diversity_answer.question_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}tl_diversity_answer.object_id as id, {PREFIX}tl_diversity_answer.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_diversity_answer.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_diversity_answer.answer_code, {PREFIX}tl_diversity_answer.answer, {PREFIX}tl_diversity_answer.question_id, 1 AS commasafe ";
private String SELECT_JOINS = ""; private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
...@@ -92,6 +95,7 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -92,6 +95,7 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched // Check for persistent sets already prefetched
if (false || !tl_diversity_answerPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || if (false || !tl_diversity_answerPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_diversity_answerPSet.containsAttrib(DiversityAnswer.FIELD_Code)||
!tl_diversity_answerPSet.containsAttrib(DiversityAnswer.FIELD_Answer)|| !tl_diversity_answerPSet.containsAttrib(DiversityAnswer.FIELD_Answer)||
!tl_diversity_answerPSet.containsAttrib(DiversityAnswer.SINGLEREFERENCE_Question)) !tl_diversity_answerPSet.containsAttrib(DiversityAnswer.SINGLEREFERENCE_Question))
{ {
...@@ -173,10 +177,10 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -173,10 +177,10 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_diversity_answer " + "UPDATE {PREFIX}tl_diversity_answer " +
"SET answer = ?, question_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET answer_code = ?, answer = ?, question_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_diversity_answer.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE tl_diversity_answer.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Answer.getForSQL(dummyAnswer, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Answer))).listEntry (SQLManager.CheckNull((Long)(tl_diversity_answerPSet.getAttrib (DiversityAnswer.SINGLEREFERENCE_Question)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Code.getForSQL(dummyCode, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Code))).listEntry (HELPER_Answer.getForSQL(dummyAnswer, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Answer))).listEntry (SQLManager.CheckNull((Long)(tl_diversity_answerPSet.getAttrib (DiversityAnswer.SINGLEREFERENCE_Question)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -432,6 +436,7 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -432,6 +436,7 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
// Object Created // Object Created
tl_diversity_answerPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE")); tl_diversity_answerPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_diversity_answerPSet.setAttrib(DiversityAnswer.FIELD_Code, HELPER_Code.getFromRS(dummyCode, r, "answer_code"));
tl_diversity_answerPSet.setAttrib(DiversityAnswer.FIELD_Answer, HELPER_Answer.getFromRS(dummyAnswer, r, "answer")); tl_diversity_answerPSet.setAttrib(DiversityAnswer.FIELD_Answer, HELPER_Answer.getFromRS(dummyAnswer, r, "answer"));
tl_diversity_answerPSet.setAttrib(DiversityAnswer.SINGLEREFERENCE_Question, r.getObject ("question_id")); tl_diversity_answerPSet.setAttrib(DiversityAnswer.SINGLEREFERENCE_Question, r.getObject ("question_id"));
...@@ -451,10 +456,10 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr ...@@ -451,10 +456,10 @@ public class DiversityAnswerPersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_diversity_answer " + "INSERT INTO {PREFIX}tl_diversity_answer " +
" (answer, question_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " (answer_code, answer, question_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " + "VALUES " +
" (?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")", " (?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_Answer.getForSQL(dummyAnswer, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Answer))) .listEntry (SQLManager.CheckNull((Long)(tl_diversity_answerPSet.getAttrib (DiversityAnswer.SINGLEREFERENCE_Question)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Code.getForSQL(dummyCode, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Code))).listEntry (HELPER_Answer.getForSQL(dummyAnswer, tl_diversity_answerPSet.getAttrib (DiversityAnswer.FIELD_Answer))) .listEntry (SQLManager.CheckNull((Long)(tl_diversity_answerPSet.getAttrib (DiversityAnswer.SINGLEREFERENCE_Question)))) .listEntry (objectID.longID ()).toList().toArray());
tl_diversity_answerPSet.setStatus (PersistentSetStatus.PROCESSED); tl_diversity_answerPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -827,4 +827,16 @@ public class JobApplication extends BaseJobApplication ...@@ -827,4 +827,16 @@ public class JobApplication extends BaseJobApplication
{ {
return isTrue(super.getPreferRemote()); return isTrue(super.getPreferRemote());
} }
public DiversityQuestion getQuestionByFilter(AppFilter filter)
{
if(isDiversityIncluded())
{
Filter<DiversityQuestion> diversityFilter = DiversityQuestion.SearchByAll().andCode(new EqualsFilter<>(filter.getName()));
return pipelineJobApplication().toJob().toHiringTeam().toDiversityQuestions().toQuestion(diversityFilter).val();
}
return null;
}
} }
\ No newline at end of file
package performa.orm.types;
import java.util.*;
import oneit.utils.*;
/**
* This class was generated using constGen.bat.
* DO NOT MODIFY THIS CODE.
* Edit the associated .xml file, and regenerate this file
* constGen (directory) (file minus extension)
* e.g. constGen C:\...\sql FieldType
*/
public class AppFilter extends AbstractEnumerated
{
public static final EnumeratedFactory FACTORY_AppFilter = new AppFilterFactory();
public static final AppFilter REQ = new AppFilter ("REQ", "REQ", "Requirements", false);
public static final AppFilter REQ_MET = new AppFilter ("REQ_MET", "REQ_MET", "Met", false);
public static final AppFilter REQ_NOT_MET = new AppFilter ("REQ_NOT_MET", "REQ_NOT_MET", "Not Met", false);
public static final AppFilter GENDER = new AppFilter ("GENDER", "GENDER", "Gender", false);
public static final AppFilter GENDER_MAN = new AppFilter ("GENDER_MAN", "GENDER_MAN", "Man", false);
public static final AppFilter GENDER_WOMAN = new AppFilter ("GENDER_WOMAN", "GENDER_WOMAN", "Woman", false);
public static final AppFilter GENDER_OTHER = new AppFilter ("GENDER_OTHER", "GENDER_OTHER", "Other", false);
public static final AppFilter ATSI = new AppFilter ("ATSI", "ATSI", "ATSI", false);
public static final AppFilter ATSI_ABORIGINAL = new AppFilter ("ATSI_ABORIGINAL", "ATSI_ABORIGINAL", "Aboriginal", false);
public static final AppFilter ATSI_TSI = new AppFilter ("ATSI_TSI", "ATSI_TSI", "Torres Strait Islander", false);
public static final AppFilter ATSI_BOTH = new AppFilter ("ATSI_BOTH", "ATSI_BOTH", "Both", false);
public static final AppFilter DISABLED = new AppFilter ("DISABLED", "DISABLED", "Disability", false);
public static final AppFilter DISABLED_HEARING = new AppFilter ("DISABLED_HEARING", "DISABLED_HEARING", "Hearing", false);
public static final AppFilter DISABLED_LEARNING = new AppFilter ("DISABLED_LEARNING", "DISABLED_LEARNING", "Learning", false);
public static final AppFilter DISABLED_MEDICAL = new AppFilter ("DISABLED_MEDICAL", "DISABLED_MEDICAL", "Medical / Physical / Psychiatric", false);
public static final AppFilter DISABLED_SIGHT = new AppFilter ("DISABLED_SIGHT", "DISABLED_SIGHT", "Sight", false);
public static final AppFilter DISABLED_SPEECH = new AppFilter ("DISABLED_SPEECH", "DISABLED_SPEECH", "Speech", false);
public static final AppFilter DISABLED_ARMS = new AppFilter ("DISABLED_ARMS", "DISABLED_ARMS", "Use of Arms and Hands", false);
public static final AppFilter DISABLED_LEGS = new AppFilter ("DISABLED_LEGS", "DISABLED_LEGS", "Use of Legs", false);
public static final AppFilter DISABLED_OTHER = new AppFilter ("DISABLED_OTHER", "DISABLED_OTHER", "Other", false);
private static final AppFilter[] allAppFilters =
new AppFilter[] { REQ,REQ_MET,REQ_NOT_MET,GENDER,GENDER_MAN,GENDER_WOMAN,GENDER_OTHER,ATSI,ATSI_ABORIGINAL,ATSI_TSI,ATSI_BOTH,DISABLED,DISABLED_HEARING,DISABLED_LEARNING,DISABLED_MEDICAL,DISABLED_SIGHT,DISABLED_SPEECH,DISABLED_ARMS,DISABLED_LEGS,DISABLED_OTHER};
private static AppFilter[] getAllAppFilters ()
{
return allAppFilters;
}
private transient Boolean IsRoot;
private transient AppFilter[] ChildNodes;
private transient AppFilter ParentNode;
private AppFilter (String name, String value, String description, boolean disabled)
{
super (name, value, description, disabled);
}
public Boolean getIsRoot()
{
return IsRoot;
}
public AppFilter[] getChildNodes()
{
return ChildNodes;
}
public AppFilter getParentNode()
{
return ParentNode;
}
public static final Comparator COMPARE_BY_POSITION = new CompareEnumByPosition (allAppFilters);
static
{
defineAdditionalData ();
}
public boolean isEqual (AppFilter other)
{
return this.name.equals (other.name);
}
public Enumeration getAllInstances ()
{
return AppFilter.getAll ();
}
private Object readResolve() throws java.io.ObjectStreamException
{
return AppFilter.forName (this.name);
}
public EnumeratedFactory getFactory ()
{
return FACTORY_AppFilter;
}
public static AppFilter forName (String name)
{
if (name == null) { return null; }
AppFilter[] all = getAllAppFilters();
int enumIndex = AbstractEnumerated.getIndexForName (all, name);
return all[enumIndex];
}
public static AppFilter forValue (String value)
{
if (value == null) { return null; }
AppFilter[] all = getAllAppFilters();
int enumIndex = AbstractEnumerated.getIndexForValue (getAllAppFilters (), value);
return all[enumIndex];
}
public static java.util.Enumeration getAll ()
{
return AbstractEnumerated.getAll (getAllAppFilters());
}
public static AppFilter[] getAppFilterArray ()
{
return (AppFilter[])getAllAppFilters().clone ();
}
public static void defineAdditionalData ()
{
REQ.IsRoot = Boolean.TRUE;
REQ.ChildNodes = new AppFilter[] {AppFilter.REQ_MET, AppFilter.REQ_NOT_MET};
REQ_MET.IsRoot = Boolean.FALSE;
REQ_MET.ChildNodes = new AppFilter[] {};
REQ_MET.ParentNode = AppFilter.REQ;
REQ_NOT_MET.IsRoot = Boolean.FALSE;
REQ_NOT_MET.ChildNodes = new AppFilter[] {};
REQ_NOT_MET.ParentNode = AppFilter.REQ;
GENDER.IsRoot = Boolean.TRUE;
GENDER.ChildNodes = new AppFilter[] {AppFilter.GENDER_MAN, AppFilter.GENDER_WOMAN, AppFilter.GENDER_OTHER};
GENDER_MAN.IsRoot = Boolean.FALSE;
GENDER_MAN.ChildNodes = new AppFilter[] {};
GENDER_MAN.ParentNode = AppFilter.GENDER;
GENDER_WOMAN.IsRoot = Boolean.FALSE;
GENDER_WOMAN.ChildNodes = new AppFilter[] {};
GENDER_WOMAN.ParentNode = AppFilter.GENDER;
GENDER_OTHER.IsRoot = Boolean.FALSE;
GENDER_OTHER.ChildNodes = new AppFilter[] {};
GENDER_OTHER.ParentNode = AppFilter.GENDER;
ATSI.IsRoot = Boolean.TRUE;
ATSI.ChildNodes = new AppFilter[] {AppFilter.ATSI_ABORIGINAL, AppFilter.ATSI_TSI, AppFilter.ATSI_BOTH};
ATSI_ABORIGINAL.IsRoot = Boolean.FALSE;
ATSI_ABORIGINAL.ChildNodes = new AppFilter[] {};
ATSI_ABORIGINAL.ParentNode = AppFilter.ATSI;
ATSI_TSI.IsRoot = Boolean.FALSE;
ATSI_TSI.ChildNodes = new AppFilter[] {};
ATSI_TSI.ParentNode = AppFilter.ATSI;
ATSI_BOTH.IsRoot = Boolean.FALSE;
ATSI_BOTH.ChildNodes = new AppFilter[] {};
ATSI_BOTH.ParentNode = AppFilter.ATSI;
DISABLED.IsRoot = Boolean.TRUE;
DISABLED.ChildNodes = new AppFilter[] {AppFilter.DISABLED_HEARING, AppFilter.DISABLED_LEARNING, AppFilter.DISABLED_MEDICAL, AppFilter.DISABLED_SIGHT, AppFilter.DISABLED_SPEECH , AppFilter.DISABLED_ARMS , AppFilter.DISABLED_LEGS , AppFilter.DISABLED_OTHER };
DISABLED_HEARING.IsRoot = Boolean.FALSE;
DISABLED_HEARING.ChildNodes = new AppFilter[] {};
DISABLED_HEARING.ParentNode = AppFilter.DISABLED;
DISABLED_LEARNING.IsRoot = Boolean.FALSE;
DISABLED_LEARNING.ChildNodes = new AppFilter[] {};
DISABLED_LEARNING.ParentNode = AppFilter.DISABLED;
DISABLED_MEDICAL.IsRoot = Boolean.FALSE;
DISABLED_MEDICAL.ChildNodes = new AppFilter[] {};
DISABLED_MEDICAL.ParentNode = AppFilter.DISABLED;
DISABLED_SIGHT.IsRoot = Boolean.FALSE;
DISABLED_SIGHT.ChildNodes = new AppFilter[] {};
DISABLED_SIGHT.ParentNode = AppFilter.DISABLED;
DISABLED_SPEECH.IsRoot = Boolean.FALSE;
DISABLED_SPEECH.ChildNodes = new AppFilter[] {};
DISABLED_SPEECH.ParentNode = AppFilter.DISABLED;
DISABLED_ARMS.IsRoot = Boolean.FALSE;
DISABLED_ARMS.ChildNodes = new AppFilter[] {};
DISABLED_ARMS.ParentNode = AppFilter.DISABLED;
DISABLED_LEGS.IsRoot = Boolean.FALSE;
DISABLED_LEGS.ChildNodes = new AppFilter[] {};
DISABLED_LEGS.ParentNode = AppFilter.DISABLED;
DISABLED_OTHER.IsRoot = Boolean.FALSE;
DISABLED_OTHER.ChildNodes = new AppFilter[] {};
DISABLED_OTHER.ParentNode = AppFilter.DISABLED;
}
static class AppFilterFactory implements EnumeratedFactory
{
public AbstractEnumerated getForName (String name)
{
return AppFilter.forName (name);
}
public AbstractEnumerated getForValue (String name)
{
return AppFilter.forValue (name);
}
public Enumeration getAll ()
{
return AppFilter.getAll ();
}
}
public Map getAdditionalAttributes ()
{
Map attribs = new HashMap ();
attribs.put ("IsRoot", ArrayFormatter.toObject(getIsRoot()));
attribs.put ("ChildNodes", ArrayFormatter.toObject(getChildNodes()));
attribs.put ("ParentNode", ArrayFormatter.toObject(getParentNode()));
return attribs;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<CONSTANT package="performa.orm.types" name="AppFilter">
<DATA name="IsRoot" type="Boolean"/>
<DATA name="ChildNodes" type="AppFilter[]"/>
<DATA name="ParentNode" type="AppFilter"/>
<VALUE name="REQ" description="Requirements" IsRoot="Boolean.TRUE" ChildNodes='new AppFilter[] {AppFilter.REQ_MET, AppFilter.REQ_NOT_MET}'/>
<VALUE name="REQ_MET" description="Met" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.REQ"/>
<VALUE name="REQ_NOT_MET" description="Not Met" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.REQ"/>
<VALUE name="GENDER" description="Gender" IsRoot="Boolean.TRUE" ChildNodes='new AppFilter[] {AppFilter.GENDER_MAN, AppFilter.GENDER_WOMAN, AppFilter.GENDER_OTHER}'/>
<VALUE name="GENDER_MAN" description="Man" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.GENDER"/>
<VALUE name="GENDER_WOMAN" description="Woman" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.GENDER"/>
<VALUE name="GENDER_OTHER" description="Other" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.GENDER"/>
<VALUE name="ATSI" description="ATSI" IsRoot="Boolean.TRUE" ChildNodes='new AppFilter[] {AppFilter.ATSI_ABORIGINAL, AppFilter.ATSI_TSI, AppFilter.ATSI_BOTH}'/>
<VALUE name="ATSI_ABORIGINAL" description="Aboriginal" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.ATSI"/>
<VALUE name="ATSI_TSI" description="Torres Strait Islander" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.ATSI"/>
<VALUE name="ATSI_BOTH" description="Both" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.ATSI"/>
<VALUE name="DISABLED" description="Disability" IsRoot="Boolean.TRUE" ChildNodes='new AppFilter[] {AppFilter.DISABLED_HEARING, AppFilter.DISABLED_LEARNING, AppFilter.DISABLED_MEDICAL, AppFilter.DISABLED_SIGHT, AppFilter.DISABLED_SPEECH , AppFilter.DISABLED_ARMS , AppFilter.DISABLED_LEGS , AppFilter.DISABLED_OTHER }'/>
<VALUE name="DISABLED_HEARING" description="Hearing" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_LEARNING" description="Learning" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_MEDICAL" description="Medical / Physical / Psychiatric" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_SIGHT" description="Sight" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_SPEECH" description="Speech" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_ARMS" description="Use of Arms and Hands" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_LEGS" description="Use of Legs" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
<VALUE name="DISABLED_OTHER" description="Other" IsRoot="Boolean.FALSE" ChildNodes='new AppFilter[] {}' ParentNode="AppFilter.DISABLED"/>
</CONSTANT>
</ROOT>
\ No newline at end of file
...@@ -30,6 +30,8 @@ import oneit.servlets.orm.*; ...@@ -30,6 +30,8 @@ import oneit.servlets.orm.*;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.*;
public abstract class BaseSearchApplicant extends SearchExecutor public abstract class BaseSearchApplicant extends SearchExecutor
...@@ -43,6 +45,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -43,6 +45,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
// Static constants corresponding to field names // Static constants corresponding to field names
public static final String FIELD_Details = "Details"; public static final String FIELD_Details = "Details";
public static final String FIELD_Filter = "Filter";
public static final String SINGLEREFERENCE_Job = "Job"; public static final String SINGLEREFERENCE_Job = "Job";
// Static constants corresponding to searches // Static constants corresponding to searches
...@@ -50,10 +53,12 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -50,10 +53,12 @@ public abstract class BaseSearchApplicant extends SearchExecutor
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper<SearchApplicant> HELPER_Details = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper<SearchApplicant> HELPER_Details = DefaultAttributeHelper.INSTANCE;
private static final DelimitedEnumsAttributeHelper HELPER_Filter = new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter);
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String _Details; private String _Details;
private Set<AppFilter> _Filter;
// Private attributes corresponding to single references // Private attributes corresponding to single references
...@@ -68,6 +73,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -68,6 +73,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
// Arrays of validators for each attribute // Arrays of validators for each attribute
private static final AttributeValidator[] FIELD_Details_Validators; private static final AttributeValidator[] FIELD_Details_Validators;
private static final AttributeValidator[] FIELD_Filter_Validators;
// Arrays of behaviour decorators // Arrays of behaviour decorators
...@@ -83,6 +89,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -83,6 +89,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
setupAssocMetaData_Job(); setupAssocMetaData_Job();
FIELD_Details_Validators = (AttributeValidator[])setupAttribMetaData_Details(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Details_Validators = (AttributeValidator[])setupAttribMetaData_Details(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Filter_Validators = (AttributeValidator[])setupAttribMetaData_Filter(validatorMapping).toArray (new AttributeValidator[0]);
REFERENCE_SearchApplicant.initialiseReference (); REFERENCE_SearchApplicant.initialiseReference ();
...@@ -129,6 +136,26 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -129,6 +136,26 @@ public abstract class BaseSearchApplicant extends SearchExecutor
return validators; return validators;
} }
// Meta Info setup
private static List setupAttribMetaData_Filter(Map validatorMapping)
{
Map metaInfo = new HashMap ();
metaInfo.put ("attribHelper", "DelimitedEnumsAttributeHelper");
metaInfo.put ("attribHelperInstance", "new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter)");
metaInfo.put ("dbcol", "xxxx");
metaInfo.put ("name", "Filter");
metaInfo.put ("type", "Set<AppFilter>");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for SearchApplicant.Filter:", metaInfo);
ATTRIBUTES_METADATA_SearchApplicant.put (FIELD_Filter, Collections.unmodifiableMap (metaInfo));
List validators = BaseBusinessClass.getAttribValidators(SearchApplicant.class, "Filter", metaInfo, validatorMapping);
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Validators for SearchApplicant.Filter:", validators);
return validators;
}
// END OF STATIC METADATA DEFINITION // END OF STATIC METADATA DEFINITION
...@@ -157,6 +184,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -157,6 +184,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
_Details = (String)(HELPER_Details.initialise (_Details)); _Details = (String)(HELPER_Details.initialise (_Details));
_Filter = (Set<AppFilter>)(HELPER_Filter.initialise (_Filter));
} }
...@@ -281,6 +309,104 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -281,6 +309,104 @@ public abstract class BaseSearchApplicant extends SearchExecutor
} }
} }
/**
* Get the attribute Filter
*/
public Set<AppFilter> getFilter ()
{
assertValid();
Set<AppFilter> valToReturn = _Filter;
for (SearchApplicantBehaviourDecorator bhd : SearchApplicant_BehaviourDecorators)
{
valToReturn = bhd.getFilter ((SearchApplicant)this, valToReturn);
}
return valToReturn;
}
/**
* Called prior to the attribute changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preFilterChange (Set<AppFilter> newFilter) throws FieldException
{
}
/**
* Called after the attribute changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postFilterChange () throws FieldException
{
}
public FieldWriteability getWriteability_Filter ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the attribute Filter. Checks to ensure a new value
* has been supplied. If so, marks the field as altered and sets the attribute.
*/
public void setFilter (Set<AppFilter> newFilter) throws FieldException
{
boolean oldAndNewIdentical = HELPER_Filter.compare (_Filter, newFilter);
try
{
for (SearchApplicantBehaviourDecorator bhd : SearchApplicant_BehaviourDecorators)
{
newFilter = bhd.setFilter ((SearchApplicant)this, newFilter);
oldAndNewIdentical = HELPER_Filter.compare (_Filter, newFilter);
}
if (FIELD_Filter_Validators.length > 0)
{
Object newFilterObj = HELPER_Filter.toObject (newFilter);
if (newFilterObj != null)
{
int loopMax = FIELD_Filter_Validators.length;
Map metadata = (Map)ATTRIBUTES_METADATA_SearchApplicant.get (FIELD_Filter);
for (int v = 0 ; v < loopMax ; ++v)
{
FIELD_Filter_Validators[v].checkAttribute (this, FIELD_Filter, metadata, newFilterObj);
}
}
}
}
catch (FieldException e)
{
if (!oldAndNewIdentical)
{
e.setWouldModify ();
}
throw e;
}
if (!oldAndNewIdentical)
{
assertValid();
Debug.assertion (getWriteability_Filter () != FieldWriteability.FALSE, "Field Filter is not writeable");
preFilterChange (newFilter);
markFieldChange (FIELD_Filter);
_Filter = newFilter;
postFieldChange (FIELD_Filter);
postFilterChange ();
}
}
/** /**
...@@ -654,6 +780,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -654,6 +780,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
it_does_not_matterPSet.setAttrib (FIELD_ObjectID, myID); it_does_not_matterPSet.setAttrib (FIELD_ObjectID, myID);
it_does_not_matterPSet.setAttrib (FIELD_Details, HELPER_Details.toObject (_Details)); // it_does_not_matterPSet.setAttrib (FIELD_Details, HELPER_Details.toObject (_Details)); //
it_does_not_matterPSet.setAttrib (FIELD_Filter, HELPER_Filter.toObject (_Filter)); //
_Job.getPersistentSets (allSets); _Job.getPersistentSets (allSets);
} }
...@@ -670,6 +797,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -670,6 +797,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
PersistentSet it_does_not_matterPSet = allSets.getPersistentSet (objectID, "it_does_not_matter"); PersistentSet it_does_not_matterPSet = allSets.getPersistentSet (objectID, "it_does_not_matter");
_Details = (String)(HELPER_Details.fromObject (_Details, it_does_not_matterPSet.getAttrib (FIELD_Details))); // _Details = (String)(HELPER_Details.fromObject (_Details, it_does_not_matterPSet.getAttrib (FIELD_Details))); //
_Filter = (Set<AppFilter>)(HELPER_Filter.fromObject (_Filter, it_does_not_matterPSet.getAttrib (FIELD_Filter))); //
_Job.setFromPersistentSets (objectID, allSets); _Job.setFromPersistentSets (objectID, allSets);
} }
...@@ -695,6 +823,15 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -695,6 +823,15 @@ public abstract class BaseSearchApplicant extends SearchExecutor
e.addException (ex); e.addException (ex);
} }
try
{
setFilter (otherSearchApplicant.getFilter ());
}
catch (FieldException ex)
{
e.addException (ex);
}
} }
} }
...@@ -711,6 +848,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -711,6 +848,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
BaseSearchApplicant sourceSearchApplicant = (BaseSearchApplicant)(source); BaseSearchApplicant sourceSearchApplicant = (BaseSearchApplicant)(source);
_Details = sourceSearchApplicant._Details; _Details = sourceSearchApplicant._Details;
_Filter = sourceSearchApplicant._Filter;
} }
} }
...@@ -765,6 +903,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -765,6 +903,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
super.readExternalData(vals); super.readExternalData(vals);
_Details = (String)(HELPER_Details.readExternal (_Details, vals.get(FIELD_Details))); // _Details = (String)(HELPER_Details.readExternal (_Details, vals.get(FIELD_Details))); //
_Filter = (Set<AppFilter>)(HELPER_Filter.readExternal (_Filter, vals.get(FIELD_Filter))); //
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job)); _Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
} }
...@@ -778,6 +917,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -778,6 +917,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
super.writeExternalData(vals); super.writeExternalData(vals);
vals.put (FIELD_Details, HELPER_Details.writeExternal (_Details)); vals.put (FIELD_Details, HELPER_Details.writeExternal (_Details));
vals.put (FIELD_Filter, HELPER_Filter.writeExternal (_Filter));
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData()); vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
} }
...@@ -796,6 +936,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -796,6 +936,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
listener.notifyFieldChange(this, other, FIELD_Details, HELPER_Details.toObject(this._Details), HELPER_Details.toObject(otherSearchApplicant._Details)); listener.notifyFieldChange(this, other, FIELD_Details, HELPER_Details.toObject(this._Details), HELPER_Details.toObject(otherSearchApplicant._Details));
} }
if (!HELPER_Filter.compare(this._Filter, otherSearchApplicant._Filter))
{
listener.notifyFieldChange(this, other, FIELD_Filter, HELPER_Filter.toObject(this._Filter), HELPER_Filter.toObject(otherSearchApplicant._Filter));
}
// Compare single assocs // Compare single assocs
_Job.compare (otherSearchApplicant._Job, listener); _Job.compare (otherSearchApplicant._Job, listener);
...@@ -820,6 +964,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -820,6 +964,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitField(this, FIELD_Details, HELPER_Details.toObject(getDetails())); visitor.visitField(this, FIELD_Details, HELPER_Details.toObject(getDetails()));
visitor.visitField(this, FIELD_Filter, HELPER_Filter.toObject(getFilter()));
visitor.visitAssociation (_Job); visitor.visitAssociation (_Job);
} }
...@@ -862,6 +1007,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -862,6 +1007,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return filter.matches (getDetails ()); return filter.matches (getDetails ());
} }
else if (attribName.equals (FIELD_Filter))
{
return filter.matches (getFilter ());
}
else if (attribName.equals (SINGLEREFERENCE_Job)) else if (attribName.equals (SINGLEREFERENCE_Job))
{ {
return filter.matches (getJob ()); return filter.matches (getJob ());
...@@ -885,6 +1034,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -885,6 +1034,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return HELPER_Details.toObject (getDetails ()); return HELPER_Details.toObject (getDetails ());
} }
else if (attribName.equals (FIELD_Filter))
{
return HELPER_Filter.toObject (getFilter ());
}
else else
{ {
return super.getAttribute (attribName); return super.getAttribute (attribName);
...@@ -902,6 +1055,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -902,6 +1055,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return HELPER_Details; return HELPER_Details;
} }
else if (attribName.equals (FIELD_Filter))
{
return HELPER_Filter;
}
else else
{ {
return super.getAttributeHelper (attribName); return super.getAttributeHelper (attribName);
...@@ -919,6 +1076,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -919,6 +1076,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
setDetails ((String)(HELPER_Details.fromObject (_Details, attribValue))); setDetails ((String)(HELPER_Details.fromObject (_Details, attribValue)));
} }
else if (attribName.equals (FIELD_Filter))
{
setFilter ((Set<AppFilter>)(HELPER_Filter.fromObject (_Filter, attribValue)));
}
else else
{ {
super.setAttribute (attribName, attribValue); super.setAttribute (attribName, attribValue);
...@@ -943,6 +1104,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -943,6 +1104,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return getWriteability_Details (); return getWriteability_Details ();
} }
else if (fieldName.equals (FIELD_Filter))
{
return getWriteability_Filter ();
}
else if (fieldName.equals (SINGLEREFERENCE_Job)) else if (fieldName.equals (SINGLEREFERENCE_Job))
{ {
return getWriteability_Job (); return getWriteability_Job ();
...@@ -962,6 +1127,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -962,6 +1127,11 @@ public abstract class BaseSearchApplicant extends SearchExecutor
fields.add (FIELD_Details); fields.add (FIELD_Details);
} }
if (getWriteability_Filter () != FieldWriteability.TRUE)
{
fields.add (FIELD_Filter);
}
super.putUnwriteable (fields); super.putUnwriteable (fields);
} }
...@@ -972,6 +1142,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -972,6 +1142,7 @@ public abstract class BaseSearchApplicant extends SearchExecutor
result.add(HELPER_Details.getAttribObject (getClass (), _Details, false, FIELD_Details)); result.add(HELPER_Details.getAttribObject (getClass (), _Details, false, FIELD_Details));
result.add(HELPER_Filter.getAttribObject (getClass (), _Filter, false, FIELD_Filter));
return result; return result;
} }
...@@ -1040,6 +1211,24 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1040,6 +1211,24 @@ public abstract class BaseSearchApplicant extends SearchExecutor
return newDetails; return newDetails;
} }
/**
* Get the attribute Filter
*/
public Set<AppFilter> getFilter (SearchApplicant obj, Set<AppFilter> original)
{
return original;
}
/**
* Change the value set for attribute Filter.
* May modify the field beforehand
* Occurs before validation.
*/
public Set<AppFilter> setFilter (SearchApplicant obj, Set<AppFilter> newFilter) throws FieldException
{
return newFilter;
}
} }
...@@ -1096,6 +1285,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1096,6 +1285,10 @@ public abstract class BaseSearchApplicant extends SearchExecutor
{ {
return toDetails (); return toDetails ();
} }
if (name.equals ("Filter"))
{
return toFilter ();
}
if (name.equals ("Job")) if (name.equals ("Job"))
{ {
return toJob (); return toJob ();
...@@ -1107,6 +1300,8 @@ public abstract class BaseSearchApplicant extends SearchExecutor ...@@ -1107,6 +1300,8 @@ public abstract class BaseSearchApplicant extends SearchExecutor
public PipeLine<From, String> toDetails () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Details)); } public PipeLine<From, String> toDetails () { return pipe(new ORMAttributePipe<Me, String>(FIELD_Details)); }
public PipeLine<From, Set<AppFilter>> toFilter () { return pipe(new ORMAttributePipe<Me, Set<AppFilter>>(FIELD_Filter)); }
public Job.JobPipeLineFactory<From, Job> toJob () { return toJob (Filter.ALL); } public Job.JobPipeLineFactory<From, Job> toJob () { return toJob (Filter.ALL); }
public Job.JobPipeLineFactory<From, Job> toJob (Filter<Job> filter) public Job.JobPipeLineFactory<From, Job> toJob (Filter<Job> filter)
......
package performa.search; package performa.search;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map;
import oneit.logging.LogLevel; import oneit.logging.LogLevel;
import oneit.logging.LogMgr; import oneit.logging.LogMgr;
import oneit.logging.LoggingArea; import oneit.logging.LoggingArea;
...@@ -36,18 +38,29 @@ public class SearchApplicant extends BaseSearchApplicant ...@@ -36,18 +38,29 @@ public class SearchApplicant extends BaseSearchApplicant
@Override @Override
public void run(ObjectTransaction newObjTran) throws FieldException, StorageException public void run(ObjectTransaction newObjTran) throws FieldException, StorageException
{ {
JobApplication[] results = JobApplication.SearchByDetails() JobApplication[] results = JobApplication.SearchByDetails()
.byName(getDetails()) .byName(getDetails())
.andJob(new EqualsFilter<>(getJob())) .andJob(new EqualsFilter<>(getJob()))
.search(newObjTran); .search(newObjTran);
for(JobApplication app : results) for(JobApplication app : results)
{ {
ApplicationStatus appStatus = app.getApplicationStatus(); ApplicationStatus appStatus = app.getApplicationStatus();
boolean skip = false;
app = app.getInTransaction(getTransaction()); app = app.getInTransaction(getTransaction());
app.setApplicationStatus(appStatus); app.setApplicationStatus(appStatus);
if(getFilter() != null)
{
skip = applyFilters(app);
}
if(skip)
{
continue;
}
Answer[] answers = Answer.SearchByAll().andCandidate(new EqualsFilter<>(app.getCandidate())).search(getTransaction()); Answer[] answers = Answer.SearchByAll().andCandidate(new EqualsFilter<>(app.getCandidate())).search(getTransaction());
for (Answer answer: answers) for (Answer answer: answers)
...@@ -73,6 +86,76 @@ public class SearchApplicant extends BaseSearchApplicant ...@@ -73,6 +86,76 @@ public class SearchApplicant extends BaseSearchApplicant
appResults.add(app); appResults.add(app);
} }
} }
private boolean applyFilters(JobApplication app) throws StorageException
{
Map<AppFilter, List<AppFilter>> map = createFilterMap();
for(AppFilter filter : getFilter())
{
if(filter.getIsRoot())
{
if(filter == AppFilter.ATSI || filter == AppFilter.DISABLED)
{
DiversityQuestion question = app.getQuestionByFilter(filter);
if(question != null)
{
CandidateDiversityAnswer answer = app.getCandidate().getDiversityAnswerByQuestion(question);
boolean hasAnswer = false;
for(AppFilter child : filter.getChildNodes())
{
if(answer != null && answer.pipelineCandidateDiversityAnswer().toAnswers().toAnswer().toCode().uniqueVals().contains(child.getName()))
{
hasAnswer = true;
break;
}
}
if(answer == null || !hasAnswer)
{
return true;
}
}
}
}
else if(filter.getParentNode() != null && filter.getParentNode() == AppFilter.REQ)
{
// handle has req and no req
}
}
for(Map.Entry<AppFilter, List<AppFilter>> entry :map.entrySet()){
AppFilter parentNode = entry.getKey();
List<AppFilter> childList = entry.getValue();
DiversityQuestion question = app.getQuestionByFilter(parentNode);
if(question != null)
{
CandidateDiversityAnswer answer = app.getCandidate().getDiversityAnswerByQuestion(question);
boolean hasAnswer = false;
for(AppFilter child : childList)
{
if(answer != null && answer.pipelineCandidateDiversityAnswer().toAnswers().toAnswer().toCode().uniqueVals().contains(child.getName()))
{
hasAnswer = true;
break;
}
}
if(answer == null || !hasAnswer)
{
return true;
}
}
}
return false;
}
}); });
} }
...@@ -84,4 +167,25 @@ public class SearchApplicant extends BaseSearchApplicant ...@@ -84,4 +167,25 @@ public class SearchApplicant extends BaseSearchApplicant
return appResults.toArray(new JobApplication[0]); return appResults.toArray(new JobApplication[0]);
} }
private Map<AppFilter, List<AppFilter>> createFilterMap()
{
Map<AppFilter, List<AppFilter>> map = new HashMap<>();
for(AppFilter filter : getFilter())
{
if(filter.getParentNode() != null && filter.getParentNode() != AppFilter.REQ)
{
if (!map.containsKey(filter.getParentNode()))
{
map.put(filter.getParentNode(), new ArrayList<>());
}
map.get(filter.getParentNode()).add(filter);
}
}
return map;
}
} }
\ No newline at end of file
...@@ -6,11 +6,13 @@ ...@@ -6,11 +6,13 @@
<IMPORT value="oneit.servlets.orm.*" /> <IMPORT value="oneit.servlets.orm.*" />
<IMPORT value="performa.orm.*"/> <IMPORT value="performa.orm.*"/>
<IMPORT value="performa.orm.types.*"/>
<TABLE name="it_does_not_matter" tablePrefix="object" polymorphic="FALSE" > <TABLE name="it_does_not_matter" tablePrefix="object" polymorphic="FALSE" >
<ATTRIB name="Details" type="String" dbcol="xxxx" /> <ATTRIB name="Details" type="String" dbcol="xxxx" />
<ATTRIB name="Filter" type="Set&lt;AppFilter&gt;" dbcol="xxxx" attribHelper="DelimitedEnumsAttributeHelper" attribHelperInstance="new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter)"/>
<SINGLEREFERENCE name="Job" type="Job" dbcol="xxxx" /> <SINGLEREFERENCE name="Job" type="Job" dbcol="xxxx" />
</TABLE> </TABLE>
......
...@@ -16,6 +16,7 @@ import oneit.utils.*; ...@@ -16,6 +16,7 @@ import oneit.utils.*;
import oneit.utils.threading.*; import oneit.utils.threading.*;
import oneit.servlets.orm.*; import oneit.servlets.orm.*;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.*;
...@@ -29,10 +30,12 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -29,10 +30,12 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private String dummyDetails; private String dummyDetails;
private Set<AppFilter> dummyFilter;
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Details = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper HELPER_Details = DefaultAttributeHelper.INSTANCE;
private static final DelimitedEnumsAttributeHelper HELPER_Filter = new DelimitedEnumsAttributeHelper (AppFilter.FACTORY_AppFilter);
...@@ -40,10 +43,11 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -40,10 +43,11 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
public SearchApplicantPersistenceMgr () public SearchApplicantPersistenceMgr ()
{ {
dummyDetails = (String)(HELPER_Details.initialise (dummyDetails)); dummyDetails = (String)(HELPER_Details.initialise (dummyDetails));
dummyFilter = (Set<AppFilter>)(HELPER_Filter.initialise (dummyFilter));
} }
private String SELECT_COLUMNS = "{PREFIX}it_does_not_matter.object_id as id, {PREFIX}it_does_not_matter.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}it_does_not_matter.object_CREATED_DATE as CREATED_DATE, {PREFIX}it_does_not_matter.xxxx, {PREFIX}it_does_not_matter.xxxx, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}it_does_not_matter.object_id as id, {PREFIX}it_does_not_matter.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}it_does_not_matter.object_CREATED_DATE as CREATED_DATE, {PREFIX}it_does_not_matter.xxxx, {PREFIX}it_does_not_matter.xxxx, {PREFIX}it_does_not_matter.xxxx, 1 AS commasafe ";
private String SELECT_JOINS = ""; private String SELECT_JOINS = "";
public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException public BaseBusinessClass fetchByID(ObjectID id, PersistentSetCollection allPSets, RDBMSPersistenceContext context, SQLManager sqlMgr) throws SQLException, StorageException
...@@ -95,6 +99,7 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -95,6 +99,7 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
// Check for persistent sets already prefetched // Check for persistent sets already prefetched
if (false || !it_does_not_matterPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || if (false || !it_does_not_matterPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!it_does_not_matterPSet.containsAttrib(SearchApplicant.FIELD_Details)|| !it_does_not_matterPSet.containsAttrib(SearchApplicant.FIELD_Details)||
!it_does_not_matterPSet.containsAttrib(SearchApplicant.FIELD_Filter)||
!it_does_not_matterPSet.containsAttrib(SearchApplicant.SINGLEREFERENCE_Job)) !it_does_not_matterPSet.containsAttrib(SearchApplicant.SINGLEREFERENCE_Job))
{ {
// We will need to retrieve it // We will need to retrieve it
...@@ -165,10 +170,10 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -165,10 +170,10 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}it_does_not_matter " + "UPDATE {PREFIX}it_does_not_matter " +
"SET xxxx = ?, xxxx = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET xxxx = ?, xxxx = ?, xxxx = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE it_does_not_matter.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE it_does_not_matter.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Details.getForSQL(dummyDetails, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Details))).listEntry (SQLManager.CheckNull((Long)(it_does_not_matterPSet.getAttrib (SearchApplicant.SINGLEREFERENCE_Job)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Details.getForSQL(dummyDetails, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Details))).listEntry (HELPER_Filter.getForSQL(dummyFilter, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Filter))).listEntry (SQLManager.CheckNull((Long)(it_does_not_matterPSet.getAttrib (SearchApplicant.SINGLEREFERENCE_Job)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -403,6 +408,7 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -403,6 +408,7 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
it_does_not_matterPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE")); it_does_not_matterPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
it_does_not_matterPSet.setAttrib(SearchApplicant.FIELD_Details, HELPER_Details.getFromRS(dummyDetails, r, "xxxx")); it_does_not_matterPSet.setAttrib(SearchApplicant.FIELD_Details, HELPER_Details.getFromRS(dummyDetails, r, "xxxx"));
it_does_not_matterPSet.setAttrib(SearchApplicant.FIELD_Filter, HELPER_Filter.getFromRS(dummyFilter, r, "xxxx"));
it_does_not_matterPSet.setAttrib(SearchApplicant.SINGLEREFERENCE_Job, r.getObject ("xxxx")); it_does_not_matterPSet.setAttrib(SearchApplicant.SINGLEREFERENCE_Job, r.getObject ("xxxx"));
...@@ -421,10 +427,10 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr ...@@ -421,10 +427,10 @@ public class SearchApplicantPersistenceMgr extends SearchExecutorPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}it_does_not_matter " + "INSERT INTO {PREFIX}it_does_not_matter " +
" (xxxx, xxxx, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " (xxxx, xxxx, xxxx, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " +
"VALUES " + "VALUES " +
" (?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")", " (?, ?, ?, ?, " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ", " + sqlMgr.getPortabilityServices ().getTimestampExpression () + ")",
CollectionUtils.listEntry (HELPER_Details.getForSQL(dummyDetails, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Details))) .listEntry (SQLManager.CheckNull((Long)(it_does_not_matterPSet.getAttrib (SearchApplicant.SINGLEREFERENCE_Job)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Details.getForSQL(dummyDetails, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Details))).listEntry (HELPER_Filter.getForSQL(dummyFilter, it_does_not_matterPSet.getAttrib (SearchApplicant.FIELD_Filter))) .listEntry (SQLManager.CheckNull((Long)(it_does_not_matterPSet.getAttrib (SearchApplicant.SINGLEREFERENCE_Job)))) .listEntry (objectID.longID ()).toList().toArray());
it_does_not_matterPSet.setStatus (PersistentSetStatus.PROCESSED); it_does_not_matterPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -28,6 +28,7 @@ import performa.chart.RingChart; ...@@ -28,6 +28,7 @@ import performa.chart.RingChart;
import performa.form.LinkedInOAuthLoginFP; import performa.form.LinkedInOAuthLoginFP;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.*; import performa.orm.types.*;
import performa.search.SearchApplicant;
/** /**
* *
...@@ -722,4 +723,44 @@ public class Utils ...@@ -722,4 +723,44 @@ public class Utils
return contentType.contains("msword") || contentType.contains("doc") || contentType.contains("docx") || contentType.contains("opendocument.text") return contentType.contains("msword") || contentType.contains("doc") || contentType.contains("docx") || contentType.contains("opendocument.text")
|| contentType.contains("pdf") || contentType.contains("vnd.openxmlformats-officedocument.wordprocessingml.document") || contentType.contains("text/plain"); || contentType.contains("pdf") || contentType.contains("vnd.openxmlformats-officedocument.wordprocessingml.document") || contentType.contains("text/plain");
} }
public static String getApplicantSortingData(SearchApplicant searchApplicant)
{
StringBuilder sb = new StringBuilder();
sb.append("{");
sb.append("value: [");
if(searchApplicant.getFilter() != null)
{
searchApplicant.getFilter().forEach((filter) -> {
sb.append("'").append(filter.getName()).append("' ,");
});
}
sb.append("],");
sb.append("options: [");
for(AppFilter appFilter : AppFilter.getAppFilterArray())
{
if(!appFilter.getIsRoot())
{
continue;
}
sb.append("{ id: '").append(appFilter.getName()).append("',");
sb.append("label: '").append(appFilter.getDescription()).append("',");
sb.append("children: [");
for(AppFilter child : appFilter.getChildNodes())
{
sb.append("{id:'").append(child.getName()).append("', label:'").append(child.getDescription()).append("'},");
}
sb.append("]").append("},");
}
sb.append("]").append("}");
return sb.toString();
}
} }
\ No newline at end of file
...@@ -7,9 +7,11 @@ import oneit.utils.CollectionUtils; ...@@ -7,9 +7,11 @@ import oneit.utils.CollectionUtils;
import javax.servlet.http.*; import javax.servlet.http.*;
import oneit.business.content.jsp.*; import oneit.business.content.jsp.*;
import oneit.objstore.*; import oneit.objstore.*;
import oneit.servlets.jsp.EnumSetDIH;
import oneit.servlets.jsp.ORMSimpleAssocTag; import oneit.servlets.jsp.ORMSimpleAssocTag;
import oneit.servlets.orm.DataInputHandler; import oneit.servlets.orm.DataInputHandler;
import oneit.servlets.orm.DataMap; import oneit.servlets.orm.DataMap;
import oneit.utils.EnumeratedFactory;
public class WebUtils public class WebUtils
...@@ -96,6 +98,14 @@ public class WebUtils ...@@ -96,6 +98,14 @@ public class WebUtils
} }
public static String getEnumSetKey(HttpServletRequest request, BaseBusinessClass bbc, String attributeName, EnumeratedFactory factory)
{
DataMap dataMap = DataMap.getDataMap (request, true);
EnumSetDIH eih = new EnumSetDIH(bbc, attributeName, factory);
return dataMap.storeORMHandler (eih, bbc, attributeName);
}
public static boolean descendsFrom (Article article, String parentArticleIdFilter) public static boolean descendsFrom (Article article, String parentArticleIdFilter)
{ {
if (article.getIdentifier ().equals (parentArticleIdFilter)) if (article.getIdentifier ().equals (parentArticleIdFilter))
......
...@@ -2992,6 +2992,23 @@ a.forgot-pass { ...@@ -2992,6 +2992,23 @@ a.forgot-pass {
.shorting-dropdown .form-control { .shorting-dropdown .form-control {
height: 45px; height: 45px;
} }
.appli-list-shorting .shorting-dropdown.showing{
width: 350px;
}
.vue-treeselect__control{
height: 45px !important;
}
.vue-treeselect__placeholder, .vue-treeselect__single-value {
top: 5px !important;
}
.filter-icon-btn {
display: block;
position: absolute;
background: url('../images/filter-icon.png') no-repeat center center;
width: 45px;
height: 45px;
cursor: pointer;
}
.search-input { .search-input {
background-color: rgba(255,255,255,0.5); background-color: rgba(255,255,255,0.5);
padding-right: 40px; padding-right: 40px;
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
new ObjectTransform[]{WorkFlow.pipesWorkFlow().toSortOrder()}, new ObjectTransform[]{WorkFlow.pipesWorkFlow().toSortOrder()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST}); new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR_NULLS_FIRST});
HiringTeam hiringTeam = job.getHiringTeam(); HiringTeam hiringTeam = job.getHiringTeam();
String keyName = WebUtils.getEnumSetKey(request, searchApplicant, SearchApplicant.FIELD_Filter, AppFilter.FACTORY_AppFilter);
%> %>
<oneit:dynIncluded> <oneit:dynIncluded>
...@@ -41,6 +42,13 @@ ...@@ -41,6 +42,13 @@
$('.checkbox-list input:checkbox').not(this).prop('checked', this.checked); $('.checkbox-list input:checkbox').not(this).prop('checked', this.checked);
enableBulkEdit(); enableBulkEdit();
}); });
Vue.component('treeselect', VueTreeselect.Treeselect)
new Vue({
el: '#app',
data: <%= Utils.getApplicantSortingData(searchApplicant)%>
});
}); });
function enableBulkEdit() { function enableBulkEdit() {
...@@ -52,6 +60,9 @@ ...@@ -52,6 +60,9 @@
$('.search-icon-btn').click(function () { $('.search-icon-btn').click(function () {
$('.search-real-btn').click(); $('.search-real-btn').click();
}); });
$('.filter-icon-btn').click(function () {
$('.search-real-btn').click();
});
}); });
</script> </script>
<div class="main-applicants-filter"> <div class="main-applicants-filter">
...@@ -105,7 +116,7 @@ ...@@ -105,7 +116,7 @@
<div class="shorting-dropdown application_sorting_bar"> <div class="shorting-dropdown application_sorting_bar">
<div class="appli-order-label">Search Applicants</div> <div class="appli-order-label">Search Applicants</div>
<oneit:ormInput obj="<%= searchApplicant %>" type="text" attributeName="Details" cssClass="form-control search-input" id="searchText" /> <oneit:ormInput obj="<%= searchApplicant %>" type="text" attributeName="Details" cssClass="form-control search-input" id="searchText" />
<span class="search-icon-btn"></span> <span class="search-icon-btn"></span>
</div> </div>
<oneit:button value="Search" name="search" cssClass="btn btn-primary search-real-btn" style="display:none;"/> <oneit:button value="Search" name="search" cssClass="btn btn-primary search-real-btn" style="display:none;"/>
<% <%
...@@ -131,21 +142,15 @@ ...@@ -131,21 +142,15 @@
<% <%
} }
%> %>
<div class="shorting-dropdown"> <div class="shorting-dropdown showing">
<span class="appli-order-label">Showing</span> <span class="appli-order-label">Showing</span>
<select class="form-control status-img" onChange="location=this.value"> <div id="app" style="float:left; width:80%;">
<% <treeselect name="<%= keyName %>" v-model="value" :multiple="true" :options="options" />
for (ApplicationFilter applicationFilter : ApplicationFilter.getApplicationFilterArray()) </div>
{ <div style="float:right; width:20%;">
String optionLink = applicantsPage + "&ApplicationFilter=" + applicationFilter.getName(); <span class="filter-icon-btn" ></span>
%> </div>
<option data-image="images/<%= applicationFilter.getName().toLowerCase() %>.png" <%= (appFilter != null && appFilter == applicationFilter ? "selected" : "" )%> value="<%= optionLink %>">
<oneit:toString value="<%= applicationFilter.getDescription() %>" mode="EscapeHTML"/>
</option>
<%
}
%>
</select>
</div> </div>
<% <%
} }
...@@ -156,5 +161,4 @@ ...@@ -156,5 +161,4 @@
<label for="select_all" class="select-all-jobs">&nbsp;&nbsp;Select all applicants</label> <label for="select_all" class="select-all-jobs">&nbsp;&nbsp;Select all applicants</label>
</div> </div>
</div> </div>
</oneit:dynIncluded> </oneit:dynIncluded>
...@@ -33,6 +33,11 @@ ...@@ -33,6 +33,11 @@
<%@include file="/hotjar.jsp" %> <%@include file="/hotjar.jsp" %>
<%@page import="oneit.servlets.portability.BrowserServices"%> <%@page import="oneit.servlets.portability.BrowserServices"%>
<!--filter on applicant list-->
<script src="https://cdn.jsdelivr.net/npm/vue@^2"></script>
<script src="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@0.0.38/dist/vue-treeselect.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@riophae/vue-treeselect@0.0.38/dist/vue-treeselect.min.css">
<!-- Google Tag Manager --> <!-- Google Tag Manager -->
<script> <script>
dataLayer = [{ dataLayer = [{
......
...@@ -807,15 +807,18 @@ ...@@ -807,15 +807,18 @@
DiversityQuestion originalQuestion = question.getQuestion(); DiversityQuestion originalQuestion = question.getQuestion();
CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion); CandidateDiversityAnswer candidateAnswer = candidate.getDiversityAnswerByQuestion(originalQuestion);
for(AnswerOption answer : candidateAnswer.getAnswersSet()) if(candidateAnswer != null)
{ {
for(AnswerOption answer : candidateAnswer.getAnswersSet())
{
%> %>
<div class="row"> <div class="row">
<div class="col-md-12 answer"> <div class="col-md-12 answer">
<oneit:toString value="<%= answer.getAnswer().getAnswer() %>" mode="EscapeHTML"/> <oneit:toString value="<%= answer.getAnswer().getAnswer() %>" mode="EscapeHTML"/>
</div>
</div> </div>
</div>
<% <%
}
} }
%> %>
</div> </div>
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
<column name="object_created_date" type="Date" nullable="false" length="22"/> <column name="object_created_date" type="Date" nullable="false" length="22"/>
<column name="answer" type="CLOB" nullable="false"/> <column name="answer" type="CLOB" nullable="false"/>
<column name="question_id" type="Long" length="11" nullable="false"/> <column name="question_id" type="Long" length="11" nullable="false"/>
<column name="answer_code" type="CLOB" nullable="false"/>
</NODE> </NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_diversity_answer" indexName="idx_tl_diversity_answer_question_id" isUnique="false"> <NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_diversity_answer" indexName="idx_tl_diversity_answer_question_id" isUnique="false">
......
...@@ -45,6 +45,7 @@ ...@@ -45,6 +45,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>No</value> <value name='answer' factory='String'>No</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/>
<value name='answer_code' factory='String'>ATSI_NO</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -53,6 +54,7 @@ ...@@ -53,6 +54,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Yes, Aboriginal origin</value> <value name='answer' factory='String'>Yes, Aboriginal origin</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/>
<value name='answer_code' factory='String'>ATSI_ABORIGINAL</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -61,6 +63,7 @@ ...@@ -61,6 +63,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Yes, Torres Strait Islander origin</value> <value name='answer' factory='String'>Yes, Torres Strait Islander origin</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/>
<value name='answer_code' factory='String'>ATSI_TSI</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -69,6 +72,7 @@ ...@@ -69,6 +72,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Yes, both</value> <value name='answer' factory='String'>Yes, both</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="firstQuestion"/>
<value name='answer_code' factory='String'>ATSI_BOTH</value>
</NODE> </NODE>
<!-- second question --> <!-- second question -->
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
...@@ -78,6 +82,7 @@ ...@@ -78,6 +82,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>No</value> <value name='answer' factory='String'>No</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_NO</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -86,6 +91,7 @@ ...@@ -86,6 +91,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Hearing</value> <value name='answer' factory='String'>Hearing</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_HEARING</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -94,6 +100,7 @@ ...@@ -94,6 +100,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Learning</value> <value name='answer' factory='String'>Learning</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_LEARNING</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -102,6 +109,7 @@ ...@@ -102,6 +109,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Medical / Physical / Psychiatric</value> <value name='answer' factory='String'>Medical / Physical / Psychiatric</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_MEDICAL</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -110,6 +118,7 @@ ...@@ -110,6 +118,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Sight</value> <value name='answer' factory='String'>Sight</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_SIGHT</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -118,6 +127,7 @@ ...@@ -118,6 +127,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Speech</value> <value name='answer' factory='String'>Speech</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_SPEECH</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -126,6 +136,7 @@ ...@@ -126,6 +136,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Use of Arms and Hands</value> <value name='answer' factory='String'>Use of Arms and Hands</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_ARMS</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -134,6 +145,7 @@ ...@@ -134,6 +145,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Use of Legs</value> <value name='answer' factory='String'>Use of Legs</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_LEGS</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -142,6 +154,7 @@ ...@@ -142,6 +154,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Other</value> <value name='answer' factory='String'>Other</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="secondQuestion"/>
<value name='answer_code' factory='String'>DISABLED_OTHER</value>
</NODE> </NODE>
<!-- third question --> <!-- third question -->
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
...@@ -151,6 +164,7 @@ ...@@ -151,6 +164,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Man</value> <value name='answer' factory='String'>Man</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/>
<value name='answer_code' factory='String'>GENDER_MAN</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -159,6 +173,7 @@ ...@@ -159,6 +173,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Woman</value> <value name='answer' factory='String'>Woman</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/>
<value name='answer_code' factory='String'>GENDER_WOMAN</value>
</NODE> </NODE>
<NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation"> <NODE name="insertOp" factory="Participant" class="oneit.sql.transfer.InsertOperation">
<tableName factory="String">tl_diversity_answer</tableName> <tableName factory="String">tl_diversity_answer</tableName>
...@@ -167,6 +182,7 @@ ...@@ -167,6 +182,7 @@
<value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/> <value name='object_created_date' class="oneit.sql.transfer.DBTransferer$Timestamp"/>
<value name='answer' factory='String'>Other, non-binary</value> <value name='answer' factory='String'>Other, non-binary</value>
<value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/> <value name='question_id' factory='Participant' class="oneit.sql.transfer.DBTransferer$ObjectID" keyName="thirdQuestion"/>
<value name='answer_code' factory='String'>GENDER_OTHER</value>
</NODE> </NODE>
</NODE> </NODE>
</OBJECTS> </OBJECTS>
...@@ -323,6 +323,7 @@ ...@@ -323,6 +323,7 @@
.mapEntry("Job",job) .mapEntry("Job",job)
.mapEntry("Candidate",candidate) .mapEntry("Candidate",candidate)
.mapEntry("JobApplication",jobApplication) .mapEntry("JobApplication",jobApplication)
.mapEntry(NotificationUtils.DISPLAY_NOTIFICATION_PARAM, false)
// .mapEntry(NotificationUtils.NOTIFICATION_MSG_PARAM, "emailSent") // .mapEntry(NotificationUtils.NOTIFICATION_MSG_PARAM, "emailSent")
.toMap() %>"/> .toMap() %>"/>
</div> </div>
......
...@@ -28,7 +28,7 @@ ...@@ -28,7 +28,7 @@
<oneit:script src="/scripts/countimer.js"/> <oneit:script src="/scripts/countimer.js"/>
<oneit:script src="/scripts/slick.min.js"/> <oneit:script src="/scripts/slick.min.js"/>
<oneit:script src="/scripts/raphael-min.js"/> <oneit:script src="/scripts/raphael-min.js"/>
<oneit:script src="/scripts/jBox.js"/> <oneit:script src="/scripts/jBox.js"/>
</oneit:script> </oneit:script>
<script> <script>
......
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