Commit f0380bcc by Harsh Shah

Test analysis changes (Model code moved to separate method, approach changed)

parent 566bac43
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
<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="score_number" type="Long" nullable="true"/> <column name="score_number" type="Long" nullable="true"/>
<column name="color_rank" type="Long" nullable="true"/>
<column name="wghtd_score" type="Long" nullable="true"/>
<column name="test_analysis_id" type="Long" length="11" nullable="true"/> <column name="test_analysis_id" type="Long" length="11" nullable="true"/>
<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"/>
......
...@@ -9,6 +9,8 @@ CREATE TABLE rs_score ( ...@@ -9,6 +9,8 @@ CREATE TABLE rs_score (
object_created_date datetime DEFAULT getdate() NOT NULL object_created_date datetime DEFAULT getdate() NOT NULL
, ,
score_number numeric(12) NULL, score_number numeric(12) NULL,
color_rank numeric(12) NULL,
wghtd_score numeric(12) NULL,
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,
......
...@@ -10,6 +10,8 @@ CREATE TABLE rs_score ( ...@@ -10,6 +10,8 @@ CREATE TABLE rs_score (
object_created_date date DEFAULT SYSDATE NOT NULL object_created_date date DEFAULT SYSDATE NOT NULL
, ,
score_number number(12) NULL, score_number number(12) NULL,
color_rank number(12) NULL,
wghtd_score number(12) NULL,
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,
......
...@@ -10,6 +10,8 @@ CREATE TABLE rs_score ( ...@@ -10,6 +10,8 @@ CREATE TABLE rs_score (
object_created_date timestamp DEFAULT NOW() NOT NULL object_created_date timestamp DEFAULT NOW() NOT NULL
, ,
score_number numeric(12) NULL, score_number numeric(12) NULL,
color_rank numeric(12) NULL,
wghtd_score numeric(12) NULL,
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,
......
...@@ -52,7 +52,6 @@ public abstract class BaseFactorScoreResult extends BaseBusinessClass ...@@ -52,7 +52,6 @@ public abstract class BaseFactorScoreResult extends BaseBusinessClass
// Static constants corresponding to searches // Static constants corresponding to searches
public static final String SEARCH_All = "All"; public static final String SEARCH_All = "All";
public static final String SEARCH_FactorScore = "FactorScore";
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
...@@ -1637,91 +1636,6 @@ public abstract class BaseFactorScoreResult extends BaseBusinessClass ...@@ -1637,91 +1636,6 @@ public abstract class BaseFactorScoreResult extends BaseBusinessClass
.search (transaction); .search (transaction);
} }
public static SearchFactorScore SearchByFactorScore () { return new SearchFactorScore (); }
public static class SearchFactorScore extends SearchObject<FactorScoreResult>
{
public SearchFactorScore andObjectID (QueryFilter<Long> filter)
{
filter.addFilter (context, "rs_level_factor.object_id", FIELD_ObjectID);
return this;
}
public SearchFactorScore andObjectCreated (QueryFilter<Date> filter)
{
filter.addFilter (context, "rs_level_factor.object_created_date", FIELD_ObjectCreated);
return this;
}
public SearchFactorScore andObjectLastModified (QueryFilter<Date> filter)
{
filter.addFilter (context, "rs_level_factor.object_last_updated_date", FIELD_ObjectLastModified);
return this;
}
public SearchFactorScore andFromScore (QueryFilter<Integer> filter)
{
filter.addFilter (context, "rs_level_factor.from_score", "FromScore");
return this;
}
public SearchFactorScore andToScore (QueryFilter<Integer> filter)
{
filter.addFilter (context, "rs_level_factor.to_score", "ToScore");
return this;
}
public SearchFactorScore andColorCode (QueryFilter<ColorCode> filter)
{
filter.addFilter (context, "rs_level_factor.color_code", "ColorCode");
return this;
}
public SearchFactorScore andFactor (QueryFilter<Factor> filter)
{
filter.addFilter (context, "rs_level_factor.factor_number", "Factor");
return this;
}
public SearchFactorScore andLevel (QueryFilter<Level> filter)
{
filter.addFilter (context, "rs_level_factor.level_number", "Level");
return this;
}
public SearchFactorScore andNarrative (QueryFilter<Narrative> filter)
{
filter.addFilter (context, "rs_level_factor.narrative_id", "Narrative");
return this;
}
public FactorScoreResult search (ObjectTransaction transaction) throws StorageException
{
BaseBusinessClass[] results = super.search (transaction, REFERENCE_FactorScoreResult, SEARCH_FactorScore, criteria);
Set<FactorScoreResult> typedResults = new LinkedHashSet <FactorScoreResult> ();
for (BaseBusinessClass bbcResult : results)
{
FactorScoreResult aResult = (FactorScoreResult)bbcResult;
typedResults.add (aResult);
}
return (FactorScoreResult)singletonResult(ObjstoreUtils.removeDeleted(transaction, typedResults).toArray(new BaseBusinessClass[0]), "FactorScoreResult", "");
}
}
public static FactorScoreResult searchFactorScore (ObjectTransaction transaction) throws StorageException
{
return SearchByFactorScore ()
.search (transaction);
}
public Object getAttribute (String attribName) public Object getAttribute (String attribName)
......
...@@ -120,6 +120,7 @@ public abstract class BaseTestInput extends NonPersistentBO ...@@ -120,6 +120,7 @@ public abstract class BaseTestInput extends NonPersistentBO
{ {
Map metaInfo = new HashMap (); Map metaInfo = new HashMap ();
metaInfo.put ("mandatory", "true");
metaInfo.put ("name", "Level"); metaInfo.put ("name", "Level");
metaInfo.put ("type", "Level"); metaInfo.put ("type", "Level");
...@@ -504,6 +505,7 @@ public abstract class BaseTestInput extends NonPersistentBO ...@@ -504,6 +505,7 @@ public abstract class BaseTestInput extends NonPersistentBO
*/ */
public void setLevel (Level newLevel) throws StorageException, FieldException public void setLevel (Level newLevel) throws StorageException, FieldException
{ {
BusinessObjectParser.assertFieldCondition (newLevel != null, this, SINGLEREFERENCE_Level, "mandatory");
if (_Level.wouldReferencedChange (newLevel)) if (_Level.wouldReferencedChange (newLevel))
...@@ -900,6 +902,8 @@ public abstract class BaseTestInput extends NonPersistentBO ...@@ -900,6 +902,8 @@ public abstract class BaseTestInput extends NonPersistentBO
super.validate (context); super.validate (context);
context.check (getLevelID() != null, this, SINGLEREFERENCE_Level, "mandatory");
} }
......
...@@ -3,10 +3,16 @@ ...@@ -3,10 +3,16 @@
<ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://www.oneit.com.au/schemas/5.2/BusinessObject.xsd'> <ROOT xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:noNamespaceSchemaLocation='http://www.oneit.com.au/schemas/5.2/BusinessObject.xsd'>
<BUSINESSCLASS name="FactorScore" package="performa.orm"> <BUSINESSCLASS name="FactorScore" package="performa.orm">
<IMPORT value="performa.orm.types.*"/>
<TRANSIENT name="ColorCode" type="ColorCode" attribHelper="EnumeratedAttributeHelper"/>
<TABLE name="rs_score" tablePrefix="object" polymorphic="FALSE"> <TABLE name="rs_score" tablePrefix="object" polymorphic="FALSE">
<ATTRIB name="Score" type="Integer" dbcol="score_number"/> <ATTRIB name="Score" type="Integer" dbcol="score_number"/>
<ATTRIB name="ColorRank" type="Integer" dbcol="color_rank" />
<ATTRIB name="WghtdScore" type="Integer" dbcol="wghtd_score" />
<SINGLEREFERENCE name="TestAnalysis" type="TestAnalysis" dbcol="test_analysis_id" backreferenceName="FactorScores"/> <SINGLEREFERENCE name="TestAnalysis" type="TestAnalysis" dbcol="test_analysis_id" backreferenceName="FactorScores"/>
<SINGLEREFERENCE name="Factor" type="Factor" dbcol="factor_number"/> <SINGLEREFERENCE name="Factor" type="Factor" dbcol="factor_number"/>
......
...@@ -14,6 +14,7 @@ import oneit.sql.*; ...@@ -14,6 +14,7 @@ import oneit.sql.*;
import oneit.utils.resource.*; import oneit.utils.resource.*;
import oneit.utils.*; import oneit.utils.*;
import oneit.utils.threading.*; import oneit.utils.threading.*;
import performa.orm.types.*;
...@@ -27,10 +28,14 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -27,10 +28,14 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
// Private attributes corresponding to business object data // Private attributes corresponding to business object data
private Integer dummyScore; private Integer dummyScore;
private Integer dummyColorRank;
private Integer dummyWghtdScore;
// Static constants corresponding to attribute helpers // Static constants corresponding to attribute helpers
private static final DefaultAttributeHelper HELPER_Score = DefaultAttributeHelper.INSTANCE; private static final DefaultAttributeHelper HELPER_Score = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_ColorRank = DefaultAttributeHelper.INSTANCE;
private static final DefaultAttributeHelper HELPER_WghtdScore = DefaultAttributeHelper.INSTANCE;
...@@ -38,10 +43,12 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -38,10 +43,12 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
public FactorScorePersistenceMgr () public FactorScorePersistenceMgr ()
{ {
dummyScore = (Integer)(HELPER_Score.initialise (dummyScore)); dummyScore = (Integer)(HELPER_Score.initialise (dummyScore));
dummyColorRank = (Integer)(HELPER_ColorRank.initialise (dummyColorRank));
dummyWghtdScore = (Integer)(HELPER_WghtdScore.initialise (dummyWghtdScore));
} }
private String SELECT_COLUMNS = "{PREFIX}rs_score.object_id as id, {PREFIX}rs_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}rs_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}rs_score.score_number, {PREFIX}rs_score.test_analysis_id, {PREFIX}rs_score.factor_number, {PREFIX}rs_score.level_number, {PREFIX}rs_score.narrative_id, 1 AS commasafe "; private String SELECT_COLUMNS = "{PREFIX}rs_score.object_id as id, {PREFIX}rs_score.object_LAST_UPDATED_DATE as LAST_UPDATED_DATE, {PREFIX}rs_score.object_CREATED_DATE as CREATED_DATE, {PREFIX}rs_score.score_number, {PREFIX}rs_score.color_rank, {PREFIX}rs_score.wghtd_score, {PREFIX}rs_score.test_analysis_id, {PREFIX}rs_score.factor_number, {PREFIX}rs_score.level_number, {PREFIX}rs_score.narrative_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
...@@ -93,6 +100,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -93,6 +100,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
// Check for persistent sets already prefetched // Check for persistent sets already prefetched
if (false || !rs_scorePSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) || if (false || !rs_scorePSet.containsAttrib(BaseBusinessClass.FIELD_ObjectLastModified) ||
!rs_scorePSet.containsAttrib(FactorScore.FIELD_Score)|| !rs_scorePSet.containsAttrib(FactorScore.FIELD_Score)||
!rs_scorePSet.containsAttrib(FactorScore.FIELD_ColorRank)||
!rs_scorePSet.containsAttrib(FactorScore.FIELD_WghtdScore)||
!rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis)|| !rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis)||
!rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Factor)|| !rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Factor)||
!rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Level)|| !rs_scorePSet.containsAttrib(FactorScore.SINGLEREFERENCE_Level)||
...@@ -186,10 +195,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -186,10 +195,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{ {
int rowsUpdated = executeStatement (sqlMgr, int rowsUpdated = executeStatement (sqlMgr,
"UPDATE {PREFIX}rs_score " + "UPDATE {PREFIX}rs_score " +
"SET score_number = ?, 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 = ? , object_LAST_UPDATED_DATE = " + sqlMgr.getPortabilityServices ().getTimestampExpression () + " " +
"WHERE rs_score.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ", "WHERE rs_score.object_id = ? AND " + getConcurrencyCheck (sqlMgr, "object_LAST_UPDATED_DATE", obj.getObjectLastModified ()) + " ",
CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, rs_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, rs_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, rs_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, rs_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))).listEntry (objectID.longID ()).listEntry (obj.getObjectLastModified ()).toList().toArray());
if (rowsUpdated != 1) if (rowsUpdated != 1)
{ {
...@@ -446,6 +455,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -446,6 +455,8 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
rs_scorePSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE")); rs_scorePSet.setAttrib(BaseBusinessClass.FIELD_ObjectCreated, r.getTimestamp ("CREATED_DATE"));
rs_scorePSet.setAttrib(FactorScore.FIELD_Score, HELPER_Score.getFromRS(dummyScore, r, "score_number")); rs_scorePSet.setAttrib(FactorScore.FIELD_Score, HELPER_Score.getFromRS(dummyScore, r, "score_number"));
rs_scorePSet.setAttrib(FactorScore.FIELD_ColorRank, HELPER_ColorRank.getFromRS(dummyColorRank, r, "color_rank"));
rs_scorePSet.setAttrib(FactorScore.FIELD_WghtdScore, HELPER_WghtdScore.getFromRS(dummyWghtdScore, r, "wghtd_score"));
rs_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis, r.getObject ("test_analysis_id")); rs_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_TestAnalysis, r.getObject ("test_analysis_id"));
rs_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Factor, r.getObject ("factor_number")); rs_scorePSet.setAttrib(FactorScore.SINGLEREFERENCE_Factor, r.getObject ("factor_number"));
...@@ -467,10 +478,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr ...@@ -467,10 +478,10 @@ public class FactorScorePersistenceMgr extends ObjectPersistenceMgr
{ {
executeStatement (sqlMgr, executeStatement (sqlMgr,
"INSERT INTO {PREFIX}rs_score " + "INSERT INTO {PREFIX}rs_score " +
" (score_number, 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, 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, rs_scorePSet.getAttrib (FactorScore.FIELD_Score))) .listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))) .listEntry (objectID.longID ()).toList().toArray()); CollectionUtils.listEntry (HELPER_Score.getForSQL(dummyScore, rs_scorePSet.getAttrib (FactorScore.FIELD_Score))).listEntry (HELPER_ColorRank.getForSQL(dummyColorRank, rs_scorePSet.getAttrib (FactorScore.FIELD_ColorRank))).listEntry (HELPER_WghtdScore.getForSQL(dummyWghtdScore, rs_scorePSet.getAttrib (FactorScore.FIELD_WghtdScore))) .listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_TestAnalysis)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Factor)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Level)))).listEntry (SQLManager.CheckNull((Long)(rs_scorePSet.getAttrib (FactorScore.SINGLEREFERENCE_Narrative)))) .listEntry (objectID.longID ()).toList().toArray());
rs_scorePSet.setStatus (PersistentSetStatus.PROCESSED); rs_scorePSet.setStatus (PersistentSetStatus.PROCESSED);
} }
......
...@@ -18,8 +18,6 @@ ...@@ -18,8 +18,6 @@
</TABLE> </TABLE>
<SEARCH type="All" paramFilter="rs_level_factor.object_id is not null" orderBy="rs_level_factor.object_id" /> <SEARCH type="All" paramFilter="rs_level_factor.object_id is not null" orderBy="rs_level_factor.object_id" />
<SEARCH type="FactorScore" paramFilter="rs_level_factor.object_id is not null" singleton="TRUE"/>
</BUSINESSCLASS> </BUSINESSCLASS>
......
...@@ -295,10 +295,6 @@ public class FactorScoreResultPersistenceMgr extends ObjectPersistenceMgr ...@@ -295,10 +295,6 @@ public class FactorScoreResultPersistenceMgr extends ObjectPersistenceMgr
{ {
throw new RuntimeException ("NOT implemented: executeSearchQueryAll"); throw new RuntimeException ("NOT implemented: executeSearchQueryAll");
} }
public ResultSet executeSearchQueryFactorScore (SQLManager sqlMgr) throws SQLException
{
throw new RuntimeException ("NOT implemented: executeSearchQueryFactorScore");
}
...@@ -448,44 +444,6 @@ public class FactorScoreResultPersistenceMgr extends ObjectPersistenceMgr ...@@ -448,44 +444,6 @@ public class FactorScoreResultPersistenceMgr extends ObjectPersistenceMgr
return results; return results;
} }
else if (searchType.equals (FactorScoreResult.SEARCH_FactorScore))
{
// Local scope for transformed variables
{
}
String orderBy = " ";
String tables = " ";
Set<String> joinTableSet = new HashSet<String>();
String filter;
Object[] searchParams; // paramFilter: rs_level_factor.object_id is not null
String preFilter = "(rs_level_factor.object_id is not null)"
+ " ";
preFilter += context.getLoadingAttributes ().getCustomSQL() ;
SearchParamTransform tx = new SearchParamTransform (criteria);
filter = StringUtils.replaceParams (preFilter, tx);
searchParams = tx.getParamsArray();
Integer maxRows = context.getLoadingAttributes ().getMaxRows ();
boolean truncateExtra = !context.getLoadingAttributes ().isFailIfMaxExceeded();
String query = "SELECT " + SELECT_COLUMNS +
"FROM {PREFIX}rs_level_factor " + tables + tableSetToSQL(joinTableSet) +
"WHERE " + SELECT_JOINS + " " + filter + orderBy;
BaseBusinessClass[] results = loadQuery (allPSets, sqlMgr, context, query, searchParams, maxRows, truncateExtra);
return results;
}
else else
{ {
......
package performa.orm; package performa.orm;
import oneit.utils.StringUtils;
public class Narrative extends BaseNarrative public class Narrative extends BaseNarrative
{ {
...@@ -16,4 +18,10 @@ public class Narrative extends BaseNarrative ...@@ -16,4 +18,10 @@ public class Narrative extends BaseNarrative
{ {
return "Narrative"; return "Narrative";
} }
@Override
public String getToString()
{
return StringUtils.subNulls(getGraphicNotes(), "");
}
} }
\ No newline at end of file
package performa.orm; package performa.orm;
import performa.orm.types.QuestionType;
public class Question extends BaseQuestion public class Question extends BaseQuestion
{ {
...@@ -16,4 +18,13 @@ public class Question extends BaseQuestion ...@@ -16,4 +18,13 @@ public class Question extends BaseQuestion
{ {
return "Question"; return "Question";
} }
public QuestionType getQuestionType()
{
if(getSection() != null)
{
return getSection().getQuestionType();
}
return null;
}
} }
\ No newline at end of file
package performa.orm; package performa.orm;
import java.util.*;
import oneit.logging.LoggingArea;
import oneit.objstore.rdbms.filters.InFilter;
import oneit.objstore.utils.ObjstoreUtils;
import oneit.utils.*;
import oneit.utils.filter.Filter;
public class TestInput extends BaseTestInput public class TestInput extends BaseTestInput
{ {
private static final long serialVersionUID = 0L; private static final long serialVersionUID = 0L;
public static final LoggingArea LOG = LoggingArea.createLoggingArea("TestAnalysis");
// This constructor should not be called // This constructor should not be called
public TestInput () public TestInput ()
{ {
// Do not add any code to this, always put it in initialiseNewObject // Do not add any code to this, always put it in initialiseNewObject
} }
public List<Factor> getRelatedFactors()
{
Set<Factor> levelFactors = pipelineTestInput().toLevel().toFactors().toFactor().uniqueVals();
Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors));
return ObjstoreUtils.sort(pipelineTestInput().toCandidates().toAnswers().toQuestion().toFactors(factorFilter).toFactor().uniqueVals(),
new ObjectTransform[]{Factor.pipesFactor().toDescription()},
new Comparator[]{CollectionUtils.DEFAULT_COMPARATOR});
}
} }
\ No newline at end of file
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
<ATTRIB name="CSV" type="BinaryContent" mandatory="true" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" binaryHandler="loggedin"/> <ATTRIB name="CSV" type="BinaryContent" mandatory="true" attribHelper="BLOBAttributeHelper" attribHelperInstance="BLOBAttributeHelper.INSTANCE" binaryHandler="loggedin"/>
<SINGLEREFERENCE name="Level" type="Level"/> <SINGLEREFERENCE name="Level" type="Level" mandatory="true"/>
</TABLE> </TABLE>
......
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package performa.utils; package performa.utils;
import java.util.HashMap; import java.util.*;
import java.util.Map; import oneit.logging.*;
import oneit.objstore.ObjectTransaction; import oneit.objstore.*;
import oneit.objstore.rdbms.filters.EqualsFilter; import oneit.objstore.rdbms.filters.*;
import oneit.objstore.rdbms.filters.GreaterThanEqualFilter; import oneit.utils.filter.Filter;
import oneit.objstore.rdbms.filters.LessThanEqualFilter; import oneit.utils.parsers.FieldException;
import oneit.utils.MultiHashtable; import performa.orm.*;
import oneit.utils.table.SingleValueTableModel; import performa.orm.types.*;
import performa.orm.Answer;
import performa.orm.Candidate;
import performa.orm.Factor;
import performa.orm.FactorQuestionLink;
import performa.orm.FactorScoreResult;
import performa.orm.Level;
import performa.orm.types.QuestionType;
/** /**
* *
...@@ -27,46 +15,42 @@ import performa.orm.types.QuestionType; ...@@ -27,46 +15,42 @@ import performa.orm.types.QuestionType;
*/ */
public class AnalysisEngine public class AnalysisEngine
{ {
public static void analyseAnswers(TestInput testInput) throws StorageException, FieldException
public static SingleValueTableModel analyseAnswers(Answer[] answers, Level level)
{ {
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Inside AnalysisEngine --> analyseAnswers");
SingleValueTableModel model = new SingleValueTableModel();
ObjectTransaction objTran = level.getTransaction();
MultiHashtable<Candidate, Answer> answersByCandidate = new MultiHashtable<>();
answersByCandidate.groupValues(answers, Answer.pipesAnswer().toCandidate()); ObjectTransaction objTran = testInput.getTransaction();
Set<Factor> levelFactors = testInput.pipelineTestInput().toLevel().toFactors().toFactor().uniqueVals();
Filter<FactorQuestionLink> factorFilter = FactorQuestionLink.SearchByAll().andFactor(new InFilter(levelFactors));
int index = 0; //Preloading Data
testInput.pipelineTestInput().toCandidates().toAnswers().toQuestion().toSection().uniqueVals();
testInput.pipelineTestInput().toCandidates().toAnswers().toQuestion().toFactors().toFactor().uniqueVals();
Factor.pipesFactor(levelFactors).toResults().uniqueVals();
for (Candidate candidate : answersByCandidate.keySet()) for (Candidate candidate : testInput.getCandidatesSet())
{ {
int rowNumber = 0; LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Processing candidate ", candidate);
int colNumber = ( index * 3 ) + 1;
Map<Factor, Integer> factorScoreMap = new HashMap<>();
model.addCell(rowNumber++, colNumber, new SingleValueTableModel.CellModel(candidate.getFirstName(), "")); Map<Factor, Integer> factorScoreMap = new HashMap();
for (Answer answer : answersByCandidate.getValuesForKey(candidate)) for (Answer answer : candidate.getAnswersSet())
{ {
FactorQuestionLink[] links = FactorQuestionLink.SearchByAll() Set<FactorQuestionLink> links = answer.pipelineAnswer().toQuestion().toFactors(factorFilter).uniqueVals();
.andQuestion(new EqualsFilter<>(answer.getQuestion()))
.search(objTran); for (FactorQuestionLink link : links)
int factorScore = 0;
for (FactorQuestionLink link: links)
{ {
Factor factor = link.getFactor(); int factorScore = 0;
Factor factor = link.getFactor();
if(factorScoreMap.containsKey(factor)) if(factorScoreMap.containsKey(factor))
{ {
factorScore += factorScoreMap.get(factor); factorScore = factorScoreMap.get(factor);
} }
if(link.getReverseScore()) if(link.isTrue(link.getReverseScore()))
{ {
if(answer.getQuestion().getSection().getQuestionType() == QuestionType.IPSATIVE) if(answer.getQuestion().getQuestionType() == QuestionType.IPSATIVE)
{ {
factorScore += (10 - answer.getAnswerNo()); factorScore += (10 - answer.getAnswerNo());
} }
...@@ -79,42 +63,42 @@ public class AnalysisEngine ...@@ -79,42 +63,42 @@ public class AnalysisEngine
{ {
factorScore += answer.getAnswerNo(); factorScore += answer.getAnswerNo();
} }
factorScoreMap.put(factor, factorScore); factorScoreMap.put(factor, factorScore);
} }
} }
TestAnalysis testAnalysis = TestAnalysis.createTestAnalysis(objTran);
for (Map.Entry<Factor, Integer> entrySet : factorScoreMap.entrySet()) testInput.getLevel().addToTestAnalysises(testAnalysis);
candidate.addToTestAnalysises(testAnalysis);
for(Factor factor : factorScoreMap.keySet())
{ {
Factor factor = entrySet.getKey(); int score = factorScoreMap.get(factor);
Integer factorScore = entrySet.getValue();
if(index == 0)
{
model.addCell(rowNumber, 0, new SingleValueTableModel.CellModel(factor.getDescription(), ""));
}
FactorScoreResult result = FactorScoreResult.SearchByFactorScore() LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "Candidate:", candidate, " Factor:", factor, " Score:", score);
.andFactor(new EqualsFilter<>(factor))
.andLevel(new EqualsFilter<>(level)) Filter<FactorScoreResult> factorScoreFilter = FactorScoreResult.SearchByAll().andLevel(new EqualsFilter<>(testInput.getLevel()))
.andFromScore(new LessThanEqualFilter<>(factorScore)) .andFromScore(new LessThanEqualFilter<>(score))
.andToScore(new GreaterThanEqualFilter<>(factorScore)) .andToScore(new GreaterThanEqualFilter<>(score));
.search(objTran);
List<FactorScoreResult> factorScoreResults = (List<FactorScoreResult>) factor.pipelineFactor().toResults(factorScoreFilter).vals();
int score = result != null ? result.getColorCode().getWeightage() : 0;
// TODO: calculate normalised score based on importance if(factorScoreResults != null && !factorScoreResults.isEmpty())
{
FactorScoreResult factorScoreResult = factorScoreResults.get(0);
FactorScore factorScore = FactorScore.createFactorScore(objTran);
model.addCell(rowNumber, colNumber, new SingleValueTableModel.CellModel(String.valueOf(score), "")); factorScore.setFactor(factor);
model.addCell(rowNumber, colNumber + 1, new SingleValueTableModel.CellModel(result != null ? result.getColorCode().getDescription() : "", "")); factorScore.setScore(score);
model.addCell(rowNumber++, colNumber + 2, new SingleValueTableModel.CellModel(result != null ? result.getNarrative().getGraphicNotes(): "", "")); factorScore.setColorCode(factorScoreResult.getColorCode());
factorScore.setColorRank(factorScoreResult.getColorCode() != null ? factorScoreResult.getColorCode().getWeightage() : 0);
factorScore.setNarrative(factorScoreResult.getNarrative());
testAnalysis.addToFactorScores(factorScore);
}
} }
index++;
} }
LogMgr.log(TestInput.LOG, LogLevel.PROCESSING1, "AnalysisEngine --> analyseAnswers completed");
return model;
} }
} }
\ No newline at end of file
...@@ -34,20 +34,16 @@ ...@@ -34,20 +34,16 @@
<oneit:layout_total widths="<%= new double[] {1, 4, 1, 4, 2} %>" skin="bootstrap"> <oneit:layout_total widths="<%= new double[] {1, 4, 1, 4, 2} %>" skin="bootstrap">
<oneit:skin tagName="layout_row"> <oneit:skin tagName="layout_row">
<oneit:layout_label width="1"> <oneit:layout_label width="1"><oneit:ormlabel obj="<%= testInput %>" field="CSV" /></oneit:layout_label>
<strong style="line-height: 30px">CSV : </strong>
</oneit:layout_label>
<oneit:layout_field width="1"> <oneit:layout_field width="1">
<oneit:ormInput obj="<%= testInput %>" attributeName="CSV" type="file" class="form-control" required="required" style="padding:4px;" accept=".csv"/> <oneit:ormInput obj="<%= testInput %>" attributeName="CSV" type="file" class="form-control" required="required" style="padding:4px;" accept=".csv"/>
</oneit:layout_field> </oneit:layout_field>
<oneit:layout_label width="1"> <oneit:layout_label width="1"><oneit:ormlabel obj="<%= testInput %>" field="Level" /></oneit:layout_label>
<strong style="line-height: 30px">Level : </strong>
</oneit:layout_label>
<oneit:layout_field width="1"> <oneit:layout_field width="1">
<tagfile:ormsingleasso_autocomplete obj="<%= testInput %>" assocName="Level" searcher="<%= new LevelSearcher() %>"/> <tagfile:ormsingleasso_autocomplete obj="<%= testInput %>" assocName="Level" searcher="<%= new LevelSearcher() %>"/>
</oneit:layout_field> </oneit:layout_field>
<oneit:layout_field width="1"> <oneit:layout_field width="1">
<oneit:button value="Import CSV" name="testAnalysis" cssClass="btn btn-primary" requestAttribs='<%= CollectionUtils.EMPTY_MAP %>'/> <oneit:button value="Generate" name="testAnalysis" cssClass="btn btn-primary" requestAttribs='<%= CollectionUtils.EMPTY_MAP %>'/>
</oneit:layout_field> </oneit:layout_field>
</oneit:skin> </oneit:skin>
</oneit:layout_total> </oneit:layout_total>
......
<?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">rs_score</tableName>
<column name="test_analysis_id" type="Long" length="11" nullable="true"/>
</NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="rs_score" indexName="idx_rs_score_test_analysis_id" isUnique="false"><column name="test_analysis_id"/></NODE>
</NODE></OBJECTS>
\ No newline at end of file
<?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.DefineTableOperation">
<tableName factory="String">rs_test_analysis</tableName>
<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_created_date" type="Date" nullable="false" length="22"/>
<column name="level_id" type="Long" length="11" nullable="true"/>
<column name="candidate_id" type="Long" length="11" nullable="true"/>
</NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="rs_test_analysis" indexName="idx_rs_test_analysis_level_id" isUnique="false"><column name="level_id"/></NODE>
<NODE name="INDEX" factory="Participant" class="oneit.sql.transfer.DefineIndexOperation" tableName="rs_test_analysis" indexName="idx_rs_test_analysis_candidate_id" isUnique="false"><column name="candidate_id"/></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