Search in sources :

Example 46 with ObjectNotFoundException

use of org.vcell.util.ObjectNotFoundException in project vcell by virtualcell.

the class DatabaseServerImpl method groupSetPrivate.

/**
 * This method was created in VisualAge.
 * @return void
 * @param key KeyValue
 * @exception org.vcell.util.DataAccessException The exception description.
 * @exception java.rmi.RemoteException The exception description.
 */
public VersionInfo groupSetPrivate(User user, VersionableType vType, KeyValue key) throws DataAccessException, ObjectNotFoundException {
    try {
        if (lg.isTraceEnabled())
            lg.trace("DatabaseServerImpl.groupSetPrivate(vType=" + vType.getTypeName() + ", Key=" + key + ")");
        dbTop.groupSetPrivate(user, vType, key, true);
        VersionInfo newVersionInfo = (VersionInfo) (dbTop.getVersionableInfos(user, key, vType, false, true, true).elementAt(0));
        return newVersionInfo;
    } catch (SQLException e) {
        lg.error(e.getMessage(), e);
        throw new DataAccessException(e.getMessage());
    } catch (ObjectNotFoundException e) {
        lg.error(e.getMessage(), e);
        throw new ObjectNotFoundException(e.getMessage());
    } catch (Throwable e) {
        lg.error(e.getMessage(), e);
        throw new DataAccessException(e.getMessage());
    }
}
Also used : VersionInfo(org.vcell.util.document.VersionInfo) SQLException(java.sql.SQLException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) DataAccessException(org.vcell.util.DataAccessException)

Example 47 with ObjectNotFoundException

use of org.vcell.util.ObjectNotFoundException in project vcell by virtualcell.

the class DbDriver method getVersionFromKeyValue.

/**
 * This method was created in VisualAge.
 * @return cbit.sql.Version
 * @param keyValue cbit.sql.KeyValue
 * @param vType cbit.sql.VersionableType
 */
private static Version getVersionFromKeyValue(Connection con, VersionableType vType, KeyValue keyValue) throws SQLException, DataAccessException {
    Version version = null;
    // 
    // Get a version from this keyValue
    // 
    String sql = null;
    VersionTable versionTable = VersionTable.getVersionTable(vType);
    UserTable userTable = UserTable.table;
    sql = "SELECT " + versionTable.getTableName() + "." + versionTable.id + "," + versionTable.getTableName() + "." + versionTable.name + "," + versionTable.getTableName() + "." + versionTable.ownerRef + "," + versionTable.getTableName() + "." + versionTable.privacy + "," + versionTable.getTableName() + "." + versionTable.versionBranchPointRef + "," + versionTable.getTableName() + "." + versionTable.versionDate + "," + versionTable.getTableName() + "." + versionTable.versionFlag + "," + versionTable.getTableName() + "." + versionTable.versionAnnot + "," + versionTable.getTableName() + "." + versionTable.versionBranchID + "," + userTable.getTableName() + "." + userTable.userid + " FROM " + versionTable.getTableName() + "," + userTable.getTableName() + " WHERE " + versionTable.getTableName() + "." + versionTable.id + " = " + keyValue + " AND " + versionTable.getTableName() + "." + versionTable.ownerRef + " = " + userTable.getTableName() + "." + userTable.id;
    java.sql.Statement stmt = con.createStatement();
    try {
        java.sql.ResultSet rset = stmt.executeQuery(sql);
        if (rset.next()) {
            BigDecimal groupid = rset.getBigDecimal(VersionTable.privacy_ColumnName);
            version = VersionTable.getVersion(rset, getGroupAccessFromGroupID(con, groupid));
        } else {
            throw new ObjectNotFoundException("Failed to find " + vType.getTypeName() + " (Key=" + keyValue + ")");
        }
    } catch (ObjectNotFoundException e) {
        lg.error("objectNotFound: " + e.getMessage(), e);
        throw e;
    } catch (Exception e) {
        lg.error("failed to get version: " + e.getMessage(), e);
        throw new DataAccessException("Failed to find " + vType.getTypeName() + " (Key=" + keyValue + "). \nError: " + e.getMessage());
    } finally {
        stmt.close();
    }
    return version;
}
Also used : Version(org.vcell.util.document.Version) VersionableTypeVersion(org.vcell.util.document.VersionableTypeVersion) ResultSet(java.sql.ResultSet) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) Statement(java.sql.Statement) BigDecimal(java.math.BigDecimal) DependencyException(org.vcell.util.DependencyException) RecordChangedException(cbit.sql.RecordChangedException) PermissionException(org.vcell.util.PermissionException) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) SQLException(java.sql.SQLException) DataAccessException(org.vcell.util.DataAccessException) DataAccessException(org.vcell.util.DataAccessException)

Example 48 with ObjectNotFoundException

use of org.vcell.util.ObjectNotFoundException in project vcell by virtualcell.

the class DbDriver method getVersionableXML.

/**
 * This method was created in VisualAge.
 * @return cbit.sql.Versionable
 * @param user cbit.vcell.server.User
 * @param versionable cbit.sql.Versionable
 */
public String getVersionableXML(Connection con, VersionableType vType, KeyValue vKey) throws ObjectNotFoundException, SQLException, DataAccessException {
    String xmlTableName = null;
    String versionableRefColName = null;
    Field xmlCol = null;
    if (vType.equals(VersionableType.BioModelMetaData)) {
        xmlTableName = BioModelXMLTable.table.getTableName();
        versionableRefColName = BioModelXMLTable.table.bioModelRef.toString();
        xmlCol = BioModelXMLTable.table.bmXML;
    } else if (vType.equals(VersionableType.MathModelMetaData)) {
        xmlTableName = MathModelXMLTable.table.getTableName();
        versionableRefColName = MathModelXMLTable.table.mathModelRef.toString();
        xmlCol = MathModelXMLTable.table.mmXML;
    } else {
        throw new IllegalArgumentException("vType " + vType + " not supported by " + this.getClass());
    }
    // 
    Statement s = null;
    try {
        s = con.createStatement();
        String sql = "SELECT " + xmlCol.getUnqualifiedColName() + " FROM " + xmlTableName + " WHERE " + versionableRefColName + " = " + vKey;
        // oracle.jdbc.OracleResultSet rset = (oracle.jdbc.OracleResultSet)s.executeQuery(sql);
        ResultSet rset = s.executeQuery(sql);
        if (rset.next()) {
            return (String) getLOB(rset, xmlCol, dbSyntax);
        } else {
            throw new ObjectNotFoundException("getVersionableXML for " + vType + " key=" + vKey + " Not Found");
        }
    } finally {
        if (s != null) {
            s.close();
        }
    }
}
Also used : StarField(cbit.sql.StarField) Field(cbit.sql.Field) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) ResultSet(java.sql.ResultSet)

Example 49 with ObjectNotFoundException

use of org.vcell.util.ObjectNotFoundException in project vcell by virtualcell.

the class DbDriver method deleteVersionableInit.

/**
 * This method was created in VisualAge.
 * @param user cbit.vcell.server.User
 * @param vType int
 * @param versionKey cbit.sql.KeyValue
 */
protected void deleteVersionableInit(Connection con, User user, VersionableType vType, KeyValue versionKey) throws DependencyException, ObjectNotFoundException, SQLException, DataAccessException, PermissionException {
    Vector<VersionInfo> versionInfoVector = getVersionableInfos(con, user, vType, true, versionKey, true, dbSyntax);
    if (versionInfoVector.size() == 0) {
        throw new ObjectNotFoundException("DbDriver:deleteVersionableInit " + vType.getTypeName() + "(" + versionKey + ") not found for user=" + user);
    } else if (versionInfoVector.size() > 1) {
        throw new DataAccessException("DbDriver:deleteVersionableInit " + vType.getTypeName() + "(" + versionKey + ") found more than one entry  DB ERROR,BAD!!!!!MUST CHECK");
    }
    VersionInfo versionInfo = versionInfoVector.firstElement();
    // 
    if (versionInfo.getVersion().getFlag().compareEqual(VersionFlag.Archived) || versionInfo.getVersion().getFlag().compareEqual(VersionFlag.Published)) {
        throw new DataAccessException("DbDriver:deleteVersionableInit " + vType.getTypeName() + "(" + versionKey + ") Cannot DELETE\n" + "because document " + versionInfo.getVersion().getName() + "(" + versionInfo.getVersion().getDate() + ") is " + (versionInfo.getVersion().getFlag().compareEqual(VersionFlag.Archived) ? "ARCHIVED" : "PUBLISHED"));
    }
    // 
    if (!versionInfo.getVersion().getOwner().compareEqual(user)) {
        throw new PermissionException("deletion failed on " + vType.getTypeName() + " '" + versionInfo.getVersion().getName() + "' (" + versionKey + "), not owned by user " + user);
    }
    // 
    if (versionInfo.getVersion().getFlag().isArchived()) {
        throw new PermissionException("deletion failed on archived " + vType.getTypeName() + " '" + versionInfo.getVersion().getName() + "' (" + versionKey + ")");
    }
    // 
    if (isBranchPointOrBaseSimulation(con, vType, versionKey)) {
        throw new DependencyException(VersionTable.getVersionTable(vType) + ",id=" + versionKey + " can't be deleted, it is either a branch point or a base Simulation");
    }
    // if(VersionTable.hasExternalRef(con,user,vType,versionKey)){
    // throw new DependencyException( vTable + ",id=" + versionKey + " has external references");
    // }
    updateCleanSQL(con, "DELETE FROM " + SoftwareVersionTable.table.getTableName() + " WHERE " + SoftwareVersionTable.table.versionableRef.toString() + " = " + versionKey.toString());
}
Also used : PermissionException(org.vcell.util.PermissionException) VersionInfo(org.vcell.util.document.VersionInfo) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) DependencyException(org.vcell.util.DependencyException) DataAccessException(org.vcell.util.DataAccessException)

Example 50 with ObjectNotFoundException

use of org.vcell.util.ObjectNotFoundException in project vcell by virtualcell.

the class DbDriver method testSuiteGet.

/**
 * Insert the method's description here.
 * Creation date: (10/16/2004 2:39:49 PM)
 * @return cbit.vcell.numericstest.TestSuiteInfoNew[]
 */
public static TestSuiteNew testSuiteGet(BigDecimal getThisTS, Connection con, User user, DatabaseSyntax dbSyntax) throws SQLException, DataAccessException {
    if (!user.isTestAccount()) {
        throw new PermissionException("User=" + user.getName() + " not allowed TestSuiteInfo");
    }
    // if(testSuiteHash.containsKey(getThisTS)){
    // return (cbit.vcell.numericstest.TestSuiteNew)testSuiteHash.get(getThisTS);
    // }
    Hashtable simulationInfoH = new Hashtable();
    Hashtable mathModelInfoH = new Hashtable();
    Hashtable bioModelInfoH = new Hashtable();
    Statement stmt = null;
    ResultSet rset = null;
    String sql = null;
    Level origLogLevel = DatabasePolicySQL.lg.getLevel();
    try {
        DatabasePolicySQL.lg.setLevel(Level.WARN);
        // double begTime=System.currentTimeMillis();
        // int counter = 0;
        stmt = con.createStatement();
        // Get VariableComparisonSummaries
        Hashtable vcsH = new Hashtable();
        {
            sql = "SELECT " + TFTestResultTable.table.getTableName() + ".*" + " FROM " + TFTestResultTable.table.getTableName() + "," + TFTestCriteriaTable.table.getTableName() + "," + TFTestCaseTable.table.getTableName() + "," + TFTestSuiteTable.table.getTableName() + " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " AND " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + TFTestCaseTable.table.testSuiteRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.id.getQualifiedColName() + "=" + TFTestCriteriaTable.table.testCaseRef.getQualifiedColName() + " AND " + TFTestCriteriaTable.table.id.getQualifiedColName() + "=" + TFTestResultTable.table.testCriteriaRef.getQualifiedColName() + " ORDER BY UPPER(" + TFTestResultTable.table.varName.getQualifiedColName() + ")";
            rset = stmt.executeQuery(sql);
            while (rset.next()) {
                BigDecimal tcritRef = rset.getBigDecimal(TFTestResultTable.table.testCriteriaRef.getUnqualifiedColName());
                String varName = rset.getString(TFTestResultTable.table.varName.getUnqualifiedColName());
                double absError = rset.getDouble(TFTestResultTable.table.absError.getUnqualifiedColName());
                double relError = rset.getDouble(TFTestResultTable.table.relError.getUnqualifiedColName());
                double maxRef = rset.getDouble(TFTestResultTable.table.maxRef.getUnqualifiedColName());
                double minRef = rset.getDouble(TFTestResultTable.table.minRef.getUnqualifiedColName());
                double mse = rset.getDouble(TFTestResultTable.table.meanSqrError.getUnqualifiedColName());
                double timeAbsError = rset.getDouble(TFTestResultTable.table.timeAbsError.getUnqualifiedColName());
                int indexAbsError = rset.getInt(TFTestResultTable.table.indexAbsError.getUnqualifiedColName());
                double timeRelError = rset.getDouble(TFTestResultTable.table.timeRelError.getUnqualifiedColName());
                int indexRelError = rset.getInt(TFTestResultTable.table.indexRelError.getUnqualifiedColName());
                Vector v = (Vector) vcsH.get(tcritRef);
                if (v == null) {
                    v = new Vector();
                    vcsH.put(tcritRef, v);
                }
                v.add(new VariableComparisonSummary(varName, minRef, maxRef, absError, relError, mse, timeAbsError, indexAbsError, timeRelError, indexRelError));
            // counter+= 1;
            }
            // System.out.println("VCS count="+counter+" time="+((System.currentTimeMillis()-begTime)/1000));
            rset.close();
        }
        // begTime=System.currentTimeMillis();
        // counter = 0;
        // Get TestCriteria for mathModel based TestCases
        Hashtable tcritH = new Hashtable();
        {
            sql = "SELECT " + TFTestCriteriaTable.table.getTableName() + ".*" + "," + MathModelSimulationLinkTable.table.getTableName() + ".*" + " FROM " + TFTestCriteriaTable.table.getTableName() + "," + TFTestCaseTable.table.getTableName() + "," + TFTestSuiteTable.table.getTableName() + "," + MathModelSimulationLinkTable.table.getTableName() + "," + SimulationTable.table.getTableName() + " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " AND " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + TFTestCaseTable.table.testSuiteRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.id.getQualifiedColName() + "=" + TFTestCriteriaTable.table.testCaseRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.mathModelRef.getQualifiedColName() + " IS NOT NULL " + " AND " + TFTestCriteriaTable.table.simulationRef.getQualifiedColName() + "=" + SimulationTable.table.id.getQualifiedColName() + " AND " + TFTestCriteriaTable.table.regressionMMSimRef.getQualifiedColName() + "=" + MathModelSimulationLinkTable.table.id.getQualifiedColName() + "(+)" + " ORDER BY UPPER(" + SimulationTable.table.name.getQualifiedColName() + ")";
            // System.out.println(sql);
            rset = stmt.executeQuery(sql);
            while (rset.next()) {
                BigDecimal tcritKey = rset.getBigDecimal(TFTestCriteriaTable.table.id.getUnqualifiedColName());
                BigDecimal tcaseRef = rset.getBigDecimal(TFTestCriteriaTable.table.testCaseRef.getUnqualifiedColName());
                BigDecimal simRef = rset.getBigDecimal(TFTestCriteriaTable.table.simulationRef.getUnqualifiedColName());
                BigDecimal simRegrRef = rset.getBigDecimal(MathModelSimulationLinkTable.table.simRef.getUnqualifiedColName());
                if (rset.wasNull()) {
                    simRegrRef = null;
                }
                BigDecimal mathRegrRef = rset.getBigDecimal(MathModelSimulationLinkTable.table.mathModelRef.getUnqualifiedColName());
                if (rset.wasNull()) {
                    mathRegrRef = null;
                }
                Double maxRelError = null;
                double dtemp = rset.getDouble(TFTestCriteriaTable.table.maxRelError.getUnqualifiedColName());
                if (rset.wasNull()) {
                    maxRelError = null;
                } else {
                    maxRelError = new Double(dtemp);
                }
                Double maxAbsError = null;
                dtemp = rset.getDouble(TFTestCriteriaTable.table.maxAbsError.getUnqualifiedColName());
                if (rset.wasNull()) {
                    maxAbsError = null;
                } else {
                    maxAbsError = new Double(dtemp);
                }
                String reportStatus = rset.getString(TFTestCriteriaTable.table.reportStatus.getUnqualifiedColName());
                if (rset.wasNull()) {
                    reportStatus = TestCriteriaNew.TCRIT_STATUS_NEEDSREPORT;
                }
                String reportStatusMessage = rset.getString(TFTestCriteriaTable.table.reportMessage.getUnqualifiedColName());
                if (rset.wasNull()) {
                    reportStatusMessage = null;
                }
                if (reportStatusMessage != null && reportStatusMessage.length() > 0) {
                    reportStatusMessage = TokenMangler.getSQLRestoredString(reportStatusMessage);
                }
                Vector v = (Vector) tcritH.get(tcaseRef);
                if (v == null) {
                    v = new Vector();
                    tcritH.put(tcaseRef, v);
                }
                SimulationInfo simInfo = (SimulationInfo) simulationInfoH.get(simRef);
                if (simInfo == null) {
                    Vector<VersionInfo> simVector = getVersionableInfos(con, user, VersionableType.Simulation, false, new KeyValue(simRef), false, dbSyntax);
                    if (simVector != null && simVector.size() > 0) {
                        simInfo = (SimulationInfo) simVector.firstElement();
                        simulationInfoH.put(simRef, simInfo);
                    }
                }
                SimulationInfo regrSimInfo = null;
                MathModelInfo regrMathModelInfo = null;
                if (simRegrRef != null) {
                    regrSimInfo = (SimulationInfo) simulationInfoH.get(simRegrRef);
                    if (regrSimInfo == null) {
                        Vector<VersionInfo> regSimVector = getVersionableInfos(con, user, VersionableType.Simulation, false, new KeyValue(simRegrRef), false, dbSyntax);
                        if (regSimVector != null && regSimVector.size() > 0) {
                            regrSimInfo = (SimulationInfo) regSimVector.firstElement();
                            simulationInfoH.put(simRegrRef, regrSimInfo);
                        }
                    }
                    regrMathModelInfo = (MathModelInfo) mathModelInfoH.get(mathRegrRef);
                    if (regrMathModelInfo == null) {
                        Vector<VersionInfo> regMathVector = getVersionableInfos(con, user, VersionableType.MathModelMetaData, false, new KeyValue(mathRegrRef), false, dbSyntax);
                        if (regMathVector != null && regMathVector.size() > 0) {
                            regrMathModelInfo = (MathModelInfo) regMathVector.firstElement();
                            mathModelInfoH.put(mathRegrRef, regrMathModelInfo);
                        }
                    }
                }
                // 
                VariableComparisonSummary[] neededVCSArr = null;
                Vector vcsV = (Vector) vcsH.get(tcritKey);
                if (vcsV != null) {
                    neededVCSArr = new VariableComparisonSummary[vcsV.size()];
                    vcsV.copyInto(neededVCSArr);
                }
                // 
                TestCriteriaNew tcn = null;
                if (simInfo != null) {
                    tcn = new TestCriteriaNewMathModel(tcritKey, simInfo, regrMathModelInfo, regrSimInfo, maxRelError, maxAbsError, neededVCSArr, reportStatus, reportStatusMessage);
                    v.add(tcn);
                }
            // counter+= 1;
            }
            // System.out.println("TCrit count="+counter+" time="+((System.currentTimeMillis()-begTime)/1000));
            rset.close();
        }
        // Get TestCriteria for bioModel based TestCases
        // Hashtable tcritH = new Hashtable();
        {
            final String REGRSIMREF = "REGRSIMREF";
            final String SCNAME = "SCNAME";
            sql = "SELECT " + TFTestCriteriaTable.table.getTableName() + ".*" + "," + BioModelSimContextLinkTable.table.bioModelRef.getQualifiedColName() + "," + BioModelSimulationLinkTable.table.simRef.getQualifiedColName() + " " + REGRSIMREF + "," + SimContextTable.table.name.getQualifiedColName() + " " + SCNAME + " FROM " + TFTestCriteriaTable.table.getTableName() + "," + TFTestCaseTable.table.getTableName() + "," + TFTestSuiteTable.table.getTableName() + "," + BioModelSimContextLinkTable.table.getTableName() + "," + SimContextTable.table.getTableName() + "," + BioModelSimulationLinkTable.table.getTableName() + // SimulationTable.table.getTableName()+
            " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " AND " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + TFTestCaseTable.table.testSuiteRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.id.getQualifiedColName() + "=" + TFTestCriteriaTable.table.testCaseRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.bmAppRef.getQualifiedColName() + " IS NOT NULL " + " AND " + TFTestCriteriaTable.table.regressionBMAPPRef.getQualifiedColName() + "=" + BioModelSimContextLinkTable.table.id.getQualifiedColName() + "(+)" + " AND " + BioModelSimContextLinkTable.table.simContextRef + " = " + SimContextTable.table.id.getQualifiedColName() + "(+)" + // SimContextTable.table.mathRef.getQualifiedColName()+" = "+SimulationTable.table.mathRef.getQualifiedColName()+"(+)" +
            " AND " + TFTestCriteriaTable.table.regressionBMSimRef.getQualifiedColName() + " = " + BioModelSimulationLinkTable.table.id.getQualifiedColName() + "(+)";
            // System.out.println(sql);
            rset = stmt.executeQuery(sql);
            while (rset.next()) {
                BigDecimal tcritKey = rset.getBigDecimal(TFTestCriteriaTable.table.id.getUnqualifiedColName());
                BigDecimal tcaseRef = rset.getBigDecimal(TFTestCriteriaTable.table.testCaseRef.getUnqualifiedColName());
                BigDecimal tcSimRef = rset.getBigDecimal(TFTestCriteriaTable.table.simulationRef.getUnqualifiedColName());
                BigDecimal regrSimRef = rset.getBigDecimal(REGRSIMREF);
                // BigDecimal regrSimRef = rset.getBigDecimal(SimulationTable.table.id.getUnqualifiedColName());
                if (rset.wasNull()) {
                    regrSimRef = null;
                }
                BigDecimal regrBioModelRef = rset.getBigDecimal(BioModelSimContextLinkTable.table.bioModelRef.getUnqualifiedColName());
                if (rset.wasNull()) {
                    regrBioModelRef = null;
                }
                String regrSCName = rset.getString(SCNAME);
                if (rset.wasNull()) {
                    regrSCName = null;
                }
                Double maxRelError = null;
                double dtemp = rset.getDouble(TFTestCriteriaTable.table.maxRelError.getUnqualifiedColName());
                if (rset.wasNull()) {
                    maxRelError = null;
                } else {
                    maxRelError = new Double(dtemp);
                }
                Double maxAbsError = null;
                dtemp = rset.getDouble(TFTestCriteriaTable.table.maxAbsError.getUnqualifiedColName());
                if (rset.wasNull()) {
                    maxAbsError = null;
                } else {
                    maxAbsError = new Double(dtemp);
                }
                String reportStatus = rset.getString(TFTestCriteriaTable.table.reportStatus.getUnqualifiedColName());
                if (rset.wasNull()) {
                    reportStatus = TestCriteriaNew.TCRIT_STATUS_NEEDSREPORT;
                }
                String reportStatusMessage = rset.getString(TFTestCriteriaTable.table.reportMessage.getUnqualifiedColName());
                if (rset.wasNull()) {
                    reportStatusMessage = null;
                }
                if (reportStatusMessage != null && reportStatusMessage.length() > 0) {
                    reportStatusMessage = TokenMangler.getSQLRestoredString(reportStatusMessage);
                }
                Vector v = (Vector) tcritH.get(tcaseRef);
                if (v == null) {
                    v = new Vector();
                    tcritH.put(tcaseRef, v);
                }
                SimulationInfo simInfo = (SimulationInfo) simulationInfoH.get(tcSimRef);
                if (simInfo == null) {
                    Vector<VersionInfo> simVector = getVersionableInfos(con, user, VersionableType.Simulation, false, new KeyValue(tcSimRef), false, dbSyntax);
                    if (simVector != null && simVector.size() == 1) {
                        simInfo = (SimulationInfo) simVector.firstElement();
                        simulationInfoH.put(tcSimRef, simInfo);
                    } else {
                        throw new DataAccessException("Found more than 1 versionable for tcsimRef=" + tcSimRef);
                    }
                }
                SimulationInfo regrSimInfo = null;
                BioModelInfo regrBioModelInfo = null;
                if (regrSimRef != null) {
                    regrSimInfo = (SimulationInfo) simulationInfoH.get(regrSimRef);
                    if (regrSimInfo == null) {
                        Vector<VersionInfo> regSimVector = getVersionableInfos(con, user, VersionableType.Simulation, false, new KeyValue(regrSimRef), false, dbSyntax);
                        if (regSimVector != null && regSimVector.size() == 1) {
                            regrSimInfo = (SimulationInfo) regSimVector.firstElement();
                            simulationInfoH.put(regrSimRef, regrSimInfo);
                        } else {
                            throw new DataAccessException("Found more than 1 versionable for simregRef=" + regrSimRef);
                        }
                    }
                    regrBioModelInfo = (BioModelInfo) mathModelInfoH.get(regrBioModelRef);
                    if (regrBioModelInfo == null) {
                        Vector<VersionInfo> regBioModelVector = getVersionableInfos(con, user, VersionableType.BioModelMetaData, false, new KeyValue(regrBioModelRef), false, dbSyntax);
                        if (regBioModelVector != null && regBioModelVector.size() == 1) {
                            regrBioModelInfo = (BioModelInfo) regBioModelVector.firstElement();
                            mathModelInfoH.put(regrBioModelRef, regrBioModelInfo);
                        } else {
                            throw new DataAccessException("Found more than 1 versionable for reegrbiomodelRef=" + regrBioModelRef);
                        }
                    }
                }
                // 
                VariableComparisonSummary[] neededVCSArr = null;
                Vector vcsV = (Vector) vcsH.get(tcritKey);
                if (vcsV != null) {
                    neededVCSArr = new VariableComparisonSummary[vcsV.size()];
                    vcsV.copyInto(neededVCSArr);
                }
                // 
                TestCriteriaNew tcn = null;
                if (simInfo != null) {
                    tcn = new TestCriteriaNewBioModel(tcritKey, simInfo, regrBioModelInfo, regrSCName, regrSimInfo, maxRelError, maxAbsError, neededVCSArr, reportStatus, reportStatusMessage);
                    v.add(tcn);
                }
            // counter+= 1;
            }
            // System.out.println("TCrit count="+counter+" time="+((System.currentTimeMillis()-begTime)/1000));
            rset.close();
        }
        // Get TestCases
        Vector tcV = new Vector();
        // begTime=System.currentTimeMillis();
        // counter = 0;
        {
            // final String BMSCL = "bmscl";
            final String OBTCTYPECOLUMN = "OBTCTYPECOLUMN";
            final String OBNAMECOLUMN = "OBNAMECOLUMN";
            final String BMSCBMRNAME = "BMSCBMRNAME";
            final String BMSCSCRNAME = "BMSCSCRNAME";
            final String SCNAME = "SCNAME";
            final String SORTHELP1 = "SORTHELP1";
            final String SORTHELP2 = "SORTHELP2";
            sql = "SELECT " + "UPPER(" + MathModelTable.table.name.getQualifiedColName() + ") " + SORTHELP1 + "," + "TO_CHAR(NULL) " + SORTHELP2 + "," + TFTestCaseTable.table.getTableName() + ".*" + "," + "TO_NUMBER(NULL) " + BMSCBMRNAME + "," + "TO_NUMBER(NULL) " + BMSCSCRNAME + "," + "TO_CHAR(NULL) " + SCNAME + "," + "'MM' " + OBTCTYPECOLUMN + "," + MathModelTable.table.name.getQualifiedColName() + " " + OBNAMECOLUMN + " FROM " + TFTestCaseTable.table.getTableName() + "," + TFTestSuiteTable.table.getTableName() + "," + MathModelTable.table.getTableName() + " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " AND " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + TFTestCaseTable.table.testSuiteRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.mathModelRef.getQualifiedColName() + " IS NOT NULL" + " AND " + TFTestCaseTable.table.mathModelRef.getQualifiedColName() + " = " + MathModelTable.table.id.getQualifiedColName() + " UNION " + "SELECT " + "UPPER(" + BioModelTable.table.name.getQualifiedColName() + ") " + SORTHELP1 + ",UPPER(" + SimContextTable.table.name.getQualifiedColName() + ") " + SORTHELP2 + "," + TFTestCaseTable.table.getTableName() + ".*" + "," + BioModelSimContextLinkTable.table.bioModelRef.getQualifiedColName() + " " + BMSCBMRNAME + "," + BioModelSimContextLinkTable.table.simContextRef.getQualifiedColName() + " " + BMSCSCRNAME + "," + SimContextTable.table.name.getQualifiedColName() + " " + SCNAME + "," + "'BM' " + OBTCTYPECOLUMN + "," + BioModelTable.table.name.getQualifiedColName() + " " + OBNAMECOLUMN + " FROM " + BioModelSimContextLinkTable.table.getTableName() + "," + SimContextTable.table.getTableName() + "," + TFTestCaseTable.table.getTableName() + "," + TFTestSuiteTable.table.getTableName() + "," + BioModelTable.table.getTableName() + " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " AND " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + TFTestCaseTable.table.testSuiteRef.getQualifiedColName() + " AND " + TFTestCaseTable.table.bmAppRef.getQualifiedColName() + " IS NOT NULL" + " AND " + TFTestCaseTable.table.bmAppRef.getQualifiedColName() + " = " + BioModelSimContextLinkTable.table.id.getQualifiedColName() + " AND " + BioModelSimContextLinkTable.table.simContextRef.getQualifiedColName() + " = " + SimContextTable.table.id.getQualifiedColName() + " AND " + BioModelSimContextLinkTable.table.bioModelRef.getQualifiedColName() + "=" + BioModelTable.table.id.getQualifiedColName() + // " ORDER BY 11,"+"UPPER(12)"+","+"UPPER(10)";
            " ORDER BY 13,1,2";
            rset = stmt.executeQuery(sql);
            while (rset.next()) {
                BigDecimal tcaseKey = rset.getBigDecimal(TFTestCaseTable.table.id.getUnqualifiedColName());
                BigDecimal mmRef = rset.getBigDecimal(TFTestCaseTable.table.mathModelRef.getUnqualifiedColName());
                if (rset.wasNull()) {
                    mmRef = null;
                }
                BigDecimal simContextRef = rset.getBigDecimal(BMSCSCRNAME);
                if (rset.wasNull()) {
                    simContextRef = null;
                }
                BigDecimal bioModelRef = rset.getBigDecimal(BMSCBMRNAME);
                if (rset.wasNull()) {
                    bioModelRef = null;
                }
                String simContextName = rset.getString(SCNAME);
                if (rset.wasNull()) {
                    simContextName = null;
                }
                String tcType = rset.getString(TFTestCaseTable.table.tcSolutionType.getUnqualifiedColName());
                String tcAnnot = rset.getString(TFTestCaseTable.table.tcAnnotation.getUnqualifiedColName());
                if (rset.wasNull()) {
                    tcAnnot = "";
                } else {
                    tcAnnot = TokenMangler.getSQLRestoredString(tcAnnot);
                }
                java.util.Date tcDate = VersionTable.getDate(rset, TFTestCaseTable.table.creationDate.getUnqualifiedColName());
                MathModelInfo mmInfo = null;
                BioModelInfo bmInfo = null;
                if (mmRef != null) {
                    mmInfo = (MathModelInfo) mathModelInfoH.get(mmRef);
                    if (mmInfo == null) {
                        Vector<VersionInfo> mathVector = getVersionableInfos(con, user, VersionableType.MathModelMetaData, false, new KeyValue(mmRef), false, dbSyntax);
                        if (mathVector != null && mathVector.size() > 0) {
                            mmInfo = (MathModelInfo) mathVector.firstElement();
                            mathModelInfoH.put(mmRef, mmInfo);
                        }
                    }
                } else if (bioModelRef != null) {
                    bmInfo = (BioModelInfo) bioModelInfoH.get(bioModelRef);
                    if (bmInfo == null) {
                        Vector<VersionInfo> bmAppVector = getVersionableInfos(con, user, VersionableType.BioModelMetaData, false, new KeyValue(bioModelRef), false, dbSyntax);
                        if (bmAppVector != null && bmAppVector.size() > 0) {
                            bmInfo = (BioModelInfo) bmAppVector.firstElement();
                            bioModelInfoH.put(bioModelRef, bmInfo);
                        }
                    }
                } else {
                    throw new RuntimeException("Test case in DB does not have MathmodelRef or BioModelAppRef");
                }
                TestCriteriaNew[] neededTcritArr = null;
                Vector needTcritV = (Vector) tcritH.get(tcaseKey);
                if (needTcritV != null) {
                    neededTcritArr = new TestCriteriaNew[needTcritV.size()];
                    needTcritV.copyInto(neededTcritArr);
                }
                TestCaseNew tcn = null;
                if (mmInfo != null) {
                    tcn = new TestCaseNewMathModel(tcaseKey, mmInfo, tcType, tcAnnot, neededTcritArr);
                    tcV.add(tcn);
                } else if (bmInfo != null) {
                    tcn = new TestCaseNewBioModel(tcaseKey, bmInfo, simContextName, new KeyValue(simContextRef), tcType, tcAnnot, neededTcritArr);
                    tcV.add(tcn);
                } else {
                // throw new RuntimeException("Expected testCase MathModelInfo or BioModelInfo to be not null");
                }
            // counter+= 1;
            }
            // System.out.println("TCase count="+counter+" time="+((System.currentTimeMillis()-begTime)/1000));
            rset.close();
        }
        // Get TestSuite
        {
            TestCaseNew[] tcnArr = null;
            if (tcV.size() > 0) {
                tcnArr = new TestCaseNew[tcV.size()];
                tcV.copyInto(tcnArr);
            }
            sql = "SELECT " + TFTestSuiteTable.table.getTableName() + ".*" + " FROM " + TFTestSuiteTable.table.getTableName() + " WHERE " + TFTestSuiteTable.table.id.getQualifiedColName() + "=" + getThisTS + " ORDER BY UPPER(" + TFTestSuiteTable.table.tsVersion.getQualifiedColName() + ")";
            rset = stmt.executeQuery(sql);
            BigDecimal tsKey = null;
            String tsVersion = null;
            String tsVCBuild = null;
            String tsNumericsBuild = null;
            java.util.Date tsDate = null;
            String tsAnnot = null;
            boolean islocked = true;
            if (rset.next()) {
                tsKey = rset.getBigDecimal(TFTestSuiteTable.table.id.getUnqualifiedColName());
                tsVersion = rset.getString(TFTestSuiteTable.table.tsVersion.getUnqualifiedColName());
                tsVCBuild = rset.getString(TFTestSuiteTable.table.vcBuildVersion.getUnqualifiedColName());
                tsNumericsBuild = rset.getString(TFTestSuiteTable.table.vcNumericsVersion.getUnqualifiedColName());
                tsDate = VersionTable.getDate(rset, TFTestSuiteTable.table.creationDate.getUnqualifiedColName());
                tsAnnot = rset.getString(TFTestSuiteTable.table.tsAnnotation.getUnqualifiedColName());
                islocked = rset.getBoolean(TFTestSuiteTable.table.isLocked.getUnqualifiedColName());
            } else {
                throw new ObjectNotFoundException("TestSuite with key=" + getThisTS + " not found");
            }
            rset.close();
            TestSuiteInfoNew tsiNew = new TestSuiteInfoNew(tsKey, tsVersion, tsVCBuild, tsNumericsBuild, tsDate, tsAnnot, islocked);
            TestSuiteNew tsn = new TestSuiteNew(tsiNew, tcnArr);
            // testSuiteHash.put(tsKey,tsn);
            return tsn;
        }
    } catch (SQLException e) {
        lg.error("failed: (" + sql + "): " + e.getMessage(), e);
        throw e;
    } finally {
        DatabasePolicySQL.lg.setLevel(origLogLevel);
        if (stmt != null) {
            stmt.close();
        }
    }
}
Also used : PermissionException(org.vcell.util.PermissionException) KeyValue(org.vcell.util.document.KeyValue) SQLException(java.sql.SQLException) TestCriteriaNewBioModel(cbit.vcell.numericstest.TestCriteriaNewBioModel) TestCaseNewBioModel(cbit.vcell.numericstest.TestCaseNewBioModel) TestCriteriaNewMathModel(cbit.vcell.numericstest.TestCriteriaNewMathModel) ResultSet(java.sql.ResultSet) VariableComparisonSummary(cbit.vcell.solver.test.VariableComparisonSummary) Vector(java.util.Vector) DataAccessException(org.vcell.util.DataAccessException) TestSuiteNew(cbit.vcell.numericstest.TestSuiteNew) Hashtable(java.util.Hashtable) InsertHashtable(cbit.sql.InsertHashtable) PreparedStatement(java.sql.PreparedStatement) Statement(java.sql.Statement) BioModelInfo(org.vcell.util.document.BioModelInfo) MathModelInfo(org.vcell.util.document.MathModelInfo) TestCaseNew(cbit.vcell.numericstest.TestCaseNew) BigDecimal(java.math.BigDecimal) VersionInfo(org.vcell.util.document.VersionInfo) ObjectNotFoundException(org.vcell.util.ObjectNotFoundException) TestCriteriaNew(cbit.vcell.numericstest.TestCriteriaNew) Level(org.apache.log4j.Level) TestCaseNewMathModel(cbit.vcell.numericstest.TestCaseNewMathModel) TestSuiteInfoNew(cbit.vcell.numericstest.TestSuiteInfoNew) SimulationInfo(cbit.vcell.solver.SimulationInfo)

Aggregations

ObjectNotFoundException (org.vcell.util.ObjectNotFoundException)62 DataAccessException (org.vcell.util.DataAccessException)26 KeyValue (org.vcell.util.document.KeyValue)21 ResultSet (java.sql.ResultSet)18 Statement (java.sql.Statement)17 PermissionException (org.vcell.util.PermissionException)17 SQLException (java.sql.SQLException)13 User (org.vcell.util.document.User)12 BigString (org.vcell.util.BigString)11 XmlParseException (cbit.vcell.xml.XmlParseException)10 VersionInfo (org.vcell.util.document.VersionInfo)10 Field (cbit.sql.Field)9 SimulationRep (cbit.vcell.modeldb.SimulationRep)9 XMLSource (cbit.vcell.xml.XMLSource)9 Table (cbit.sql.Table)8 OuterJoin (cbit.vcell.modeldb.DatabasePolicySQL.OuterJoin)8 PropertyVetoException (java.beans.PropertyVetoException)8 ResourceException (org.restlet.resource.ResourceException)8 VCellApiApplication (org.vcell.rest.VCellApiApplication)8 BioModel (cbit.vcell.biomodel.BioModel)7