Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'FROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java')
-rwxr-xr-xFROMCVS/org.eclipse.test.performance/src/org/eclipse/test/internal/performance/db/SQL.java524
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();
+ }
+}

Back to the top