Commit 878b1b1e by Nilu Committed by Harsh Shah

call analysis engine when submitting the application

parent 5bd1ea68
...@@ -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="job_id" type="Long" length="11" nullable="true"/>
<column name="level_id" type="Long" length="11" nullable="true"/> <column name="level_id" type="Long" length="11" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="true"/> <column name="candidate_id" type="Long" length="11" nullable="true"/>
</NODE> </NODE>
......
...@@ -8,6 +8,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -8,6 +8,7 @@ CREATE TABLE tl_test_analysis (
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
, ,
job_id numeric(12) NULL,
level_id numeric(12) NULL, level_id numeric(12) NULL,
candidate_id numeric(12) NULL candidate_id numeric(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
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
, ,
job_id number(12) NULL,
level_id number(12) NULL, level_id number(12) NULL,
candidate_id number(12) NULL candidate_id number(12) NULL
); );
......
...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis ( ...@@ -9,6 +9,7 @@ CREATE TABLE tl_test_analysis (
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
, ,
job_id numeric(12) NULL,
level_id numeric(12) NULL, level_id numeric(12) NULL,
candidate_id numeric(12) NULL candidate_id numeric(12) NULL
); );
......
...@@ -10,6 +10,7 @@ import oneit.servlets.process.*; ...@@ -10,6 +10,7 @@ import oneit.servlets.process.*;
import oneit.utils.*; import oneit.utils.*;
import performa.orm.*; import performa.orm.*;
import performa.orm.types.ApplicationStatus; import performa.orm.types.ApplicationStatus;
import performa.utils.AnalysisEngine;
public class CompleteApplicationFP extends SaveFP public class CompleteApplicationFP extends SaveFP
...@@ -21,6 +22,8 @@ public class CompleteApplicationFP extends SaveFP ...@@ -21,6 +22,8 @@ public class CompleteApplicationFP extends SaveFP
jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED); jobApplication.setApplicationStatus(ApplicationStatus.SUBMITTED);
AnalysisEngine.analyseAnswers(jobApplication);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING2, "Job Application Completed", jobApplication);
return super.processForm(process, submission, params); return super.processForm(process, submission, params);
......
...@@ -38,7 +38,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor ...@@ -38,7 +38,7 @@ public class TestAnalysisFP extends ORMProcessFormProcessor
loadData(testInput, process.getTransaction()); loadData(testInput, process.getTransaction());
AnalysisEngine.analyseAnswers(testInput); // AnalysisEngine.analyseAnswers(testInput);
try try
{ {
......
...@@ -38,6 +38,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -38,6 +38,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Static constants corresponding to field names // Static constants corresponding to field names
public static final String SINGLEREFERENCE_Job = "Job";
public static final String SINGLEREFERENCE_Level = "Level"; public static final String SINGLEREFERENCE_Level = "Level";
public static final String BACKREF_Level = ""; public static final String BACKREF_Level = "";
public static final String SINGLEREFERENCE_Candidate = "Candidate"; public static final String SINGLEREFERENCE_Candidate = "Candidate";
...@@ -56,6 +57,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -56,6 +57,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Private attributes corresponding to single references // Private attributes corresponding to single references
private SingleAssociation<TestAnalysis, Job> _Job;
private SingleAssociation<TestAnalysis, Level> _Level; private SingleAssociation<TestAnalysis, Level> _Level;
private SingleAssociation<TestAnalysis, Candidate> _Candidate; private SingleAssociation<TestAnalysis, Candidate> _Candidate;
...@@ -85,6 +87,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -85,6 +87,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping")); Map validatorMapping = ((Map)ConfigMgr.getConfigObject ("CONFIG.ORMVALIDATOR", "ValidatorMapping"));
setupAssocMetaData_FactorScores(); setupAssocMetaData_FactorScores();
setupAssocMetaData_Job();
setupAssocMetaData_Level(); setupAssocMetaData_Level();
setupAssocMetaData_Candidate(); setupAssocMetaData_Candidate();
...@@ -116,6 +119,20 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -116,6 +119,20 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Meta Info setup // Meta Info setup
private static void setupAssocMetaData_Job()
{
Map metaInfo = new HashMap ();
metaInfo.put ("dbcol", "job_id");
metaInfo.put ("name", "Job");
metaInfo.put ("type", "Job");
LogMgr.log (BUSINESS_OBJECTS, LogLevel.DEBUG2, "Metadata for TestAnalysis.Job:", metaInfo);
ATTRIBUTES_METADATA_TestAnalysis.put (SINGLEREFERENCE_Job, Collections.unmodifiableMap (metaInfo));
}
// Meta Info setup
private static void setupAssocMetaData_Level() private static void setupAssocMetaData_Level()
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
...@@ -180,6 +197,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -180,6 +197,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super._initialiseAssociations (); super._initialiseAssociations ();
_Job = new SingleAssociation<TestAnalysis, Job> (this, SINGLEREFERENCE_Job, null, Job.REFERENCE_Job, "tl_test_analysis");
_Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis"); _Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis");
_Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis"); _Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis");
_FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore); _FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore);
...@@ -192,6 +210,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -192,6 +210,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super.initialiseReference (); super.initialiseReference ();
_Job = new SingleAssociation<TestAnalysis, Job> (this, SINGLEREFERENCE_Job, null, Job.REFERENCE_Job, "tl_test_analysis");
_Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis"); _Level = new SingleAssociation<TestAnalysis, Level> (this, SINGLEREFERENCE_Level, Level.MULTIPLEREFERENCE_TestAnalysises, Level.REFERENCE_Level, "tl_test_analysis");
_Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis"); _Candidate = new SingleAssociation<TestAnalysis, Candidate> (this, SINGLEREFERENCE_Candidate, Candidate.MULTIPLEREFERENCE_TestAnalysises, Candidate.REFERENCE_Candidate, "tl_test_analysis");
_FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore); _FactorScores = new MultipleAssociation<TestAnalysis, FactorScore> (this, MULTIPLEREFERENCE_FactorScores, FactorScore.SINGLEREFERENCE_TestAnalysis, FactorScore.REFERENCE_FactorScore);
...@@ -212,6 +231,8 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -212,6 +231,8 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
List result = super.getSingleAssocs (); List result = super.getSingleAssocs ();
result.add("Job");
result.add("Level"); result.add("Level");
result.add("Candidate"); result.add("Candidate");
...@@ -227,7 +248,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -227,7 +248,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
return _Job.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return _Level.getReferencedType (); return _Level.getReferencedType ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -247,7 +271,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -247,7 +271,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
return null ;
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return Level.MULTIPLEREFERENCE_TestAnalysises ; return Level.MULTIPLEREFERENCE_TestAnalysises ;
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -267,7 +294,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -267,7 +294,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJob ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevel (); return getLevel ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -287,7 +317,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -287,7 +317,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJob (getType);
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevel (getType); return getLevel (getType);
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -307,7 +340,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -307,7 +340,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
return getJobID ();
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
return getLevelID (); return getLevelID ();
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -327,7 +363,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -327,7 +363,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over == null!"); throw new RuntimeException ("Game over == null!");
} }
else if (assocName.equals (SINGLEREFERENCE_Level)) else if (assocName.equals (SINGLEREFERENCE_Job))
{
setJob ((Job)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Level))
{ {
setLevel ((Level)(newValue)); setLevel ((Level)(newValue));
}else if (assocName.equals (SINGLEREFERENCE_Candidate)) }else if (assocName.equals (SINGLEREFERENCE_Candidate))
...@@ -343,6 +382,100 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -343,6 +382,100 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
/** /**
* Get the reference Job
*/
public Job getJob () throws StorageException
{
assertValid();
try
{
return (Job)(_Job.get ());
}
catch (ClassCastException e)
{
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Cache collision in TestAnalysis:", this.getObjectID (), ", was trying to get Job:", getJobID ());
LogMgr.log (BUSINESS_OBJECTS, LogLevel.SYSTEMERROR2, "Instead I got:", _Job.get ().getClass ());
throw e;
}
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Job getJob (Get getType) throws StorageException
{
assertValid();
return _Job.get(getType);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getJobID ()
{
assertValid();
if (_Job == null)
{
return null;
}
else
{
return _Job.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 preJobChange (Job newJob) 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 postJobChange () throws FieldException
{
}
public FieldWriteability getWriteability_Job ()
{
return getFieldWritabilityUtil (FieldWriteability.TRUE);
}
/**
* Set the reference Job. Checks to ensure a new value
* has been supplied. If so, marks the reference as altered and sets it.
*/
public void setJob (Job newJob) throws StorageException, FieldException
{
if (_Job.wouldReferencedChange (newJob))
{
assertValid();
Debug.assertion (getWriteability_Job () != FieldWriteability.FALSE, "Assoc Job is not writeable");
preJobChange (newJob);
_Job.set (newJob);
postJobChange ();
}
}
/**
* Get the reference Level * Get the reference Level
*/ */
public Level getLevel () throws StorageException public Level getLevel () throws StorageException
...@@ -864,6 +997,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -864,6 +997,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (myID, "tl_test_analysis", myPSetStatus); PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (myID, "tl_test_analysis", myPSetStatus);
tl_test_analysisPSet.setAttrib (FIELD_ObjectID, myID); tl_test_analysisPSet.setAttrib (FIELD_ObjectID, myID);
_Job.getPersistentSets (allSets);
_Level.getPersistentSets (allSets); _Level.getPersistentSets (allSets);
_Candidate.getPersistentSets (allSets); _Candidate.getPersistentSets (allSets);
...@@ -880,6 +1014,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -880,6 +1014,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (objectID, "tl_test_analysis"); PersistentSet tl_test_analysisPSet = allSets.getPersistentSet (objectID, "tl_test_analysis");
_Job.setFromPersistentSets (objectID, allSets);
_Level.setFromPersistentSets (objectID, allSets); _Level.setFromPersistentSets (objectID, allSets);
_Candidate.setFromPersistentSets (objectID, allSets); _Candidate.setFromPersistentSets (objectID, allSets);
...@@ -928,6 +1063,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -928,6 +1063,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
BaseTestAnalysis sourceTestAnalysis = (BaseTestAnalysis)(source); BaseTestAnalysis sourceTestAnalysis = (BaseTestAnalysis)(source);
_Job.copyFrom (sourceTestAnalysis._Job, linkToGhosts);
_Level.copyFrom (sourceTestAnalysis._Level, linkToGhosts); _Level.copyFrom (sourceTestAnalysis._Level, linkToGhosts);
_Candidate.copyFrom (sourceTestAnalysis._Candidate, linkToGhosts); _Candidate.copyFrom (sourceTestAnalysis._Candidate, linkToGhosts);
...@@ -967,6 +1103,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -967,6 +1103,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super.readExternalData(vals); super.readExternalData(vals);
_Job.readExternalData(vals.get(SINGLEREFERENCE_Job));
_Level.readExternalData(vals.get(SINGLEREFERENCE_Level)); _Level.readExternalData(vals.get(SINGLEREFERENCE_Level));
_Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate)); _Candidate.readExternalData(vals.get(SINGLEREFERENCE_Candidate));
_FactorScores.readExternalData(vals.get(MULTIPLEREFERENCE_FactorScores)); _FactorScores.readExternalData(vals.get(MULTIPLEREFERENCE_FactorScores));
...@@ -981,6 +1118,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -981,6 +1118,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super.writeExternalData(vals); super.writeExternalData(vals);
vals.put (SINGLEREFERENCE_Job, _Job.writeExternalData());
vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData()); vals.put (SINGLEREFERENCE_Level, _Level.writeExternalData());
vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData()); vals.put (SINGLEREFERENCE_Candidate, _Candidate.writeExternalData());
vals.put (MULTIPLEREFERENCE_FactorScores, _FactorScores.writeExternalData()); vals.put (MULTIPLEREFERENCE_FactorScores, _FactorScores.writeExternalData());
...@@ -999,6 +1137,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -999,6 +1137,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
// Compare single assocs // Compare single assocs
_Job.compare (otherTestAnalysis._Job, listener);
_Level.compare (otherTestAnalysis._Level, listener); _Level.compare (otherTestAnalysis._Level, listener);
_Candidate.compare (otherTestAnalysis._Candidate, listener); _Candidate.compare (otherTestAnalysis._Candidate, listener);
...@@ -1022,6 +1161,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1022,6 +1161,7 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super.visitAttributes (visitor); super.visitAttributes (visitor);
visitor.visitAssociation (_Job);
visitor.visitAssociation (_Level); visitor.visitAssociation (_Level);
visitor.visitAssociation (_Candidate); visitor.visitAssociation (_Candidate);
visitor.visitAssociation (_FactorScores); visitor.visitAssociation (_FactorScores);
...@@ -1033,6 +1173,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1033,6 +1173,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
super.visitAssociations (visitor, scope); super.visitAssociations (visitor, scope);
if (scope.includes (_Job))
{
visitor.visit (_Job);
}
if (scope.includes (_Level)) if (scope.includes (_Level))
{ {
visitor.visit (_Level); visitor.visit (_Level);
...@@ -1070,6 +1214,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1070,6 +1214,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
throw new RuntimeException ("Game over man!!"); throw new RuntimeException ("Game over man!!");
} }
else if (attribName.equals (SINGLEREFERENCE_Job))
{
return filter.matches (getJob ());
}
else if (attribName.equals (SINGLEREFERENCE_Level)) else if (attribName.equals (SINGLEREFERENCE_Level))
{ {
return filter.matches (getLevel ()); return filter.matches (getLevel ());
...@@ -1109,6 +1257,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1109,6 +1257,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
} }
public SearchAll andJob (QueryFilter<Job> filter)
{
filter.addFilter (context, "tl_test_analysis.job_id", "Job");
return this;
}
public SearchAll andLevel (QueryFilter<Level> filter) public SearchAll andLevel (QueryFilter<Level> filter)
{ {
filter.addFilter (context, "tl_test_analysis.level_id", "Level"); filter.addFilter (context, "tl_test_analysis.level_id", "Level");
...@@ -1206,6 +1360,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1206,6 +1360,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
return getWriteability_FactorScores (); return getWriteability_FactorScores ();
} }
else if (fieldName.equals (SINGLEREFERENCE_Job))
{
return getWriteability_Job ();
}
else if (fieldName.equals (SINGLEREFERENCE_Level)) else if (fieldName.equals (SINGLEREFERENCE_Level))
{ {
return getWriteability_Level (); return getWriteability_Level ();
...@@ -1339,6 +1497,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1339,6 +1497,10 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
{ {
return toFactorScores (); return toFactorScores ();
} }
if (name.equals ("Job"))
{
return toJob ();
}
if (name.equals ("Level")) if (name.equals ("Level"))
{ {
return toLevel (); return toLevel ();
...@@ -1352,6 +1514,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass ...@@ -1352,6 +1514,12 @@ public abstract class BaseTestAnalysis extends BaseBusinessClass
return super.to(name); return super.to(name);
} }
public Job.JobPipeLineFactory<From, Job> toJob () { return toJob (Filter.ALL); }
public Job.JobPipeLineFactory<From, Job> toJob (Filter<Job> filter)
{
return Job.REFERENCE_Job.new JobPipeLineFactory<From, Job> (this, new ORMSingleAssocPipe<Me, Job>(SINGLEREFERENCE_Job, filter));
}
public Level.LevelPipeLineFactory<From, Level> toLevel () { return toLevel (Filter.ALL); } public Level.LevelPipeLineFactory<From, Level> toLevel () { return toLevel (Filter.ALL); }
public Level.LevelPipeLineFactory<From, Level> toLevel (Filter<Level> filter) public Level.LevelPipeLineFactory<From, Level> toLevel (Filter<Level> filter)
...@@ -1401,6 +1569,20 @@ class DummyTestAnalysis extends TestAnalysis ...@@ -1401,6 +1569,20 @@ class DummyTestAnalysis extends TestAnalysis
} }
public Job getJob () throws StorageException
{
return (Job)(Job.DUMMY_Job);
}
/**
* Get the object id for the referenced object. Does not force a DB access.
*/
public Long getJobID ()
{
return Job.DUMMY_Job.getObjectID();
}
public Level getLevel () throws StorageException public Level getLevel () throws StorageException
{ {
return (Level)(Level.DUMMY_Level); return (Level)(Level.DUMMY_Level);
......
...@@ -10,6 +10,7 @@ import oneit.utils.filter.CollectionFilter; ...@@ -10,6 +10,7 @@ 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
......
...@@ -8,6 +8,7 @@ ...@@ -8,6 +8,7 @@
<TABLE name="tl_test_analysis" tablePrefix="object" polymorphic="FALSE"> <TABLE name="tl_test_analysis" tablePrefix="object" polymorphic="FALSE">
<SINGLEREFERENCE name="Job" type="Job" dbcol="job_id"/>
<SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" backreferenceName="TestAnalysises"/> <SINGLEREFERENCE name="Level" type="Level" dbcol="level_id" backreferenceName="TestAnalysises"/>
<SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="TestAnalysises"/> <SINGLEREFERENCE name="Candidate" type="Candidate" dbcol="candidate_id" backreferenceName="TestAnalysises"/>
......
...@@ -38,7 +38,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -38,7 +38,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
} }
private String SELECT_COLUMNS = "{PREFIX}tl_test_analysis.object_id as id, {PREFIX}tl_test_analysis.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_test_analysis.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_test_analysis.level_id, {PREFIX}tl_test_analysis.candidate_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}tl_test_analysis.object_id as id, {PREFIX}tl_test_analysis.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}tl_test_analysis.object_CREATED_DATE as CREATED_DATE, {PREFIX}tl_test_analysis.job_id, {PREFIX}tl_test_analysis.level_id, {PREFIX}tl_test_analysis.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
...@@ -89,6 +89,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -89,6 +89,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched // Check for persistent sets already prefetched
if (false || !tl_test_analysisPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || if (false || !tl_test_analysisPSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Job)||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Level)|| !tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Level)||
!tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Candidate)) !tl_test_analysisPSet.containsAttrib(TestAnalysis.SINGLEREFERENCE_Candidate))
{ {
...@@ -180,10 +181,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -180,10 +181,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}tl_test_analysis " + "UPDATE {PREFIX}tl_test_analysis " +
"SET level_id = ? , candidate_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " + "SET job_id = ? , level_id = ? , candidate_id = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE tl_test_analysis.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE tl_test_analysis.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Job)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -440,6 +441,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -440,6 +441,7 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
tl_test_analysisPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE")); tl_test_analysisPSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Job, r.getObject ("job_id"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Level, r.getObject ("level_id")); tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Level, r.getObject ("level_id"));
tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id")); tl_test_analysisPSet.setAttrib(TestAnalysis.SINGLEREFERENCE_Candidate, r.getObject ("candidate_id"));
...@@ -458,10 +460,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr ...@@ -458,10 +460,10 @@ public class TestAnalysisPersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}tl_test_analysis " + "INSERT INTO {PREFIX}tl_test_analysis " +
" ( level_id, candidate_id, object_id, object_LAST_UPDATED_DATE, object_CREATED_DATE) " + " ( job_id, level_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 (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils .listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Job)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(tl_test_analysisPSet.getAttrib (TestAnalysis.SINGLEREFERENCE_Candidate)))) .listEntry (objectID.longID ()).toList().toArray());
tl_test_analysisPSet.setStatus (PersistentSetStatus.PROCESSED); tl_test_analysisPSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -15,93 +15,92 @@ import performa.orm.types.*; ...@@ -15,93 +15,92 @@ import performa.orm.types.*;
*/ */
public class AnalysisEngine public class AnalysisEngine
{ {
public static void analyseAnswers(TestInput testInput) throws StorageException, FieldException public static void analyseAnswers(JobApplication jobApplication) throws StorageException, FieldException
{ {
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Inside AnalysisEngine --> analyseAnswers"); LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Inside AnalysisEngine --> analyseAnswers");
ObjectTransaction objTran = testInput.getTransaction(); ObjectTransaction objTran = jobApplication.getTransaction();
Set<Factor> levelFactors = testInput.pipelineTestInput().toLevel().toFactors().toFactor().uniqueVals(); Set<Factor> levelFactors = jobApplication.pipelineJobApplication().toJob().toLevel().toFactors().toFactor().uniqueVals();
Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors)); Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors));
//Preloading Data //Preloading Data
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals(); jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toSection().uniqueVals();
testInput.pipelineTestInput().toCandidates().toJobApplications().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals(); jobApplication.pipelineJobApplication().toProfileAssessmentAnswers().toQuestion().toFactors().toFactor().uniqueVals();
Factor.pipesFactor(levelFactors).toResults().uniqueVals(); Factor.pipesFactor(levelFactors).toResults().uniqueVals();
for (Candidate candidate : testInput.getCandidatesSet()) LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Processing Job Application ", jobApplication);
{
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Processing candidate ", candidate); Map<Factor, Integer> factorScoreMap = new HashMap();
Map<Factor, Integer> factorScoreMap = new HashMap();
for(JobApplication application: candidate.getJobApplicationsSet()) for (Answer answer : jobApplication.getProfileAssessmentAnswersSet())
{
Set<FactorQuestionLink> links = answer.pipelineAnswer().toQuestion().toFactors(factorFilter).uniqueVals();
for (FactorQuestionLink link : links)
{ {
for (Answer answer : application.getProfileAssessmentAnswersSet()) int factorScore = 0;
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{ {
Set<FactorQuestionLink> links = answer.pipelineAnswer().toQuestion().toFactors(factorFilter).uniqueVals(); factorScore = factorScoreMap.get(factor);
}
for (FactorQuestionLink link : links) if(link.isTrue(link.getReverseScore()))
{
if(answer.getQuestion().getQuestionType() == QuestionType.IPSATIVE)
{ {
int factorScore = 0; factorScore += (10 - answer.getAnswerNo());
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor))
{
factorScore = factorScoreMap.get(factor);
}
if(link.isTrue(link.getReverseScore()))
{
if(answer.getQuestion().getQuestionType() == QuestionType.IPSATIVE)
{
factorScore += (10 - answer.getAnswerNo());
}
else
{
factorScore += (8 - answer.getAnswerNo());
}
}
else
{
factorScore += answer.getAnswerNo();
}
factorScoreMap.put(factor, factorScore);
} }
else
{
factorScore += (8 - answer.getAnswerNo());
}
}
else
{
factorScore += answer.getAnswerNo() != null ? answer.getAnswerNo() : 0;
} }
factorScoreMap.put(factor, factorScore);
} }
TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran); }
testInput.getLevel().addToTestAnalysises(testAnalysis); TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran);
candidate.addToTestAnalysises(testAnalysis);
for(Factor factor : factorScoreMap.keySet()) jobApplication.getJob().getLevel().addToTestAnalysises(testAnalysis);
jobApplication.getCandidate().addToTestAnalysises(testAnalysis);
testAnalysis.setJob(jobApplication.getJob());
for(Factor factor : factorScoreMap.keySet())
{
int score = factorScoreMap.get(factor);
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "Candidate:", jobApplication.getCandidate(), " Factor:", factor, " Score:", score);
Filter<FactorScoreResult> factorScoreFilter = FactorScoreResult.SearchByAll().andLevel(new EqualsFilter<>(jobApplication.getJob().getLevel()))
.andFromScore(new LessThanEqualFilter<>(score))
.andToScore(new GreaterThanEqualFilter<>(score));
List<FactorScoreResult> factorScoreResults = (List<FactorScoreResult>) factor.pipelineFactor().toResults(factorScoreFilter).vals();
if(factorScoreResults != null && !factorScoreResults.isEmpty())
{ {
int score = factorScoreMap.get(factor); FactorScoreResult factorScoreResult = factorScoreResults.get(0);
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Candidate:", candidate, " Factor:", factor, " Score:", score);
Filter<FactorScoreResult> factorScoreFilter = FactorScoreResult.SearchByAll().andLevel(new EqualsFilter<>(testInput.getLevel()))
.andFromScore(new LessThanEqualFilter<>(score))
.andToScore(new GreaterThanEqualFilter<>(score));
List<FactorScoreResult> factorScoreResults = (List<FactorScoreResult>) factor.pipelineFactor().toResults(factorScoreFilter).vals();
if(factorScoreResults != null && !factorScoreResults.isEmpty()) FactorScore factorScore = FactorScore.createFactorScore(objTran);
{
FactorScoreResult factorScoreResult = factorScoreResults.get(0);
FactorScore factorScore = FactorScore.createFactorScore(objTran);
factorScore.setFactor(factor); factorScore.setFactor(factor);
factorScore.setScore(score); factorScore.setLevel(jobApplication.getJob().getLevel());
factorScore.setColorCode(factorScoreResult.getColorCode()); factorScore.setScore(score);
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0); factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setNarrative(factorScoreResult.getNarrative()); factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative());
testAnalysis.addToFactorScores(factorScore); testAnalysis.addToFactorScores(factorScore);
}
} }
} }
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed");
LogMgr.log(JobApplication.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed");
} }
} }
\ No newline at end of file
...@@ -23,11 +23,11 @@ ...@@ -23,11 +23,11 @@
$('.' + id).click(); $('.' + id).click();
}); });
$(".job-status").change(function(){ $(".job-status").change(function()
{
var id = $(this).closest('.job-list').attr('id'); var id = $(this).closest('.job-list').attr('id');
$('.save-job' + id).click(); $('.save-job' + id).click();
}); });
}); });
</script> </script>
......
<?xml version="1.0" encoding="UTF-8"?>
<!-- @AutoRun -->
<OBJECTS name="" xmlns:oneit="http://www.1iT.com.au">
<NODE name="Script" factory="Vector">
<NODE name="DDL" factory="Participant" class="oneit.sql.transfer.RedefineTableOperation">
<tableName factory="String">tl_test_analysis</tableName>
<column name="job_id" type="Long" length="11" nullable="true"/>
</NODE>
</NODE>
</OBJECTS>
\ No newline at end of file
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