Commit 196c016c by Harsh Shah

Job match assessment issue fixes, review changes

parent 0aac3585
...@@ -15,10 +15,13 @@ ...@@ -15,10 +15,13 @@
<column name="factor_number" type="Long" length="11" nullable="true"/> <column name="factor_number" type="Long" length="11" nullable="true"/>
<column name="level_number" type="Long" length="11" nullable="true"/> <column name="level_number" type="Long" length="11" nullable="true"/>
<column name="narrative_id" type="Long" length="11" nullable="true"/> <column name="narrative_id" type="Long" length="11" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="true"/>
</NODE> </NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_score" indexName="idx_tl_score_test_analysis_id" isUnique="false"><column name="test_analysis_id"/></NODE> <NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_score" indexName="idx_tl_score_test_analysis_id" isUnique="false"><column name="test_analysis_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_score" indexName="idx_tl_score_narrative_id" isUnique="false"><column name="narrative_id"/></NODE> <NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_score" indexName="idx_tl_score_narrative_id" isUnique="false"><column name="narrative_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="tl_score" indexName="idx_tl_score_candidate_id" isUnique="false"><column name="candidate_id"/></NODE>
</NODE></OBJECTS> </NODE></OBJECTS>
\ No newline at end of file
...@@ -14,7 +14,8 @@ CREATE TABLE tl_score ( ...@@ -14,7 +14,8 @@ CREATE TABLE tl_score (
test_analysis_id numeric(12) NULL, test_analysis_id numeric(12) NULL,
factor_number numeric(12) NULL, factor_number numeric(12) NULL,
level_number numeric(12) NULL, level_number numeric(12) NULL,
narrative_id numeric(12) NULL narrative_id numeric(12) NULL,
candidate_id numeric(12) NULL
); );
...@@ -32,3 +33,6 @@ ALTER TABLE tl_score ADD ...@@ -32,3 +33,6 @@ ALTER TABLE tl_score ADD
CREATE INDEX idx_tl_score_narrative_id CREATE INDEX idx_tl_score_narrative_id
ON tl_score (narrative_id); ON tl_score (narrative_id);
CREATE INDEX idx_tl_score_candidate_id
ON tl_score (candidate_id);
...@@ -15,7 +15,8 @@ CREATE TABLE tl_score ( ...@@ -15,7 +15,8 @@ CREATE TABLE tl_score (
test_analysis_id number(12) NULL, test_analysis_id number(12) NULL,
factor_number number(12) NULL, factor_number number(12) NULL,
level_number number(12) NULL, level_number number(12) NULL,
narrative_id number(12) NULL narrative_id number(12) NULL,
candidate_id number(12) NULL
); );
...@@ -33,3 +34,6 @@ ALTER TABLE tl_score ADD ...@@ -33,3 +34,6 @@ ALTER TABLE tl_score ADD
CREATE INDEX idx_tl_score_narrative_id CREATE INDEX idx_tl_score_narrative_id
ON tl_score (narrative_id); ON tl_score (narrative_id);
CREATE INDEX idx_tl_score_candidate_id
ON tl_score (candidate_id);
...@@ -15,7 +15,8 @@ CREATE TABLE tl_score ( ...@@ -15,7 +15,8 @@ CREATE TABLE tl_score (
test_analysis_id numeric(12) NULL, test_analysis_id numeric(12) NULL,
factor_number numeric(12) NULL, factor_number numeric(12) NULL,
level_number numeric(12) NULL, level_number numeric(12) NULL,
narrative_id numeric(12) NULL narrative_id numeric(12) NULL,
candidate_id numeric(12) NULL
); );
...@@ -33,3 +34,6 @@ ALTER TABLE tl_score ADD ...@@ -33,3 +34,6 @@ ALTER TABLE tl_score ADD
CREATE INDEX idx_tl_score_narrative_id CREATE INDEX idx_tl_score_narrative_id
ON tl_score (narrative_id); ON tl_score (narrative_id);
CREATE INDEX idx_tl_score_candidate_id
ON tl_score (candidate_id);
...@@ -47,6 +47,8 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -47,6 +47,8 @@ public abstract class BaseCandidate extends SecUserExtension
public static final String BACKREF_TestAnalysises = ""; public static final String BACKREF_TestAnalysises = "";
public static final String MULTIPLEREFERENCE_JobApplications = "JobApplications"; public static final String MULTIPLEREFERENCE_JobApplications = "JobApplications";
public static final String BACKREF_JobApplications = ""; public static final String BACKREF_JobApplications = "";
public static final String MULTIPLEREFERENCE_FactorScores = "FactorScores";
public static final String BACKREF_FactorScores = "";
// Static constants corresponding to searches // Static constants corresponding to searches
...@@ -66,6 +68,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -66,6 +68,7 @@ public abstract class BaseCandidate extends SecUserExtension
// Private attributes corresponding to multiple references // Private attributes corresponding to multiple references
private MultipleAssociation<Candidate, TestAnalysis> _TestAnalysises; private MultipleAssociation<Candidate, TestAnalysis> _TestAnalysises;
private MultipleAssociation<Candidate, JobApplication> _JobApplications; private MultipleAssociation<Candidate, JobApplication> _JobApplications;
private MultipleAssociation<Candidate, FactorScore> _FactorScores;
// Map of maps of metadata // Map of maps of metadata
...@@ -85,12 +88,14 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -85,12 +88,14 @@ public abstract class BaseCandidate extends SecUserExtension
String tmp_TestAnalysises = TestAnalysis.BACKREF_Candidate; String tmp_TestAnalysises = TestAnalysis.BACKREF_Candidate;
String tmp_JobApplications = JobApplication.BACKREF_Candidate; String tmp_JobApplications = JobApplication.BACKREF_Candidate;
String tmp_FactorScores = FactorScore.BACKREF_Candidate;
String tmp_TestInput = TestInput.BACKREF_Candidates; String tmp_TestInput = TestInput.BACKREF_Candidates;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_TestAnalysises(); setupAssocMetaData_TestAnalysises();
setupAssocMetaData_JobApplications(); setupAssocMetaData_JobApplications();
setupAssocMetaData_FactorScores();
setupAssocMetaData_TestInput(); setupAssocMetaData_TestInput();
FIELD_Phone_Validators = (AttributeValidator[])setupAttribMetaData_Phone(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Phone_Validators = (AttributeValidator[])setupAttribMetaData_Phone(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -136,6 +141,20 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -136,6 +141,20 @@ public abstract class BaseCandidate extends SecUserExtension
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_FactorScores()
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "Candidate");
metaInfo.put ("name", "FactorScores");
metaInfo.put ("type", "FactorScore");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for Candidate.FactorScores:", metaInfo);
ATTRIBUTES_METADATA_Candidate.put (MULTIPLEREFERENCE_FactorScores, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_TestInput() private static void setupAssocMetaData_TestInput()
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -208,6 +227,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -208,6 +227,7 @@ public abstract class BaseCandidate extends SecUserExtension
_TestInput = new SingleAssociation<Candidate, TestInput> (this, SINGLEREFERENCE_TestInput, TestInput.MULTIPLEREFERENCE_Candidates, TestInput.REFERENCE_TestInput, "oneit_sec_user_extension"); _TestInput = new SingleAssociation<Candidate, TestInput> (this, SINGLEREFERENCE_TestInput, TestInput.MULTIPLEREFERENCE_Candidates, TestInput.REFERENCE_TestInput, "oneit_sec_user_extension");
_TestAnalysises = new MultipleAssociation<Candidate, TestAnalysis> (this, MULTIPLEREFERENCE_TestAnalysises, TestAnalysis.SINGLEREFERENCE_Candidate, TestAnalysis.REFERENCE_TestAnalysis); _TestAnalysises = new MultipleAssociation<Candidate, TestAnalysis> (this, MULTIPLEREFERENCE_TestAnalysises, TestAnalysis.SINGLEREFERENCE_Candidate, TestAnalysis.REFERENCE_TestAnalysis);
_JobApplications = new MultipleAssociation<Candidate, JobApplication> (this, MULTIPLEREFERENCE_JobApplications, JobApplication.SINGLEREFERENCE_Candidate, JobApplication.REFERENCE_JobApplication); _JobApplications = new MultipleAssociation<Candidate, JobApplication> (this, MULTIPLEREFERENCE_JobApplications, JobApplication.SINGLEREFERENCE_Candidate, JobApplication.REFERENCE_JobApplication);
_FactorScores = new MultipleAssociation<Candidate, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_Candidate, FactorScore.REFERENCE_FactorScore);
} }
...@@ -220,6 +240,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -220,6 +240,7 @@ public abstract class BaseCandidate extends SecUserExtension
_TestInput = new SingleAssociation<Candidate, TestInput> (this, SINGLEREFERENCE_TestInput, TestInput.MULTIPLEREFERENCE_Candidates, TestInput.REFERENCE_TestInput, "oneit_sec_user_extension"); _TestInput = new SingleAssociation<Candidate, TestInput> (this, SINGLEREFERENCE_TestInput, TestInput.MULTIPLEREFERENCE_Candidates, TestInput.REFERENCE_TestInput, "oneit_sec_user_extension");
_TestAnalysises = new MultipleAssociation<Candidate, TestAnalysis> (this, MULTIPLEREFERENCE_TestAnalysises, TestAnalysis.SINGLEREFERENCE_Candidate, TestAnalysis.REFERENCE_TestAnalysis); _TestAnalysises = new MultipleAssociation<Candidate, TestAnalysis> (this, MULTIPLEREFERENCE_TestAnalysises, TestAnalysis.SINGLEREFERENCE_Candidate, TestAnalysis.REFERENCE_TestAnalysis);
_JobApplications = new MultipleAssociation<Candidate, JobApplication> (this, MULTIPLEREFERENCE_JobApplications, JobApplication.SINGLEREFERENCE_Candidate, JobApplication.REFERENCE_JobApplication); _JobApplications = new MultipleAssociation<Candidate, JobApplication> (this, MULTIPLEREFERENCE_JobApplications, JobApplication.SINGLEREFERENCE_Candidate, JobApplication.REFERENCE_JobApplication);
_FactorScores = new MultipleAssociation<Candidate, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_Candidate, FactorScore.REFERENCE_FactorScore);
return this; return this;
...@@ -564,6 +585,8 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -564,6 +585,8 @@ public abstract class BaseCandidate extends SecUserExtension
result.add("JobApplications"); result.add("JobApplications");
result.add("FactorScores");
return result; return result;
} }
...@@ -585,6 +608,11 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -585,6 +608,11 @@ public abstract class BaseCandidate extends SecUserExtension
return JobApplication.REFERENCE_JobApplication ; return JobApplication.REFERENCE_JobApplication ;
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
return FactorScore.REFERENCE_FactorScore ;
}
return super.getMultiAssocReferenceInstance(attribName); return super.getMultiAssocReferenceInstance(attribName);
} }
...@@ -603,6 +631,11 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -603,6 +631,11 @@ public abstract class BaseCandidate extends SecUserExtension
return JobApplication.SINGLEREFERENCE_Candidate ; return JobApplication.SINGLEREFERENCE_Candidate ;
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
return FactorScore.SINGLEREFERENCE_Candidate ;
}
return super.getMultiAssocBackReference(attribName); return super.getMultiAssocBackReference(attribName);
} }
...@@ -624,6 +657,11 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -624,6 +657,11 @@ public abstract class BaseCandidate extends SecUserExtension
return this.getJobApplicationsCount(); return this.getJobApplicationsCount();
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
return this.getFactorScoresCount();
}
return super.getMultiAssocCount(attribName); return super.getMultiAssocCount(attribName);
} }
...@@ -645,6 +683,11 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -645,6 +683,11 @@ public abstract class BaseCandidate extends SecUserExtension
return this.getJobApplicationsAt(index); return this.getJobApplicationsAt(index);
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
return this.getFactorScoresAt(index);
}
return super.getMultiAssocAt(attribName, index); return super.getMultiAssocAt(attribName, index);
} }
...@@ -670,6 +713,13 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -670,6 +713,13 @@ public abstract class BaseCandidate extends SecUserExtension
return; return;
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
addToFactorScores((FactorScore)newElement);
return;
}
super.addToMultiAssoc(attribName, newElement); super.addToMultiAssoc(attribName, newElement);
} }
...@@ -694,6 +744,13 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -694,6 +744,13 @@ public abstract class BaseCandidate extends SecUserExtension
return; return;
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
removeFromFactorScores((FactorScore)oldElement);
return;
}
super.removeFromMultiAssoc(attribName, oldElement); super.removeFromMultiAssoc(attribName, oldElement);
} }
...@@ -714,6 +771,12 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -714,6 +771,12 @@ public abstract class BaseCandidate extends SecUserExtension
return; return;
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
_FactorScores.__loadAssociation (elements);
return;
}
super.__loadMultiAssoc(attribName, elements); super.__loadMultiAssoc(attribName, elements);
} }
...@@ -732,6 +795,11 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -732,6 +795,11 @@ public abstract class BaseCandidate extends SecUserExtension
return _JobApplications.isLoaded (); return _JobApplications.isLoaded ();
} }
if (MULTIPLEREFERENCE_FactorScores.equals(attribName))
{
return _FactorScores.isLoaded ();
}
return super.__isMultiAssocLoaded(attribName); return super.__isMultiAssocLoaded(attribName);
} }
...@@ -876,6 +944,75 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -876,6 +944,75 @@ public abstract class BaseCandidate extends SecUserExtension
return _JobApplications.getSet (); return _JobApplications.getSet ();
} }
public FieldWriteability getWriteability_FactorScores ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
public int getFactorScoresCount () throws StorageException
{
assertValid();
return _FactorScores.getReferencedObjectsCount ();
}
public void addToFactorScores (FactorScore newElement) throws StorageException
{
if (_FactorScores.wouldAddChange (newElement))
{
assertValid();
Debug.assertion (getWriteability_FactorScores () != FieldWriteability.FALSE, "MultiAssoc FactorScores is not writeable (add)");
_FactorScores.appendElement (newElement);
try
{
if (newElement.getCandidate () != this)
{
newElement.setCandidate ((Candidate)(this));
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public void removeFromFactorScores (FactorScore elementToRemove) throws StorageException
{
if (_FactorScores.wouldRemoveChange (elementToRemove))
{
assertValid();
Debug.assertion (getWriteability_FactorScores () != FieldWriteability.FALSE, "MultiAssoc FactorScores is not writeable (remove)");
_FactorScores.removeElement (elementToRemove);
try
{
if (elementToRemove.getCandidate () != null)
{
elementToRemove.setCandidate (null);
}
}
catch (Exception e)
{
throw NestedException.wrap(e);
}
}
}
public FactorScore getFactorScoresAt (int index) throws StorageException
{
return (FactorScore)(_FactorScores.getElementAt (index));
}
public SortedSet<FactorScore> getFactorScoresSet () throws StorageException
{
return _FactorScores.getSet ();
}
public void onDelete () public void onDelete ()
...@@ -908,6 +1045,12 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -908,6 +1045,12 @@ public abstract class BaseCandidate extends SecUserExtension
referenced.setCandidate(null); referenced.setCandidate(null);
} }
for(FactorScore referenced : CollectionUtils.reverse(getFactorScoresSet()))
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null Candidate from ", getObjectID (), " to ", referenced.getObjectID ());
referenced.setCandidate(null);
}
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -1061,6 +1204,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1061,6 +1204,7 @@ public abstract class BaseCandidate extends SecUserExtension
_TestAnalysises.copyFrom (sourceCandidate._TestAnalysises, linkToGhosts); _TestAnalysises.copyFrom (sourceCandidate._TestAnalysises, linkToGhosts);
_JobApplications.copyFrom (sourceCandidate._JobApplications, linkToGhosts); _JobApplications.copyFrom (sourceCandidate._JobApplications, linkToGhosts);
_FactorScores.copyFrom (sourceCandidate._FactorScores, linkToGhosts);
} }
} }
...@@ -1085,6 +1229,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1085,6 +1229,7 @@ public abstract class BaseCandidate extends SecUserExtension
_TestInput.readExternalData(vals.get(SINGLEREFERENCE_TestInput)); _TestInput.readExternalData(vals.get(SINGLEREFERENCE_TestInput));
_TestAnalysises.readExternalData(vals.get(MULTIPLEREFERENCE_TestAnalysises)); _TestAnalysises.readExternalData(vals.get(MULTIPLEREFERENCE_TestAnalysises));
_JobApplications.readExternalData(vals.get(MULTIPLEREFERENCE_JobApplications)); _JobApplications.readExternalData(vals.get(MULTIPLEREFERENCE_JobApplications));
_FactorScores.readExternalData(vals.get(MULTIPLEREFERENCE_FactorScores));
} }
...@@ -1100,6 +1245,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1100,6 +1245,7 @@ public abstract class BaseCandidate extends SecUserExtension
vals.put (SINGLEREFERENCE_TestInput, _TestInput.writeExternalData()); vals.put (SINGLEREFERENCE_TestInput, _TestInput.writeExternalData());
vals.put (MULTIPLEREFERENCE_TestAnalysises, _TestAnalysises.writeExternalData()); vals.put (MULTIPLEREFERENCE_TestAnalysises, _TestAnalysises.writeExternalData());
vals.put (MULTIPLEREFERENCE_JobApplications, _JobApplications.writeExternalData()); vals.put (MULTIPLEREFERENCE_JobApplications, _JobApplications.writeExternalData());
vals.put (MULTIPLEREFERENCE_FactorScores, _FactorScores.writeExternalData());
} }
...@@ -1125,6 +1271,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1125,6 +1271,7 @@ public abstract class BaseCandidate extends SecUserExtension
// Compare multiple assocs // Compare multiple assocs
_TestAnalysises.compare (otherCandidate._TestAnalysises, listener); _TestAnalysises.compare (otherCandidate._TestAnalysises, listener);
_JobApplications.compare (otherCandidate._JobApplications, listener); _JobApplications.compare (otherCandidate._JobApplications, listener);
_FactorScores.compare (otherCandidate._FactorScores, listener);
} }
} }
...@@ -1146,6 +1293,7 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1146,6 +1293,7 @@ public abstract class BaseCandidate extends SecUserExtension
visitor.visitAssociation (_TestInput); visitor.visitAssociation (_TestInput);
visitor.visitAssociation (_TestAnalysises); visitor.visitAssociation (_TestAnalysises);
visitor.visitAssociation (_JobApplications); visitor.visitAssociation (_JobApplications);
visitor.visitAssociation (_FactorScores);
} }
...@@ -1166,6 +1314,10 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1166,6 +1314,10 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
visitor.visit (_JobApplications); visitor.visit (_JobApplications);
} }
if (scope.includes (_FactorScores))
{
visitor.visit (_FactorScores);
}
} }
...@@ -1284,6 +1436,10 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1284,6 +1436,10 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return getWriteability_JobApplications (); return getWriteability_JobApplications ();
} }
else if (fieldName.equals (MULTIPLEREFERENCE_FactorScores))
{
return getWriteability_FactorScores ();
}
else if (fieldName.equals (SINGLEREFERENCE_TestInput)) else if (fieldName.equals (SINGLEREFERENCE_TestInput))
{ {
return getWriteability_TestInput (); return getWriteability_TestInput ();
...@@ -1441,6 +1597,10 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1441,6 +1597,10 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return toJobApplications (); return toJobApplications ();
} }
if (name.equals ("FactorScores"))
{
return toFactorScores ();
}
if (name.equals ("Phone")) if (name.equals ("Phone"))
{ {
return toPhone (); return toPhone ();
...@@ -1474,6 +1634,12 @@ public abstract class BaseCandidate extends SecUserExtension ...@@ -1474,6 +1634,12 @@ public abstract class BaseCandidate extends SecUserExtension
{ {
return JobApplication.REFERENCE_JobApplication.new JobApplicationPipeLineFactory<From, JobApplication> (this, new ORMMultiAssocPipe<Me, JobApplication>(MULTIPLEREFERENCE_JobApplications, filter)); return JobApplication.REFERENCE_JobApplication.new JobApplicationPipeLineFactory<From, JobApplication> (this, new ORMMultiAssocPipe<Me, JobApplication>(MULTIPLEREFERENCE_JobApplications, filter));
} }
public FactorScore.FactorScorePipeLineFactory<From, FactorScore> toFactorScores () { return toFactorScores(Filter.ALL); }
public FactorScore.FactorScorePipeLineFactory<From, FactorScore> toFactorScores (Filter<FactorScore> filter)
{
return FactorScore.REFERENCE_FactorScore.new FactorScorePipeLineFactory<From, FactorScore> (this, new ORMMultiAssocPipe<Me, FactorScore>(MULTIPLEREFERENCE_FactorScores, filter));
}
} }
...@@ -1553,6 +1719,23 @@ class DummyCandidate extends Candidate ...@@ -1553,6 +1719,23 @@ class DummyCandidate extends Candidate
return new TreeSet(); return new TreeSet();
} }
public int getFactorScoresCount () throws StorageException
{
return 0;
}
public FactorScore getFactorScoresAt (int index) throws StorageException
{
throw new RuntimeException ("No elements in a dummy object in association FactorScores");
}
public SortedSet getFactorScoresSet () throws StorageException
{
return new TreeSet();
}
} }
...@@ -50,6 +50,8 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -50,6 +50,8 @@ public abstract class BaseFactorScore extends BaseBusinessClass
public static final String SINGLEREFERENCE_Level = "Level"; public static final String SINGLEREFERENCE_Level = "Level";
public static final String SINGLEREFERENCE_Narrative = "Narrative"; public static final String SINGLEREFERENCE_Narrative = "Narrative";
public static final String BACKREF_Narrative = ""; public static final String BACKREF_Narrative = "";
public static final String SINGLEREFERENCE_Candidate = "Candidate";
public static final String BACKREF_Candidate = "";
// Static constants corresponding to searches // Static constants corresponding to searches
public static final String SEARCH_All = "All"; public static final String SEARCH_All = "All";
...@@ -74,6 +76,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -74,6 +76,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
private SingleAssociation<FactorScore, Factor> _Factor; private SingleAssociation<FactorScore, Factor> _Factor;
private SingleAssociation<FactorScore, Level> _Level; private SingleAssociation<FactorScore, Level> _Level;
private SingleAssociation<FactorScore, Narrative> _Narrative; private SingleAssociation<FactorScore, Narrative> _Narrative;
private SingleAssociation<FactorScore, Candidate> _Candidate;
// Private attributes corresponding to multiple references // Private attributes corresponding to multiple references
...@@ -99,6 +102,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -99,6 +102,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
String tmp_TestAnalysis = TestAnalysis.BACKREF_FactorScores; String tmp_TestAnalysis = TestAnalysis.BACKREF_FactorScores;
String tmp_Narrative = Narrative.BACKREF_FactorScores; String tmp_Narrative = Narrative.BACKREF_FactorScores;
String tmp_Candidate = Candidate.BACKREF_FactorScores;
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
...@@ -106,6 +110,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -106,6 +110,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
setupAssocMetaData_Factor(); setupAssocMetaData_Factor();
setupAssocMetaData_Level(); setupAssocMetaData_Level();
setupAssocMetaData_Narrative(); setupAssocMetaData_Narrative();
setupAssocMetaData_Candidate();
FIELD_ColorCode_Validators = (AttributeValidator[])setupAttribMetaData_ColorCode(validatorMapping).toArray (new AttributeValidator[0]); FIELD_ColorCode_Validators = (AttributeValidator[])setupAttribMetaData_ColorCode(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_Score_Validators = (AttributeValidator[])setupAttribMetaData_Score(validatorMapping).toArray (new AttributeValidator[0]); FIELD_Score_Validators = (AttributeValidator[])setupAttribMetaData_Score(validatorMapping).toArray (new AttributeValidator[0]);
FIELD_ColorRank_Validators = (AttributeValidator[])setupAttribMetaData_ColorRank(validatorMapping).toArray (new AttributeValidator[0]); FIELD_ColorRank_Validators = (AttributeValidator[])setupAttribMetaData_ColorRank(validatorMapping).toArray (new AttributeValidator[0]);
...@@ -183,6 +188,21 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -183,6 +188,21 @@ public abstract class BaseFactorScore extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_Candidate()
{
Map metaInfo = new HashMap ();
metaInfo.put ("backreferenceName", "FactorScores");
metaInfo.put ("dbcol", "candidate_id");
metaInfo.put ("name", "Candidate");
metaInfo.put ("type", "Candidate");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for FactorScore.Candidate:", metaInfo);
ATTRIBUTES_METADATA_FactorScore.put (SINGLEREFERENCE_Candidate, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static List setupAttribMetaData_ColorCode(Map validatorMapping) private static List setupAttribMetaData_ColorCode(Map validatorMapping)
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -297,6 +317,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -297,6 +317,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor = new SingleAssociation<FactorScore, Factor> (this, SINGLEREFERENCE_Factor, null, Factor.REFERENCE_Factor, "tl_score"); _Factor = new SingleAssociation<FactorScore, Factor> (this, SINGLEREFERENCE_Factor, null, Factor.REFERENCE_Factor, "tl_score");
_Level = new SingleAssociation<FactorScore, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_score"); _Level = new SingleAssociation<FactorScore, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_score");
_Narrative = new SingleAssociation<FactorScore, Narrative> (this, SINGLEREFERENCE_Narrative, Narrative.MULTIPLEREFERENCE_FactorScores, Narrative.REFERENCE_Narrative, "tl_score"); _Narrative = new SingleAssociation<FactorScore, Narrative> (this, SINGLEREFERENCE_Narrative, Narrative.MULTIPLEREFERENCE_FactorScores, Narrative.REFERENCE_Narrative, "tl_score");
_Candidate = new SingleAssociation<FactorScore, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_FactorScores, Candidate.REFERENCE_Candidate, "tl_score");
} }
...@@ -310,6 +331,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -310,6 +331,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor = new SingleAssociation<FactorScore, Factor> (this, SINGLEREFERENCE_Factor, null, Factor.REFERENCE_Factor, "tl_score"); _Factor = new SingleAssociation<FactorScore, Factor> (this, SINGLEREFERENCE_Factor, null, Factor.REFERENCE_Factor, "tl_score");
_Level = new SingleAssociation<FactorScore, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_score"); _Level = new SingleAssociation<FactorScore, Level> (this, SINGLEREFERENCE_Level, null, Level.REFERENCE_Level, "tl_score");
_Narrative = new SingleAssociation<FactorScore, Narrative> (this, SINGLEREFERENCE_Narrative, Narrative.MULTIPLEREFERENCE_FactorScores, Narrative.REFERENCE_Narrative, "tl_score"); _Narrative = new SingleAssociation<FactorScore, Narrative> (this, SINGLEREFERENCE_Narrative, Narrative.MULTIPLEREFERENCE_FactorScores, Narrative.REFERENCE_Narrative, "tl_score");
_Candidate = new SingleAssociation<FactorScore, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_FactorScores, Candidate.REFERENCE_Candidate, "tl_score");
return this; return this;
...@@ -727,6 +749,8 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -727,6 +749,8 @@ public abstract class BaseFactorScore extends BaseBusinessClass
result.add("Narrative"); result.add("Narrative");
result.add("Candidate");
return result; return result;
} }
...@@ -750,6 +774,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -750,6 +774,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
return _Narrative.getReferencedType (); return _Narrative.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
return _Candidate.getReferencedType ();
} }
else else
{ {
...@@ -776,6 +803,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -776,6 +803,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
return Narrative.MULTIPLEREFERENCE_FactorScores ; return Narrative.MULTIPLEREFERENCE_FactorScores ;
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
return Candidate.MULTIPLEREFERENCE_FactorScores ;
} }
else else
{ {
...@@ -802,6 +832,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -802,6 +832,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
return getNarrative (); return getNarrative ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
return getCandidate ();
} }
else else
{ {
...@@ -828,6 +861,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -828,6 +861,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
return getNarrative (getType); return getNarrative (getType);
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
return getCandidate (getType);
} }
else else
{ {
...@@ -854,6 +890,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -854,6 +890,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
return getNarrativeID (); return getNarrativeID ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
return getCandidateID ();
} }
else else
{ {
...@@ -880,6 +919,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -880,6 +919,9 @@ public abstract class BaseFactorScore extends BaseBusinessClass
}else if (assocName.equals (SINGLEREFERENCE_Narrative)) }else if (assocName.equals (SINGLEREFERENCE_Narrative))
{ {
setNarrative ((Narrative)(newValue)); setNarrative ((Narrative)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Candidate))
{
setCandidate ((Candidate)(newValue));
} }
else else
{ {
...@@ -1292,6 +1334,113 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1292,6 +1334,113 @@ public abstract class BaseFactorScore extends BaseBusinessClass
} }
/** /**
* Get the reference Candidate
*/
public Candidate getCandidate () throws StorageException
{
assertValid();
try
{
return (Candidate)(_Candidate.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in FactorScore:", this.getObjectID (), ", was trying to get Candidate:", getCandidateID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _Candidate.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Candidate getCandidate (Get getType) throws StorageException
{
assertValid();
return _Candidate.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getCandidateID ()
{
assertValid();
if (_Candidate == null)
{
return null;
}
else
{
return _Candidate.getID ();
}
}
/**
* Called prior to the assoc changing. Subclasses need not call super. If a field exception
* is thrown, the attribute change will fail. The new value is different to the old value.
*/
protected void preCandidateChange (Candidate newCandidate) throws FieldException
{
}
/**
* Called after the assoc changes.
* If a field exception is thrown, the value is still changed, however it
* may lead to the TX being rolled back
*/
protected void postCandidateChange () throws FieldException
{
}
public FieldWriteability getWriteability_Candidate ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference Candidate. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setCandidate (Candidate newCandidate) throws StorageException, FieldException
{
if (_Candidate.wouldReferencedChange (newCandidate))
{
assertValid();
Debug.assertion (getWriteability_Candidate () != FieldWriteability.FALSE, "Assoc Candidate is not writeable");
preCandidateChange (newCandidate);
Candidate oldCandidate = getCandidate ();
if (oldCandidate != null)
{
// This is to stop validation from triggering when we are removed
_Candidate.set (null);
oldCandidate.removeFromFactorScores ((FactorScore)(this));
}
_Candidate.set (newCandidate);
if (newCandidate != null)
{
newCandidate.addToFactorScores ((FactorScore)(this));
}
postCandidateChange ();
}
}
/**
* A list of multi assoc names e.g. list of strings. * A list of multi assoc names e.g. list of strings.
*/ */
public List<String> getMultiAssocs() public List<String> getMultiAssocs()
...@@ -1417,6 +1566,20 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1417,6 +1566,20 @@ public abstract class BaseFactorScore extends BaseBusinessClass
} }
} }
// Ensure we are removed from any loaded multi-associations that aren't mandatory
if (_Candidate.isLoaded () || getTransaction ().isObjectLoaded (_Candidate.getReferencedType (), getCandidateID ()))
{
Candidate referenced = getCandidate ();
if (referenced != null)
{
// Stop the callback
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG1, "Setting backreference to null FactorScores from ", getObjectID (), " to ", referenced.getObjectID ());
_Candidate.set (null);
referenced.removeFromFactorScores ((FactorScore)this);
}
}
} }
catch (Exception e) catch (Exception e)
{ {
...@@ -1484,6 +1647,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1484,6 +1647,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor.getPersistentSets (allSets); _Factor.getPersistentSets (allSets);
_Level.getPersistentSets (allSets); _Level.getPersistentSets (allSets);
_Narrative.getPersistentSets (allSets); _Narrative.getPersistentSets (allSets);
_Candidate.getPersistentSets (allSets);
} }
...@@ -1505,6 +1669,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1505,6 +1669,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor.setFromPersistentSets (objectID, allSets); _Factor.setFromPersistentSets (objectID, allSets);
_Level.setFromPersistentSets (objectID, allSets); _Level.setFromPersistentSets (objectID, allSets);
_Narrative.setFromPersistentSets (objectID, allSets); _Narrative.setFromPersistentSets (objectID, allSets);
_Candidate.setFromPersistentSets (objectID, allSets);
} }
...@@ -1586,6 +1751,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1586,6 +1751,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor.copyFrom (sourceFactorScore._Factor, linkToGhosts); _Factor.copyFrom (sourceFactorScore._Factor, linkToGhosts);
_Level.copyFrom (sourceFactorScore._Level, linkToGhosts); _Level.copyFrom (sourceFactorScore._Level, linkToGhosts);
_Narrative.copyFrom (sourceFactorScore._Narrative, linkToGhosts); _Narrative.copyFrom (sourceFactorScore._Narrative, linkToGhosts);
_Candidate.copyFrom (sourceFactorScore._Candidate, linkToGhosts);
} }
} }
...@@ -1630,6 +1796,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1630,6 +1796,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor.readExternalData(vals.get(SINGLEREFERENCE_Factor)); _Factor.readExternalData(vals.get(SINGLEREFERENCE_Factor));
_Level.readExternalData(vals.get(SINGLEREFERENCE_Level)); _Level.readExternalData(vals.get(SINGLEREFERENCE_Level));
_Narrative.readExternalData(vals.get(SINGLEREFERENCE_Narrative)); _Narrative.readExternalData(vals.get(SINGLEREFERENCE_Narrative));
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
} }
...@@ -1649,6 +1816,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1649,6 +1816,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
vals.put (SINGLEREFERENCE_Factor, _Factor.writeExternalData()); vals.put (SINGLEREFERENCE_Factor, _Factor.writeExternalData());
vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData()); vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData());
vals.put (SINGLEREFERENCE_Narrative, _Narrative.writeExternalData()); vals.put (SINGLEREFERENCE_Narrative, _Narrative.writeExternalData());
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
} }
...@@ -1680,6 +1848,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1680,6 +1848,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
_Factor.compare (otherFactorScore._Factor, listener); _Factor.compare (otherFactorScore._Factor, listener);
_Level.compare (otherFactorScore._Level, listener); _Level.compare (otherFactorScore._Level, listener);
_Narrative.compare (otherFactorScore._Narrative, listener); _Narrative.compare (otherFactorScore._Narrative, listener);
_Candidate.compare (otherFactorScore._Candidate, listener);
// Compare multiple assocs // Compare multiple assocs
...@@ -1708,6 +1877,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1708,6 +1877,7 @@ public abstract class BaseFactorScore extends BaseBusinessClass
visitor.visitAssociation (_Factor); visitor.visitAssociation (_Factor);
visitor.visitAssociation (_Level); visitor.visitAssociation (_Level);
visitor.visitAssociation (_Narrative); visitor.visitAssociation (_Narrative);
visitor.visitAssociation (_Candidate);
} }
...@@ -1732,6 +1902,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1732,6 +1902,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass
{ {
visitor.visit (_Narrative); visitor.visit (_Narrative);
} }
if (scope.includes (_Candidate))
{
visitor.visit (_Candidate);
}
} }
...@@ -1785,6 +1959,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1785,6 +1959,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass
{ {
return filter.matches (getNarrative ()); return filter.matches (getNarrative ());
} }
else if (attribName.equals (SINGLEREFERENCE_Candidate))
{
return filter.matches (getCandidate ());
}
else else
{ {
return super.testFilter (attribName, filter); return super.testFilter (attribName, filter);
...@@ -1858,6 +2036,12 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -1858,6 +2036,12 @@ public abstract class BaseFactorScore extends BaseBusinessClass
return this; return this;
} }
public SearchAll andCandidate (QueryFilter<Candidate> filter)
{
filter.addFilter (context, "tl_score.candidate_id", "Candidate");
return this;
}
public FactorScore[] public FactorScore[]
search (ObjectTransaction transaction) throws StorageException search (ObjectTransaction transaction) throws StorageException
{ {
...@@ -2015,6 +2199,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -2015,6 +2199,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass
{ {
return getWriteability_Narrative (); return getWriteability_Narrative ();
} }
else if (fieldName.equals (SINGLEREFERENCE_Candidate))
{
return getWriteability_Candidate ();
}
else if (fieldName.equals (FIELD_ColorCode)) else if (fieldName.equals (FIELD_ColorCode))
{ {
return getWriteability_ColorCode (); return getWriteability_ColorCode ();
...@@ -2268,6 +2456,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -2268,6 +2456,10 @@ public abstract class BaseFactorScore extends BaseBusinessClass
{ {
return toNarrative (); return toNarrative ();
} }
if (name.equals ("Candidate"))
{
return toCandidate ();
}
return super.to(name); return super.to(name);
...@@ -2305,6 +2497,12 @@ public abstract class BaseFactorScore extends BaseBusinessClass ...@@ -2305,6 +2497,12 @@ public abstract class BaseFactorScore extends BaseBusinessClass
{ {
return Narrative.REFERENCE_Narrative.new NarrativePipeLineFactory<From, Narrative> (this, new ORMSingleAssocPipe<Me, Narrative>(SINGLEREFERENCE_Narrative, filter)); return Narrative.REFERENCE_Narrative.new NarrativePipeLineFactory<From, Narrative> (this, new ORMSingleAssocPipe<Me, Narrative>(SINGLEREFERENCE_Narrative, filter));
} }
public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate () { return toCandidate (Filter.ALL); }
public Candidate.CandidatePipeLineFactory<From, Candidate> toCandidate (Filter<Candidate> filter)
{
return Candidate.REFERENCE_Candidate.new CandidatePipeLineFactory<From, Candidate> (this, new ORMSingleAssocPipe<Me, Candidate>(SINGLEREFERENCE_Candidate, filter));
}
} }
...@@ -2397,6 +2595,20 @@ class DummyFactorScore extends FactorScore ...@@ -2397,6 +2595,20 @@ class DummyFactorScore extends FactorScore
return Narrative.DUMMY_Narrative.getObjectID(); return Narrative.DUMMY_Narrative.getObjectID();
} }
public Candidate getCandidate () throws StorageException
{
return (Candidate)(Candidate.DUMMY_Candidate);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getCandidateID ()
{
return Candidate.DUMMY_Candidate.getObjectID();
}
} }
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<MULTIPLEREFERENCE name="TestAnalysises" type="TestAnalysis" backreferenceName="Candidate" /> <MULTIPLEREFERENCE name="TestAnalysises" type="TestAnalysis" backreferenceName="Candidate" />
<MULTIPLEREFERENCE name="JobApplications" type="JobApplication" backreferenceName="Candidate" /> <MULTIPLEREFERENCE name="JobApplications" type="JobApplication" backreferenceName="Candidate" />
<MULTIPLEREFERENCE name="FactorScores" type="FactorScore" backreferenceName="Candidate" />
<TABLE name="oneit_sec_user_extension" tablePrefix="object" polymorphic="TRUE"> <TABLE name="oneit_sec_user_extension" tablePrefix="object" polymorphic="TRUE">
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
<SINGLEREFERENCE name="Factor" type="Factor" dbcol="factor_number"/> <SINGLEREFERENCE name="Factor" type="Factor" dbcol="factor_number"/>
<SINGLEREFERENCE name="Level" type="Level" dbcol="level_number"/> <SINGLEREFERENCE name="Level" type="Level" dbcol="level_number"/>
<SINGLEREFERENCE name="Narrative" type="Narrative" dbcol="narrative_id" backreferenceName="FactorScores"/> <SINGLEREFERENCE name="Narrative" type="Narrative" dbcol="narrative_id" backreferenceName="FactorScores"/>
<SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="FactorScores"/>
</TABLE> </TABLE>
......
...@@ -48,7 +48,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -48,7 +48,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
} }
private String SELECT_COLUMNS = "{PREFIX}tl_score.object_id as id, {PREFIX}tl_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_score.score_number, {PREFIX}tl_score.color_rank, {PREFIX}tl_score.wghtd_score, {PREFIX}tl_score.test_analysis_id, {PREFIX}tl_score.factor_number, {PREFIX}tl_score.level_number, {PREFIX}tl_score.narrative_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}tl_score.object_id as id, {PREFIX}tl_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_score.score_number, {PREFIX}tl_score.color_rank, {PREFIX}tl_score.wghtd_score, {PREFIX}tl_score.test_analysis_id, {PREFIX}tl_score.factor_number, {PREFIX}tl_score.level_number, {PREFIX}tl_score.narrative_id, {PREFIX}tl_score.candidate_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
...@@ -105,7 +105,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -105,7 +105,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis)|| !tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Factor)|| !tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Factor)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Level)|| !tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Level)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Narrative)) !tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Narrative)||
!tl_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Candidate))
{ {
// We will need to retrieve it // We will need to retrieve it
idsToFetch.add (id.longValue()); idsToFetch.add (id.longValue());
...@@ -171,6 +172,16 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -171,6 +172,16 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
return results; return results;
} }
else if (refName.equals (FactorScore.SINGLEREFERENCE_Candidate))
{
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}tl_score " +
"WHERE " + SELECT_JOINS + "candidate_id = ?";
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, new Object[] { _objectID.longID () }, null, false);
return results;
}
else else
{ {
throw new IllegalArgumentException ("Illegal reference type:" + refName); throw new IllegalArgumentException ("Illegal reference type:" + refName);
...@@ -195,10 +206,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -195,10 +206,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_score " + "UPDATE {PREFIX}tl_score " +
"SET score_number = ?, color_rank = ?, wghtd_score = ?, test_analysis_id = ? , factor_number = ? , level_number = ? , narrative_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET score_number = ?, color_rank = ?, wghtd_score = ?, test_analysis_id = ? , factor_number = ? , level_number = ? , narrative_id = ? , candidate_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_score.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE tl_score.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Candidate)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -462,6 +473,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -462,6 +473,7 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Factor, r.getObject ("factor_number")); tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Factor, r.getObject ("factor_number"));
tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Level, r.getObject ("level_number")); tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Level, r.getObject ("level_number"));
tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Narrative, r.getObject ("narrative_id")); tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Narrative, r.getObject ("narrative_id"));
tl_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id"));
} }
...@@ -478,10 +490,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -478,10 +490,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_score " + "INSERT INTO {PREFIX}tl_score " +
" (score_number, color_rank, wghtd_score, test_analysis_id, factor_number, level_number, narrative_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " (score_number, color_rank, wghtd_score, test_analysis_id, factor_number, level_number, narrative_id, candidate_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_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))) .listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, tl_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, tl_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, tl_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))) .listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (SQLManager.CheckNull((Long)(tl_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Candidate)))) .listEntry (objectID.longID ()).toList().toArray());
tl_scorePSet.setStatus (PersistentSetStatus.PROCESSED); tl_scorePSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -9,7 +9,6 @@ import oneit.utils.filter.CollectionFilter; ...@@ -9,7 +9,6 @@ import oneit.utils.filter.CollectionFilter;
import oneit.utils.filter.Filter; import oneit.utils.filter.Filter;
import oneit.utils.parsers.FieldException; import oneit.utils.parsers.FieldException;
import performa.orm.types.CriteriaType; import performa.orm.types.CriteriaType;
import performa.utils.AnalysisEngine;
public class JobApplication extends BaseJobApplication public class JobApplication extends BaseJobApplication
...@@ -90,7 +89,7 @@ public class JobApplication extends BaseJobApplication ...@@ -90,7 +89,7 @@ public class JobApplication extends BaseJobApplication
Answer rightAnswer = Answer.createAnswer(getTransaction()); Answer rightAnswer = Answer.createAnswer(getTransaction());
addToProfileAssessmentAnswers(rightAnswer); addToProfileAssessmentAnswers(rightAnswer);
rightAnswer.setQuestion(question); rightAnswer.setQuestion(question.getRightQuestion());
} }
} }
} }
......
...@@ -93,11 +93,13 @@ public class AnalysisEngine ...@@ -93,11 +93,13 @@ public class AnalysisEngine
factorScore.setFactor(factor); factorScore.setFactor(factor);
factorScore.setLevel(jobApplication.getJob().getLevel()); factorScore.setLevel(jobApplication.getJob().getLevel());
factorScore.setScore(score); factorScore.setScore(score);
factorScore.setWghtdScore(score); //temp fix, to-do change later
factorScore.setColorCode(factorScoreResult.getColorCode()); factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0); factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative()); factorScore.setNarrative(factorScoreResult.getNarrative());
testAnalysis.addToFactorScores(factorScore); testAnalysis.addToFactorScores(factorScore);
jobApplication.getCandidate().addToFactorScores(factorScore);
} }
} }
......
...@@ -1965,7 +1965,7 @@ ul.security-level { ...@@ -1965,7 +1965,7 @@ ul.security-level {
border-color: #d1d1d1; border-color: #d1d1d1;
color: #4a4a4a; color: #4a4a4a;
padding: 0; padding: 0;
/* padding: 9px 24.12px;*/ /*padding: 9px 24.12px;*/
} }
.pagination.ratting-number>li:first-child>a, .pagination.ratting-number>li:first-child>span{ .pagination.ratting-number>li:first-child>a, .pagination.ratting-number>li:first-child>span{
border-top-left-radius: 100px; border-top-left-radius: 100px;
...@@ -1979,7 +1979,7 @@ ul.security-level { ...@@ -1979,7 +1979,7 @@ ul.security-level {
color: #4a4a4a; color: #4a4a4a;
font-size: 12px; font-size: 12px;
font-weight: 500; font-weight: 500;
padding: 53px 0 0; padding: 53px 0 87px;
text-align: center; text-align: center;
font-weight: bold; font-weight: bold;
} }
...@@ -2025,7 +2025,36 @@ ul.security-level { ...@@ -2025,7 +2025,36 @@ ul.security-level {
border: solid 1px #2a6ebf; border: solid 1px #2a6ebf;
color: #ffffff; color: #ffffff;
} }
span.left-s-label{
float: left;
font-weight: bold;
color: #4a4a4a;
font-size: 12px;
margin-left: 26px;
margin-right: 0;
width: 150px;
text-align: center;
display: table;
}
span.right-s-label{
float: right;
font-weight: bold;
color: #4a4a4a;
font-size: 12px;
margin-right: 26px;
margin-left: 0;
width: 150px;
text-align: center;
display: table;
}
.left-s-label div,.right-s-label div {
display: table-cell;
vertical-align: middle;
height: 40px;
}
.ips-box{
margin-bottom: 26px;
}
/*Selection Criteria Page All Step End*/ /*Selection Criteria Page All Step End*/
/*Complete Page*/ /*Complete Page*/
...@@ -3818,6 +3847,8 @@ img.alert-icon {float: left;} ...@@ -3818,6 +3847,8 @@ img.alert-icon {float: left;}
.main-menu li a {padding: 12px 0 12px 12px;} .main-menu li a {padding: 12px 0 12px 12px;}
.form-page-area {padding: 4.89% 8.5%;} .form-page-area {padding: 4.89% 8.5%;}
.main-content-area{padding: 3% 8.56% 0;} .main-content-area{padding: 3% 8.56% 0;}
.auto-save{padding: 45px 0 70px;}
.ips-box {margin-bottom: 15px;}
} }
@media screen and (max-width: 991px){ @media screen and (max-width: 991px){
...@@ -3826,7 +3857,7 @@ img.alert-icon {float: left;} ...@@ -3826,7 +3857,7 @@ img.alert-icon {float: left;}
.main-application-outline {width: 92%;} .main-application-outline {width: 92%;}
.app-block {margin: 45px 0 35px;padding: 43px 14px 15px;} .app-block {margin: 45px 0 35px;padding: 43px 14px 15px;}
.app-out-btn{margin-bottom: 8%;} .app-out-btn{margin-bottom: 8%;}
.ratting-number a label{padding: 7px 15.12px;} .ratting-number a label{padding: 7px 17.12px;}
.ratting-box span{margin: 0 8px;} .ratting-box span{margin: 0 8px;}
.app-complete-text{width: 75%;} .app-complete-text{width: 75%;}
.job-post-complete {min-height: 410px;} .job-post-complete {min-height: 410px;}
...@@ -3882,6 +3913,9 @@ img.alert-icon {float: left;} ...@@ -3882,6 +3913,9 @@ img.alert-icon {float: left;}
.alert-icon {width: 26px;} .alert-icon {width: 26px;}
.close-alert{margin-top: 2px;} .close-alert{margin-top: 2px;}
.message-common{margin: 15px 0;} .message-common{margin: 15px 0;}
.left-s-label div, .right-s-label div{height: 36px;}
span.left-s-label{margin-right: 0;}
span.right-s-label{margin-left: 0;}
} }
@media screen and (max-width: 980px){ @media screen and (max-width: 980px){
...@@ -4032,7 +4066,8 @@ img.alert-icon {float: left;} ...@@ -4032,7 +4066,8 @@ img.alert-icon {float: left;}
.ratting-number {left: 0;margin: 0;padding-left: 0;position: absolute;right: 0;top: 0;width: 100%;} .ratting-number {left: 0;margin: 0;padding-left: 0;position: absolute;right: 0;top: 0;width: 100%;}
.pagination.ratting-number > li > a, .pagination.ratting-number > li > span{float: left;margin-left: 0;width: 14.28%;border-left: 0 none;} .pagination.ratting-number > li > a, .pagination.ratting-number > li > span{float: left;margin-left: 0;width: 14.28%;border-left: 0 none;}
.ratting-number a label{padding: 14px 0;} .ratting-number a label{padding: 14px 0;}
.ratting-number a label{padding: 14px 0;} .pagination.ratting-number > li:first-child > a, .pagination.ratting-number > li:first-child > span{border-bottom-left-radius: 0;border-top-left-radius: 0;border-left: 0;} 3888 .pagination.ratting-number > li:first-child > a, .pagination.ratting-number > li:first-child > span{border-bottom-left-radius: 0;border-top-left-radius: 0;border-left: 0;} .pagination.ratting-number > li:last-child > a, .pagination.ratting-number > li:last-child > span{border-bottom-right-radius: 0;border-top-right-radius: 0;border-right: 0;} .pagination.ratting-number > li:first-child > a, .pagination.ratting-number > li:first-child > span{border-bottom-left-radius: 0;border-top-left-radius: 0;border-left: 0;}
.pagination.ratting-number > li:last-child > a, .pagination.ratting-number > li:last-child > span{border-bottom-right-radius: 0;border-top-right-radius: 0;border-right: 0;}
.ratting-box {border: 0 none;border-radius: 0;padding: 30px 0 33px;top: -2px;float: left;width: 100%;} .ratting-box {border: 0 none;border-radius: 0;padding: 30px 0 33px;top: -2px;float: left;width: 100%;}
.auto-save{padding: 24px 0;float: left;width: 100%;} .auto-save{padding: 24px 0;float: left;width: 100%;}
.ratting-box span:first-child {float: left;margin: 13px 9px;position: relative;top: 25px;width: 50px;text-align: left;} .ratting-box span:first-child {float: left;margin: 13px 9px;position: relative;top: 25px;width: 50px;text-align: left;}
...@@ -4060,6 +4095,11 @@ img.alert-icon {float: left;} ...@@ -4060,6 +4095,11 @@ img.alert-icon {float: left;}
.slider-prev img{position: relative;left: -4px;} .slider-prev img{position: relative;left: -4px;}
.slider-next img {position: relative;right: -4px;} .slider-next img {position: relative;right: -4px;}
.message-common {padding: 15px;width: 93%;} .message-common {padding: 15px;width: 93%;}
.ratting-box span.left-s-label{width: 150px;line-height: normal;margin-right: 0;display: table;}
.ratting-box span.right-s-label{width: 150px;line-height: normal;margin-left: 0;display: table;}
.pagination.ratting-number.ipsative-rating > li > a, .pagination.ratting-number.ipsative-rating > li > span{width: 20%;}
.ips-box {margin-bottom: 0;}
.left-s-label div, .right-s-label div {height: auto;}
} }
@media screen and (max-width: 750px){ @media screen and (max-width: 750px){
...@@ -4182,6 +4222,8 @@ img.alert-icon {float: left;} ...@@ -4182,6 +4222,8 @@ img.alert-icon {float: left;}
} }
@media screen and (max-width: 420px){ @media screen and (max-width: 420px){
.main-pack-type li {width: 74%;} .main-pack-type li {width: 74%;}
.ratting-box span.left-s-label{width: 105px;}
.ratting-box span.right-s-label{width: 105px;}
} }
@media screen and (max-width: 360px){ @media screen and (max-width: 360px){
.payment-title {font-size: 14px;} .payment-title {font-size: 14px;}
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
jobStatus = JobStatus.forName((String) request.getParameter("JobStatus")); jobStatus = JobStatus.forName((String) request.getParameter("JobStatus"));
} }
Job[] jobs = jobStatus != null ? Job[] jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(jobStatus))
Job.SearchByAll().andJobStatus(new EqualsFilter<>(jobStatus)).search(transaction) : .andSecUser(new EqualsFilter(SecUser.getTXUser(transaction)))
Job.SearchByAll().search(transaction); .search(transaction);
process.setAttribute("JobStatus", jobStatus); process.setAttribute("JobStatus", jobStatus);
%> %>
......
...@@ -7,7 +7,10 @@ ...@@ -7,7 +7,10 @@
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
//TODO: filter with Client; //TODO: filter with Client;
Job[] jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.OPEN)).search(transaction); Job[] jobs = Job.SearchByAll().andJobStatus(new EqualsFilter<>(JobStatus.OPEN))
.andSecUser(new EqualsFilter(SecUser.getTXUser(transaction)))
.search(transaction);
Article jobsArticle = WebUtils.getArticleByShortCut(transaction, WebUtils.JOBS); Article jobsArticle = WebUtils.getArticleByShortCut(transaction, WebUtils.JOBS);
String nextPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.VIEW_APPLICANTS).toMap()); String nextPage = jobsArticle.getLink(request, CollectionUtils.mapEntry("cms.rm", WebUtils.VIEW_APPLICANTS).toMap());
String homePage = WebUtils.getSamePageInRenderMode(request, "Page"); String homePage = WebUtils.getSamePageInRenderMode(request, "Page");
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
<%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%> <%@ include file="/inc/stdimports50.jsp" %><%-- This is in cougar --%>
<%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%> <%@ include file="/inc/stdcms.jsp" %><%-- This is in cougar --%>
<%@ include file="/extensions/performa/inc/stdimports.jsp" %> <%@ include file="/extensions/performa/inc/stdimports.jsp" %>
<%@ page import="oneit.utils.text.FormatUtils" %>
<oneit:dynIncluded> <oneit:dynIncluded>
<% <%
...@@ -80,23 +81,54 @@ ...@@ -80,23 +81,54 @@
if(questionNumber < totNoOfQuestions) if(questionNumber < totNoOfQuestions)
{ {
Answer answer = jobApplication.getAnswerForQuestion(allQuestions.get(questionNumber)); Question question = allQuestions.get(questionNumber);
QuestionType questionType = question.getQuestionType();
Answer answer = jobApplication.getAnswerForQuestion(question);
String optionKey = WebUtils.getInputKey(request, answer, Answer.FIELD_AnswerNo); String optionKey = WebUtils.getInputKey(request, answer, Answer.FIELD_AnswerNo);
String formValue = formBuilder.fieldValue (optionKey, answer.getAnswerNo() == null ? "" : String.valueOf(answer.getAnswerNo())); String formValue = formBuilder.fieldValue (optionKey, answer.getAnswerNo() == null ? "" : String.valueOf(answer.getAnswerNo()));
String numberText = (questionNumber + 1) + "/" + totNoOfQuestions; String numberText = (questionNumber + 1) + "/" + totNoOfQuestions;
if(questionType == QuestionType.SCALAR)
{
%> %>
<div class="rateing-title"> <div class="rateing-title">
Rate the importance of each item below Rate the importance of each item below
<span><oneit:toString value="<%= numberText %>" mode="EscapeHTML"/></span> <span><oneit:toString value="<%= numberText %>" mode="EscapeHTML"/></span>
</div> </div>
<div class="rating-box-title"> <div class="rating-box-title">
<oneit:toString value="<%= answer.getQuestion().getDescription() %>" mode="EscapeHTML"/> <oneit:toString value="<%= question.getDescription() %>" mode="EscapeHTML"/>
</div> </div>
<%
}
else
{
%>
<div class="rateing-title">
Select your preference on the scale below
<span><oneit:toString value="<%= numberText %>" mode="EscapeHTML"/></span>
</div>
<%
}
%>
<div class="ratting-box"> <div class="ratting-box">
<%
if(questionType == QuestionType.SCALAR)
{
%>
<span>Very little importance</span> <span>Very little importance</span>
<%
}
else
{
%>
<span class="left-s-label"><div><%= FormatUtils.stringify(question.getDescription(), "EscapeHTML") %></div></span> <!-- toString tag not used due to styling issue with additional span tag -->
<%
}
%>
<ul class="pagination ratting-number"> <ul class="pagination ratting-number">
<% <%
for(int index=1; index<=7; index++) for(int index=1; index <= (questionType == QuestionType.SCALAR ? 7 : 5); index++)
{ {
String activeStr = (CollectionUtils.equals(String.valueOf(index), formValue) ? "active" : ""); String activeStr = (CollectionUtils.equals(String.valueOf(index), formValue) ? "active" : "");
String selectedStr = (CollectionUtils.equals(String.valueOf(index), formValue) ? "checked" : ""); String selectedStr = (CollectionUtils.equals(String.valueOf(index), formValue) ? "checked" : "");
...@@ -111,7 +143,20 @@ ...@@ -111,7 +143,20 @@
} }
%> %>
</ul> </ul>
<%
if(questionType == QuestionType.SCALAR)
{
%>
<span>High importance</span> <span>High importance</span>
<%
}
else if(question.getRightQuestion() != null)
{
%>
<span class="right-s-label"><div><%= FormatUtils.stringify(question.getRightQuestion().getDescription(), "EscapeHTML") %></div></span>
<%
}
%>
</div> </div>
<% <%
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment