diff options
Diffstat (limited to 'FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java')
-rwxr-xr-x | FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java | 524 |
1 files changed, 524 insertions, 0 deletions
diff --git a/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java b/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java new file mode 100755 index 000000000..d056f4b29 --- /dev/null +++ b/FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java @@ -0,0 +1,524 @@ +/******************************************************************************* + * Copyright (c) 2000, 2005 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package org.eclipse.test.internal.performance.db; + +import java.math.BigDecimal; +import java.sql.Connection; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.sql.Timestamp; + +/* + * Any SQL should only be used here. + */ +public class SQL { + + private boolean fCompatibility= false; + + protected Connection fConnection; + + private PreparedStatement fInsertVariation, fInsertScenario, fInsertSample, fInsertDataPoint, fInsertScalar; + private PreparedStatement fQueryComment, fInsertComment, fQueryComment2; + private PreparedStatement fQueryVariation, fQueryVariations, fQueryScenario, fQueryAllScenarios, fQueryDatapoints, + fQueryScalars; + private PreparedStatement fInsertSummaryEntry, fUpdateScenarioShortName, fQuerySummaryEntry, fQueryGlobalSummaryEntries, + fQuerySummaryEntries; + private PreparedStatement fInsertFailure, fQueryFailure; + + protected SQL(Connection con) throws SQLException { + fConnection= con; + + boolean needsUpgrade= true; + boolean needsInitialization= true; + boolean needsFailures= true; + boolean needsComments= true; + + Statement statement= fConnection.createStatement(); + ResultSet rs= statement.executeQuery("select SYS.SYSTABLES.TABLENAME from SYS.SYSTABLES where SYS.SYSTABLES.TABLENAME not like 'SYS%'"); //$NON-NLS-1$ + while (rs.next()) { + String tablename= rs.getString(1); + if ("SUMMARYENTRY".equals(tablename)) //$NON-NLS-1$ + needsUpgrade= false; + else if ("CONFIG_ORG".equals(tablename)) //$NON-NLS-1$ + fCompatibility= true; + else if ("VARIATION".equals(tablename)) //$NON-NLS-1$ + needsInitialization= false; + else if ("FAILURE".equals(tablename)) //$NON-NLS-1$ + needsFailures= false; + else if ("COMMENT".equals(tablename)) //$NON-NLS-1$ + needsComments= false; + } + if (!fCompatibility) { + // check whether table SAMPLE still has the CONFIG_ID column + rs= statement.executeQuery("select count(*) from SYS.SYSTABLES, SYS.SYSCOLUMNS where SYS.SYSTABLES.TABLENAME = 'SAMPLE' and " + //$NON-NLS-1$ + "SYS.SYSTABLES.TABLEID = SYS.SYSCOLUMNS.REFERENCEID and SYS.SYSCOLUMNS.COLUMNNAME = 'CONFIG_ID' "); //$NON-NLS-1$ + if (rs.next() && rs.getInt(1) == 1) + fCompatibility= true; + } + + if (needsInitialization) + initialize(); + else { + if (needsUpgrade) + upgradeDB(); + else if (needsFailures) + addFailureTable(); + if (needsComments) + addCommentTable(); + } + } + + protected void dispose() throws SQLException { + if (fInsertVariation != null) + fInsertVariation.close(); + if (fInsertScenario != null) + fInsertScenario.close(); + if (fInsertSample != null) + fInsertSample.close(); + if (fInsertDataPoint != null) + fInsertDataPoint.close(); + if (fInsertScalar != null) + fInsertScalar.close(); + if (fInsertSummaryEntry != null) + fInsertSummaryEntry.close(); + if (fInsertFailure != null) + fInsertFailure.close(); + if (fInsertComment != null) + fInsertComment.close(); + if (fUpdateScenarioShortName != null) + fUpdateScenarioShortName.close(); + if (fQueryDatapoints != null) + fQueryDatapoints.close(); + if (fQueryScalars != null) + fQueryScalars.close(); + if (fQueryVariation != null) + fQueryVariation.close(); + if (fQueryScenario != null) + fQueryScenario.close(); + if (fQueryAllScenarios != null) + fQueryAllScenarios.close(); + if (fQueryVariations != null) + fQueryVariations.close(); + if (fQueryGlobalSummaryEntries != null) + fQueryGlobalSummaryEntries.close(); + if (fQuerySummaryEntries != null) + fQuerySummaryEntries.close(); + if (fQueryFailure != null) + fQueryFailure.close(); + if (fQueryComment != null) + fQueryComment.close(); + if (fQueryComment2 != null) + fQueryComment2.close(); + } + + private void initialize() throws SQLException { + Statement stmt= null; + try { + stmt= fConnection.createStatement(); + stmt.executeUpdate("create table VARIATION (" + //$NON-NLS-1$ + "ID int unique not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "KEYVALPAIRS varchar(10000) not null " + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table SCENARIO (" + //$NON-NLS-1$ + "ID int unique not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "NAME varchar(256) not null," + //$NON-NLS-1$ + "SHORT_NAME varchar(40)" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table SAMPLE (" + //$NON-NLS-1$ + "ID int not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "VARIATION_ID int not null," + //$NON-NLS-1$ + "SCENARIO_ID int not null," + //$NON-NLS-1$ + "STARTTIME timestamp" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table DATAPOINT (" + //$NON-NLS-1$ + "ID int not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "SAMPLE_ID int not null," + //$NON-NLS-1$ + "SEQ int," + //$NON-NLS-1$ + "STEP int" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table SCALAR (" + //$NON-NLS-1$ + "DATAPOINT_ID int not null," + //$NON-NLS-1$ + "DIM_ID int not null," + //$NON-NLS-1$ + "VALUE bigint" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table SUMMARYENTRY (" + //$NON-NLS-1$ + "VARIATION_ID int not null," + //$NON-NLS-1$ + "SCENARIO_ID int not null," + //$NON-NLS-1$ + "DIM_ID int not null," + //$NON-NLS-1$ + "IS_GLOBAL smallint not null," + //$NON-NLS-1$ + "COMMENT_ID int not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table FAILURE (" + //$NON-NLS-1$ + "VARIATION_ID int not null," + //$NON-NLS-1$ + "SCENARIO_ID int not null," + //$NON-NLS-1$ + "MESSAGE varchar(1000) not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("create table COMMENT (" + //$NON-NLS-1$ + "ID int unique not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "KIND int not null," + //$NON-NLS-1$ + "TEXT varchar(400) not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + + // Primary/unique + stmt.executeUpdate("alter table VARIATION add constraint VA_KVP primary key (KEYVALPAIRS)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SCENARIO add constraint SC_NAME primary key (NAME)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SAMPLE add constraint SA_ID primary key (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table DATAPOINT add constraint DP_ID primary key (ID)"); //$NON-NLS-1$ + + // Foreign + stmt.executeUpdate("alter table SAMPLE add constraint SAMPLE_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (VARIATION_ID) references VARIATION (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SAMPLE add constraint SAMPLE_CONSTRAINT2 " + //$NON-NLS-1$ + "foreign key (SCENARIO_ID) references SCENARIO (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table DATAPOINT add constraint DP_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (SAMPLE_ID) references SAMPLE (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SCALAR add constraint SCALAR_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (DATAPOINT_ID) references DATAPOINT (ID)"); //$NON-NLS-1$ + + stmt.executeUpdate("alter table SUMMARYENTRY add constraint FP_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (VARIATION_ID) references VARIATION (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SUMMARYENTRY add constraint FP_CONSTRAINT2 " + //$NON-NLS-1$ + "foreign key (SCENARIO_ID) references SCENARIO (ID)"); //$NON-NLS-1$ + + stmt.executeUpdate("alter table FAILURE add constraint FA_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (VARIATION_ID) references VARIATION (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table FAILURE add constraint FA_CONSTRAINT2 " + //$NON-NLS-1$ + "foreign key (SCENARIO_ID) references SCENARIO (ID)"); //$NON-NLS-1$ + + fConnection.commit(); + + } finally { + if (stmt != null) + stmt.close(); + } + } + + private void upgradeDB() throws SQLException { + Statement stmt= null; + try { + stmt= fConnection.createStatement(); + + stmt.executeUpdate("create table SUMMARYENTRY (" + //$NON-NLS-1$ + "VARIATION_ID int not null," + //$NON-NLS-1$ + "SCENARIO_ID int not null," + //$NON-NLS-1$ + "DIM_ID int not null," + //$NON-NLS-1$ + "IS_GLOBAL smallint not null," + //$NON-NLS-1$ + "COMMENT_ID int not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + stmt.executeUpdate("alter table SUMMARYENTRY add constraint FP_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (VARIATION_ID) references VARIATION (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table SUMMARYENTRY add constraint FP_CONSTRAINT2 " + //$NON-NLS-1$ + "foreign key (SCENARIO_ID) references SCENARIO (ID)"); //$NON-NLS-1$ + + stmt.executeUpdate("alter table SCENARIO add column SHORT_NAME varchar(40)"); //$NON-NLS-1$ + + fConnection.commit(); + + } finally { + if (stmt != null) + stmt.close(); + } + } + + private void addCommentTable() throws SQLException { + Statement stmt= null; + try { + stmt= fConnection.createStatement(); + + stmt.executeUpdate("create table COMMENT (" + //$NON-NLS-1$ + "ID int unique not null GENERATED ALWAYS AS IDENTITY," + //$NON-NLS-1$ + "KIND int not null," + //$NON-NLS-1$ + "TEXT varchar(400) not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + + stmt.executeUpdate("alter table SUMMARYENTRY add column COMMENT_ID int not null default 0"); //$NON-NLS-1$ + + fConnection.commit(); + + } finally { + if (stmt != null) + stmt.close(); + } + } + + private void addFailureTable() throws SQLException { + Statement stmt= null; + try { + stmt= fConnection.createStatement(); + + stmt.executeUpdate("create table FAILURE (" + //$NON-NLS-1$ + "VARIATION_ID int not null," + //$NON-NLS-1$ + "SCENARIO_ID int not null," + //$NON-NLS-1$ + "MESSAGE varchar(1000) not null" + //$NON-NLS-1$ + ")" //$NON-NLS-1$ + ); + + stmt.executeUpdate("alter table FAILURE add constraint FA_CONSTRAINT " + //$NON-NLS-1$ + "foreign key (VARIATION_ID) references VARIATION (ID)"); //$NON-NLS-1$ + stmt.executeUpdate("alter table FAILURE add constraint FA_CONSTRAINT2 " + //$NON-NLS-1$ + "foreign key (SCENARIO_ID) references SCENARIO (ID)"); //$NON-NLS-1$ + + fConnection.commit(); + + } finally { + if (stmt != null) + stmt.close(); + } + } + + static int create(PreparedStatement stmt) throws SQLException { + stmt.executeUpdate(); + ResultSet rs= stmt.getGeneratedKeys(); + if (rs != null) { + try { + if (rs.next()) { + BigDecimal idColVar= rs.getBigDecimal(1); + return idColVar.intValue(); + } + } finally { + rs.close(); + } + } + return 0; + } + + int getScenario(String scenarioPattern) throws SQLException { + if (fQueryScenario == null) + fQueryScenario= fConnection.prepareStatement("select ID from SCENARIO where NAME = ?"); //$NON-NLS-1$ + fQueryScenario.setString(1, scenarioPattern); + ResultSet result= fQueryScenario.executeQuery(); + while (result.next()) + return result.getInt(1); + + if (fInsertScenario == null) + fInsertScenario= fConnection.prepareStatement("insert into SCENARIO (NAME) values (?)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + fInsertScenario.setString(1, scenarioPattern); + return create(fInsertScenario); + } + + int getVariations(Variations variations) throws SQLException { + if (fQueryVariation == null) + fQueryVariation= fConnection.prepareStatement("select ID from VARIATION where KEYVALPAIRS = ?"); //$NON-NLS-1$ + String exactMatchString= variations.toExactMatchString(); + fQueryVariation.setString(1, exactMatchString); + ResultSet result= fQueryVariation.executeQuery(); + while (result.next()) + return result.getInt(1); + + if (fInsertVariation == null) + fInsertVariation= fConnection.prepareStatement("insert into VARIATION (KEYVALPAIRS) values (?)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + fInsertVariation.setString(1, exactMatchString); + return create(fInsertVariation); + } + + int createSample(int variation_id, int scenario_id, Timestamp starttime) throws SQLException { + if (fInsertSample == null) { + if (fCompatibility) { + // since we cannot remove table columns in cloudscape we have to + // provide a non-null value for CONFIG_ID + fInsertSample= fConnection.prepareStatement("insert into SAMPLE (VARIATION_ID, SCENARIO_ID, STARTTIME, CONFIG_ID) values (?, ?, ?, 0)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + } else { + fInsertSample= fConnection.prepareStatement("insert into SAMPLE (VARIATION_ID, SCENARIO_ID, STARTTIME) values (?, ?, ?)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + } + } + fInsertSample.setInt(1, variation_id); + fInsertSample.setInt(2, scenario_id); + fInsertSample.setTimestamp(3, starttime); + return create(fInsertSample); + } + + int createDataPoint(int sample_id, int seq, int step) throws SQLException { + if (fInsertDataPoint == null) + fInsertDataPoint= fConnection.prepareStatement("insert into DATAPOINT (SAMPLE_ID, SEQ, STEP) values (?, ?, ?)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + fInsertDataPoint.setInt(1, sample_id); + fInsertDataPoint.setInt(2, seq); + fInsertDataPoint.setInt(3, step); + return create(fInsertDataPoint); + } + + void insertScalar(int datapoint_id, int dim_id, long value) throws SQLException { + if (fInsertScalar == null) + fInsertScalar= fConnection.prepareStatement("insert into SCALAR values (?, ?, ?)"); //$NON-NLS-1$ + fInsertScalar.setInt(1, datapoint_id); + fInsertScalar.setInt(2, dim_id); + fInsertScalar.setLong(3, value); + fInsertScalar.executeUpdate(); + } + + ResultSet queryDataPoints(Variations variations, String scenarioName) throws SQLException { + if (fQueryDatapoints == null) + fQueryDatapoints= fConnection.prepareStatement("select DATAPOINT.ID, DATAPOINT.STEP from VARIATION, SCENARIO, SAMPLE, DATAPOINT " + //$NON-NLS-1$ + "where " + //$NON-NLS-1$ + "SAMPLE.VARIATION_ID = VARIATION.ID and VARIATION.KEYVALPAIRS = ? and " + //$NON-NLS-1$ + "SAMPLE.SCENARIO_ID = SCENARIO.ID and SCENARIO.NAME LIKE ? and " + //$NON-NLS-1$ + "DATAPOINT.SAMPLE_ID = SAMPLE.ID " //$NON-NLS-1$ + ); + fQueryDatapoints.setString(1, variations.toExactMatchString()); + fQueryDatapoints.setString(2, scenarioName); + return fQueryDatapoints.executeQuery(); + } + + ResultSet queryScalars(int datapointId) throws SQLException { + if (fQueryScalars == null) + fQueryScalars= fConnection.prepareStatement("select SCALAR.DIM_ID, SCALAR.VALUE from SCALAR where SCALAR.DATAPOINT_ID = ?"); //$NON-NLS-1$ + fQueryScalars.setInt(1, datapointId); + return fQueryScalars.executeQuery(); + } + + /* + * Returns SCENARIO.NAME + */ + ResultSet queryScenarios(Variations variations, String scenarioPattern) throws SQLException { + if (fQueryAllScenarios == null) + fQueryAllScenarios= fConnection.prepareStatement("select distinct SCENARIO.NAME from SCENARIO, SAMPLE, VARIATION where " + //$NON-NLS-1$ + "SAMPLE.VARIATION_ID = VARIATION.ID and VARIATION.KEYVALPAIRS LIKE ? and " + //$NON-NLS-1$ + "SAMPLE.SCENARIO_ID = SCENARIO.ID and SCENARIO.NAME LIKE ?" //$NON-NLS-1$ + ); + fQueryAllScenarios.setString(1, variations.toQueryPattern()); + fQueryAllScenarios.setString(2, scenarioPattern); + return fQueryAllScenarios.executeQuery(); + } + + /* + * Returns VARIATION.KEYVALPAIRS + */ + ResultSet queryVariations(String variations, String scenarioPattern) throws SQLException { + if (fQueryVariations == null) + fQueryVariations= fConnection.prepareStatement("select distinct VARIATION.KEYVALPAIRS from VARIATION, SAMPLE, SCENARIO where " + //$NON-NLS-1$ + "SAMPLE.VARIATION_ID = VARIATION.ID and VARIATION.KEYVALPAIRS LIKE ? and " + //$NON-NLS-1$ + "SAMPLE.SCENARIO_ID = SCENARIO.ID and SCENARIO.NAME LIKE ?" //$NON-NLS-1$ + ); + fQueryVariations.setString(1, variations); + fQueryVariations.setString(2, scenarioPattern); + return fQueryVariations.executeQuery(); + } + + void createSummaryEntry(int variation_id, int scenario_id, int dim_id, boolean isGlobal, int comment_id) throws SQLException { + if (fQuerySummaryEntry == null) + fQuerySummaryEntry= fConnection.prepareStatement( + "select count(*) from SUMMARYENTRY where VARIATION_ID = ? and SCENARIO_ID = ? and DIM_ID = ? and IS_GLOBAL = ? and COMMENT_ID = ?"); //$NON-NLS-1$ + fQuerySummaryEntry.setInt(1, variation_id); + fQuerySummaryEntry.setInt(2, scenario_id); + fQuerySummaryEntry.setInt(3, dim_id); + fQuerySummaryEntry.setShort(4, (short) (isGlobal ? 1 : 0)); + fQuerySummaryEntry.setInt(5, comment_id); + ResultSet result= fQuerySummaryEntry.executeQuery(); + if (result.next() && result.getInt(1) > 0) + return; + + if (fInsertSummaryEntry == null) + fInsertSummaryEntry= fConnection.prepareStatement("insert into SUMMARYENTRY (VARIATION_ID, SCENARIO_ID, DIM_ID, IS_GLOBAL, COMMENT_ID) values (?, ?, ?, ?, ?)"); //$NON-NLS-1$ + fInsertSummaryEntry.setInt(1, variation_id); + fInsertSummaryEntry.setInt(2, scenario_id); + fInsertSummaryEntry.setInt(3, dim_id); + fInsertSummaryEntry.setShort(4, (short) (isGlobal ? 1 : 0)); + fInsertSummaryEntry.setInt(5, comment_id); + fInsertSummaryEntry.executeUpdate(); + } + + public void setScenarioShortName(int scenario_id, String shortName) throws SQLException { + if (shortName.length() >= 40) + shortName= shortName.substring(0, 40); + if (fUpdateScenarioShortName == null) + fUpdateScenarioShortName= fConnection.prepareStatement("update SCENARIO set SHORT_NAME = ? where SCENARIO.ID = ?"); //$NON-NLS-1$ + fUpdateScenarioShortName.setString(1, shortName); + fUpdateScenarioShortName.setInt(2, scenario_id); + fUpdateScenarioShortName.executeUpdate(); + } + + ResultSet queryGlobalSummaryEntries(Variations variations) throws SQLException { + if (fQueryGlobalSummaryEntries == null) + fQueryGlobalSummaryEntries= fConnection.prepareStatement( + "select distinct SCENARIO.NAME, SCENARIO.SHORT_NAME, SUMMARYENTRY.DIM_ID, SUMMARYENTRY.IS_GLOBAL, SUMMARYENTRY.COMMENT_ID " + //$NON-NLS-1$ + "from VARIATION, SCENARIO, SUMMARYENTRY " + //$NON-NLS-1$ + "where SUMMARYENTRY.VARIATION_ID = VARIATION.ID " + //$NON-NLS-1$ + "and VARIATION.KEYVALPAIRS LIKE ? " + //$NON-NLS-1$ + "and SUMMARYENTRY.SCENARIO_ID = SCENARIO.ID " + //$NON-NLS-1$ + "and SUMMARYENTRY.IS_GLOBAL = 1 " + //$NON-NLS-1$ + "order by SCENARIO.NAME" //$NON-NLS-1$ + ); + fQueryGlobalSummaryEntries.setString(1, variations.toExactMatchString()); + return fQueryGlobalSummaryEntries.executeQuery(); + } + + ResultSet querySummaryEntries(Variations variations, String scenarioPattern) throws SQLException { + if (fQuerySummaryEntries == null) + fQuerySummaryEntries= fConnection.prepareStatement( + "select distinct SCENARIO.NAME, SCENARIO.SHORT_NAME, SUMMARYENTRY.DIM_ID, SUMMARYENTRY.IS_GLOBAL, SUMMARYENTRY.COMMENT_ID " + //$NON-NLS-1$ + "from VARIATION, SCENARIO, SUMMARYENTRY " + //$NON-NLS-1$ + "where SUMMARYENTRY.VARIATION_ID = VARIATION.ID " + //$NON-NLS-1$ + "and VARIATION.KEYVALPAIRS LIKE ? " + //$NON-NLS-1$ + "and SUMMARYENTRY.SCENARIO_ID = SCENARIO.ID " + //$NON-NLS-1$ + "and SCENARIO.NAME like ? " + //$NON-NLS-1$ + "order by SCENARIO.NAME" //$NON-NLS-1$ + ); + fQuerySummaryEntries.setString(1, variations.toExactMatchString()); + fQuerySummaryEntries.setString(2, scenarioPattern); + return fQuerySummaryEntries.executeQuery(); + } + + void insertFailure(int variation_id, int scenario_id, String message) throws SQLException { + if (fInsertFailure == null) + fInsertFailure= fConnection.prepareStatement("insert into FAILURE values (?, ?, ?)"); //$NON-NLS-1$ + fInsertFailure.setInt(1, variation_id); + fInsertFailure.setInt(2, scenario_id); + fInsertFailure.setString(3, message); + fInsertFailure.executeUpdate(); + } + + public ResultSet queryFailure(Variations variations, String scenarioPattern) throws SQLException { + if (fQueryFailure == null) + fQueryFailure= fConnection.prepareStatement("select SCENARIO.NAME, FAILURE.MESSAGE from FAILURE, VARIATION, SCENARIO where " + //$NON-NLS-1$ + "FAILURE.VARIATION_ID = VARIATION.ID and VARIATION.KEYVALPAIRS LIKE ? and " + //$NON-NLS-1$ + "FAILURE.SCENARIO_ID = SCENARIO.ID and SCENARIO.NAME LIKE ?" //$NON-NLS-1$ + ); + fQueryFailure.setString(1, variations.toExactMatchString()); + fQueryFailure.setString(2, scenarioPattern); + return fQueryFailure.executeQuery(); + } + + int getCommentId(int commentKind, String comment) throws SQLException { + if (comment.length() > 400) + comment= comment.substring(0, 400); + if (fQueryComment == null) + fQueryComment= fConnection.prepareStatement("select ID from COMMENT where KIND = ? and TEXT = ?"); //$NON-NLS-1$ + fQueryComment.setInt(1, commentKind); + fQueryComment.setString(2, comment); + ResultSet result= fQueryComment.executeQuery(); + while (result.next()) + return result.getInt(1); + + if (fInsertComment == null) + fInsertComment= fConnection.prepareStatement("insert into COMMENT (KIND, TEXT) values (?, ?)", Statement.RETURN_GENERATED_KEYS); //$NON-NLS-1$ + fInsertComment.setInt(1, commentKind); + fInsertComment.setString(2, comment); + return create(fInsertComment); + } + + public ResultSet getComment(int comment_id) throws SQLException { + if (fQueryComment2 == null) + fQueryComment2= fConnection.prepareStatement("select KIND, TEXT from COMMENT where ID = ?"); //$NON-NLS-1$ + fQueryComment2.setInt(1, comment_id); + return fQueryComment2.executeQuery(); + } +} |