Author: [log in to unmask] Date: Fri Nov 14 12:57:33 2014 New Revision: 1526 Log: Choose an XML config based on run number in initialize. Small modifications to log print outs. Modified: java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java Modified: java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java ============================================================================= --- java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java (original) +++ java/trunk/conditions/src/main/java/org/hps/conditions/DatabaseConditionsManager.java Fri Nov 14 12:57:33 2014 @@ -55,7 +55,9 @@ protected Connection connection; protected boolean isConnected = false; protected ConditionsSeriesConverter conditionsSeriesConverter = new ConditionsSeriesConverter(this); - protected static final String DEFAULT_CONFIG = "/org/hps/conditions/config/conditions_dev.xml"; + static final String DEFAULT_CONFIG = "/org/hps/conditions/config/conditions_dev.xml"; + static final String TEST_RUN_CONFIG = "/org/hps/conditions/config/conditions_database_testrun_2012.xml"; + protected static final int TEST_RUN_MAX_RUN = 1365; protected boolean isInitialized = false; protected String resourceConfig = null; protected File fileConfig = null; @@ -77,17 +79,17 @@ this.database = "hps_conditions"; try { - // Are we running from inside the JAB network? + // Are we running inside the JLAB network? if (InetAddress.getLocalHost().getHostName().contains("jlab.org")) { - // Override the defaults and use parameters for the JLAB database. + // Use the JLAB database. this.hostname = "jmysql.jlab.org"; } } catch (UnknownHostException e) { - // Something wrong with the user's host name, but just assume we can continue okay. - logger.log(Level.WARNING, e.getMessage()); + // Something wrong with the user's host name, but try to continue anyways. + logger.log(Level.WARNING, e.getMessage(), e); } - // This user name and password are setup for read only access on both databases. + // This user name and password are setup for read-only access on both databases. this.user = "hpsuser"; this.password = "darkphoton"; } @@ -97,6 +99,7 @@ * Class constructor. */ public DatabaseConditionsManager() { + logger.setLevel(Level.FINE); registerConditionsConverter(new DetectorConditionsConverter()); setupConnectionFromSystemProperty(); register(); @@ -144,7 +147,7 @@ //logger.config("password " + connectionParameters.getPassword()); logger.config("database " + connectionParameters.getDatabase()); connection = connectionParameters.createConnection(); - logger.config("created connection " + connectionParameters.getConnectionString()); + logger.config("successfuly created connection"); isConnected = true; } @@ -158,7 +161,7 @@ if (!connection.isClosed()) { connection.close(); } else { - logger.config("connection was already closed"); + logger.info("connection was already closed"); } } catch (SQLException e) { throw new RuntimeException(e); @@ -215,8 +218,7 @@ logger.finest("detector " + detectorName + " and run #" + runNumber); if (!isInitialized) { - logger.log(Level.CONFIG, "initializing " + getClass().getSimpleName()); - initialize(); + initialize(runNumber); } // Let the super class do whatever it think it needs to do. @@ -227,10 +229,22 @@ * Perform all necessary initialization, including setup of the XML * configuration and opening a connection to the database. */ - protected void initialize() { - + protected void initialize(int runNumber) { + + logger.log(Level.CONFIG, "initializing " + getClass().getSimpleName()); + + // Did the user not specify a config? if (resourceConfig == null && fileConfig == null) { - this.resourceConfig = DatabaseConditionsManager.DEFAULT_CONFIG; + // We will try to pick a reasonable config based on the run number... + if (runNumber > 0 && runNumber <= TEST_RUN_MAX_RUN) { + // This looks like the Test Run so use the custom config for it. + this.resourceConfig = DatabaseConditionsManager.TEST_RUN_CONFIG; + logger.config("using test run XML config " + this.resourceConfig); + } else { + // This is probably the Engineering Run or later so use the default config. + this.resourceConfig = DatabaseConditionsManager.DEFAULT_CONFIG; + logger.config("using default XML config " + this.resourceConfig); + } } if (resourceConfig != null && fileConfig != null) { @@ -241,7 +255,7 @@ this.configure(getClass().getResourceAsStream(this.resourceConfig)); } else if (this.fileConfig != null) { try { - this.configure(new FileInputStream(fileConfig)); + this.configure(new FileInputStream(this.fileConfig)); } catch (FileNotFoundException e) { throw new RuntimeException(e); } @@ -254,6 +268,8 @@ } this.isInitialized = true; + + logger.config(getClass().getSimpleName() + " is initialized"); } /** @@ -271,7 +287,7 @@ * @return The conditions or null if does not exist. */ public <T> T getConditionsData(Class<T> type, String name) { - logger.finest("getting conditions " + name + " of type " + type.getSimpleName()); + logger.fine("getting conditions " + name + " of type " + type.getSimpleName()); return getCachedConditions(type, name).getCachedData(); } @@ -334,7 +350,7 @@ e.printStackTrace(); logger.warning(e.getMessage()); } - logger.finest("new collection ID " + collectionId + " created for table " + tableName); + logger.fine("new collection ID " + collectionId + " created for table " + tableName); return collectionId; } @@ -465,7 +481,7 @@ */ public ConditionsRecordCollection findConditionsRecords(String name) { ConditionsRecordCollection runConditionsRecords = getConditionsData(ConditionsRecordCollection.class, TableConstants.CONDITIONS_RECORD); - logger.fine("searching for condition " + name + " in " + runConditionsRecords.getObjects().size() + " records ..."); + logger.fine("searching for condition " + name + " in " + runConditionsRecords.getObjects().size() + " records"); ConditionsRecordCollection foundConditionsRecords = new ConditionsRecordCollection(); for (ConditionsRecord record : runConditionsRecords.getObjects()) { if (record.getName().equals(name)) { @@ -474,7 +490,7 @@ } if (foundConditionsRecords.getObjects().size() > 0) { for (ConditionsRecord record : foundConditionsRecords.getObjects()) { - logger.fine("found ConditionsRecord with key " + name + " ..." + '\n' + record.toString()); + logger.fine("found ConditionsRecord with key " + name + '\n' + record.toString()); } } return foundConditionsRecords; @@ -591,11 +607,9 @@ } /** - * Setup the database connection from a file specified by Java system - * property setting. This is possible overridden by subsequent API calls to - * {@link #setConnectionProperties(File)} or - * {@link #setConnectionResource(String)}, as it is called in the class's - * constructor. + * Setup the database connection from a file specified by a Java system + * property setting. This is possibly overridden by subsequent, direct API calls to + * {@link #setConnectionProperties(File)} or {@link #setConnectionResource(String)}. */ private void setupConnectionFromSystemProperty() { String systemPropertiesConnectionPath = (String) System.getProperties().get(connectionProperty);