/**
* ClarescoExperienceAPI
* Copyright
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* Please contact Claresco, www.claresco.com, if you have any questions.
**/
package com.claresco.tinman.sql;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.joda.time.Duration;
import org.joda.time.Period;
import com.claresco.tinman.lrs.XapiAccount;
import com.claresco.tinman.lrs.XapiResult;
import com.claresco.tinman.lrs.XapiScore;
/**
* XapiResultSQLReader.java
*
*
*
* STATUS:
* RED
*
* @author rheza
* on Mar 10, 2014
*
*/
public class XapiResultSQLReader extends SQLReader{
private String myTableName = "result";
private PreparedStatement myIDRetrievalStatement;
/**
* Description:
*
* Params:
*
*/
public XapiResultSQLReader(Connection conn) throws SQLException{
this.myConn = conn;
this.myIDRetrievalStatement = SQLUtility.createRetrievalStatement(super.myConn, this.myTableName, "resultid");
}
protected XapiResult retrieveByID(int theID) throws SQLException{
this.myIDRetrievalStatement.setInt(1, theID);
myResult = this.myIDRetrievalStatement.executeQuery();
if(isResulEmpty()){
return null;
}
Double theScaled;
Double theRaw;
Double theMin;
Double theMax;
myResult.next();
// Prim short for primitive type
double thePrimScaled = myResult.getDouble("rsltscaled");
if(myResult.wasNull()){
theScaled = null;
}else {
theScaled = new Double(thePrimScaled);
}
double thePrimRaw = myResult.getDouble("rsltrawscore");
if(myResult.wasNull()){
theRaw = null;
}else {
theRaw = new Double(thePrimRaw);
}
double thePrimMin = myResult.getDouble("rsltminscore");
if(myResult.wasNull()){
theMin = null;
}else {
theMin = new Double(thePrimMin);
}
double thePrimMax = myResult.getDouble("rsltmaxscore");
if(myResult.wasNull()){
theMax = null;
}else {
theMax = new Double(thePrimMax);
}
XapiScore theScore = new XapiScore(theScaled, theRaw, theMin, theMax);
if(theScore.isEmpty()){
theScore = null;
}
String theResponse = myResult.getString("rsltresponse");
long msDuration = myResult.getLong("rsltduration");
Duration theDuration = new Duration(msDuration);
Boolean theSuccess;
Boolean theComplete;
boolean thePrimSuccess = myResult.getBoolean("rsltsuccess");
if(myResult.wasNull()){
theSuccess = null;
}else{
theSuccess = new Boolean(thePrimSuccess);
}
boolean thePrimComplete = myResult.getBoolean("rsltcomplete");
if(myResult.wasNull()){
theComplete = null;
}else{
theComplete = new Boolean(thePrimComplete);
}
return new XapiResult(theScore, theSuccess, theComplete, theResponse, theDuration);
}
protected void close() throws SQLException{
super.close();
SQLUtility.closeStatement(myIDRetrievalStatement);
}
public static void main(String[] args) {
try {
Connection conn = SQLUtility.establishDefaultConnection();
XapiResultSQLReader theReader = new XapiResultSQLReader(conn);
XapiResult theResult = theReader.retrieveByID(10334);
System.out.println(theResult);
} catch (Exception e) {
e.printStackTrace();
}
}
}