Main Page | Packages | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | Related Pages

ModuleIVInfo.java

00001 package ProdDatabase;
00002 /*
00003  * @author robinson
00004  */
00005 import java.sql.*;
00006 import java.io.*;
00007 import java.util.*;
00008 
00009 public class ModuleIVInfo implements SCTDBInfo {
00010    Statement           statement;
00011    ResultSet           resultSet;
00012    StringBuffer        sqlStat;
00013    SCTDBInterface      db;
00014 
00015    private Vector sensors,modIVs;
00016    String moduleSerialNo;
00017    Hashtable i150Hash, i350Hash, temperatureHash, testnoHash;
00018    Hashtable moduleTestNoHash;
00019    String dataOrigin;
00020    private double tMin,tMax, i150Total, i350Total, i500Total;
00021    java.text.DecimalFormat ivFormatter = new java.text.DecimalFormat("#.###");
00022    java.text.DecimalFormat temperatureFormatter = new java.text.DecimalFormat("#.#");
00023 
00024    boolean DEBUG=false;
00025 
00026    public ModuleIVInfo(String moduleSerialNo)  {
00027           this.moduleSerialNo=moduleSerialNo;
00028           sensors=new Vector();
00029           initVariables();
00030           }
00031 
00032    public ModuleIVInfo(String moduleSerialNo, Vector sensors)  {
00033        this.moduleSerialNo=moduleSerialNo;
00034        this.sensors=sensors;
00035        initVariables();
00036        }
00037    private void initVariables() {
00038        modIVs = new Vector();
00039        i150Hash = new Hashtable();
00040        i350Hash = new Hashtable();
00041        temperatureHash = new Hashtable();
00042        testnoHash = new Hashtable();
00043        moduleTestNoHash = new Hashtable();
00044        dataOrigin = new String(" - ");
00045        tMin=100.;
00046        tMax=0.;
00047        i150Total=0.;
00048        i350Total=0.;
00049        i500Total=0.;
00050 
00051        db = SCTDBInterface.getInstance();
00052        try { 
00053          if(sensors.size()>0) {
00054            getSensorIVInfo();
00055            if(i150Hash.size()!=sensors.size()) getMfrIVInfo();
00056            if(i150Hash.size()==sensors.size()) getSensorSums();
00057            }
00058          getModuleIVs();
00059          getModule500VData();
00060          getModuleIVPlots();
00061          System.out.println("done");
00062        }catch(Exception e){System.err.println(e.toString());}
00063                
00064    }
00065 
00066 public double geti150SensorCurrent() {
00067             return i150Total;
00068     }
00069 public double geti350SensorCurrent() {
00070             return i350Total;
00071     }
00072 public double geti500SensorCurrent() {
00073             return i500Total;
00074     }
00075 public String getTemperatureRange() {
00076             if(tMax==0.) return " - ";
00077             return temperatureFormatter.format(tMin)+"-"+temperatureFormatter.format(tMax);
00078     }
00079 public String getOrigin() {
00080             return dataOrigin;
00081     }
00082 public int noModuleIVs() {
00083      return modIVs.size();
00084      }
00085 public ModuleIV getModuleIV(int index) {
00086      String testno = (String)modIVs.elementAt(index);
00087      return (ModuleIV)moduleTestNoHash.get(testno);
00088      }
00089 public ModuleIV getLastModuleIV() {
00090      String testno = (String)modIVs.lastElement();
00091      return (ModuleIV)moduleTestNoHash.get(testno);
00092      }     
00093  
00094 
00095 //***************************************************************************************************
00096 private void getSensorIVInfo() throws Exception {
00097 
00098      if(sensors.size()==0) return;
00099      StringBuffer sensorList = new StringBuffer();
00100      for(int i=0;i<sensors.size();i++) {
00101          if(i>0) sensorList.append(",");
00102          Hashtable tempHash = (Hashtable)sensors.elementAt(i);
00103          sensorList.append((String)tempHash.get("SERIALNO"));
00104          }
00105 
00106      if(!db.isConnected()) throw new Exception("No database connection");
00107      StringBuffer sqlStat = new StringBuffer("SELECT ");
00108      sqlStat.append("tests.ser_no,tstdetivs.i_leak_150,tstdetivs.i_leak_350,tstdetivs.temperature, tests.locn_name,tests.test_no");
00109      sqlStat.append(" FROM tests,tstdetivs");
00110      sqlStat.append(" WHERE tests.ser_no IN ("+sensorList.toString()+")");
00111      sqlStat.append(" AND tests.test_name='DetIVscan'");
00112      sqlStat.append(" AND tstdetivs.test_no=tests.test_no AND tstdetivs.temperature>0");
00113      sqlStat.append(" ORDER BY tests.test_date,tests.test_no");
00114 
00115      statement = db.connection.createStatement();
00116      if(DEBUG) System.out.println(sqlStat.toString());
00117      resultSet = statement.executeQuery(sqlStat.toString());
00118 
00119      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00120           String sn = resultSet.getString(1);
00121           i150Hash.put(sn,resultSet.getString(2));
00122           i350Hash.put(sn,resultSet.getString(3));
00123           temperatureHash.put(sn,resultSet.getString(4));
00124           dataOrigin=resultSet.getString(5);
00125           testnoHash.put(sn,resultSet.getString(6));
00126           }
00127      statement.close();
00128 
00129      // try to get the 500V data
00130      }
00131 //*****************************************************************************************************
00132 private void getMfrIVInfo() throws Exception {
00133      if(!db.isConnected()) throw new Exception("No database connection");
00134      StringBuffer sensorList = new StringBuffer();
00135      for(int i=0;i<sensors.size();i++) {
00136          if(i>0) sensorList.append(",");
00137          Hashtable tempHash = (Hashtable)sensors.elementAt(i);
00138          sensorList.append((String)tempHash.get("SERIALNO"));
00139          }
00140       StringBuffer sqlStat = new StringBuffer("SELECT tests.ser_no,i_leak_150,i_leak_350,temperature,tests.locn_name");
00141       sqlStat.append(" FROM tests,tstdetmfrs WHERE tstdetmfrs.test_no=tests.test_no");
00142       sqlStat.append(" AND tests.ser_no IN ("+sensorList.toString()+")");
00143       sqlStat.append(" AND tests.test_name='DetMfrSheet'");
00144       sqlStat.append(" ORDER BY tests.test_date,tests.test_no");
00145 
00146      statement = db.connection.createStatement();
00147      if(DEBUG) System.out.println(sqlStat.toString());
00148      resultSet = statement.executeQuery(sqlStat.toString());
00149 
00150      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00151           String sn = resultSet.getString(1);
00152           i150Hash.put(sn,resultSet.getString(2));
00153           i350Hash.put(sn,resultSet.getString(3));
00154           temperatureHash.put(sn,resultSet.getString(4));
00155           dataOrigin=resultSet.getString(5);
00156           }
00157      statement.close();
00158      }
00159 //*******************************************************************************************************
00160 private void getSensorSums() {
00161      int i500Count=0;
00162      for(Enumeration e = i150Hash.keys(); e.hasMoreElements();) {
00163         String sn = (String)e.nextElement();
00164         String testno = (String)testnoHash.get(sn);
00165         String i150 = (String)i150Hash.get(sn);
00166         String i350 = (String)i350Hash.get(sn);
00167         double temperature = Double.parseDouble((String)temperatureHash.get(sn));
00168         try {
00169            double i500 = GeneralUtilities.get500VData(testno);
00170            if(i500>0.) i500Count++; 
00171            i500Total+=guiUtilities.DaveUtils.getCorrectedCurrent(i500, temperature);
00172         }catch(Exception e2){System.err.println(e2.toString());}
00173         i150Total+= guiUtilities.DaveUtils.getCorrectedCurrent(Double.parseDouble(i150), temperature);
00174         i350Total+= guiUtilities.DaveUtils.getCorrectedCurrent(Double.parseDouble(i350), temperature);
00175         if(temperature>tMax) tMax=temperature;
00176         if(temperature<tMin) tMin=temperature;
00177         }
00178        if(i500Count!=i150Hash.size()) i500Total=0.;
00179       }
00180 //*****************************************************************************************************
00181 private void getModuleIVs() throws Exception {
00182 
00183      StringBuffer sqlStat = new StringBuffer("SELECT ");
00184      sqlStat.append("tests.ser_no,tests.test_date,tests.locn_name,tests.problem,tests.pass,tstdetivs.i_leak_150,tstdetivs.i_leak_350,tstdetivs.temperature,tests.test_no");
00185      sqlStat.append(" FROM tests,tstdetivs");
00186      sqlStat.append(" WHERE tests.ser_no="+moduleSerialNo+" AND tests.test_name='DetModIV'");
00187      sqlStat.append(" AND tstdetivs.test_no=tests.test_no AND tstdetivs.temperature>0");
00188      sqlStat.append(" ORDER BY tests.test_date,tests.test_no");
00189 
00190      statement = db.connection.createStatement();
00191      if(DEBUG) System.out.println(sqlStat.toString());
00192      resultSet = statement.executeQuery(sqlStat.toString());
00193 
00194      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00195        String sn = resultSet.getString(1);
00196        String testDate = guiUtilities.DaveUtils.extractDate(resultSet.getString(2));
00197        String locn = resultSet.getString(3);  
00198        String problem = resultSet.getString(4); 
00199        String pass = resultSet.getString(5);   
00200        String i150 = resultSet.getString(6);  
00201        String i350 = resultSet.getString(7);
00202        String temperature = resultSet.getString(8);
00203        String testno = resultSet.getString(9);
00204        String status = "FAIL";
00205        if(pass.equals("YES")) {
00206             status = (problem.equals("YES")) ? "Problem" : "Ok";
00207             }
00208        double ii150 = guiUtilities.DaveUtils.getCorrectedCurrent(Double.parseDouble(i150), Double.parseDouble(temperature));
00209        double ii350 = guiUtilities.DaveUtils.getCorrectedCurrent(Double.parseDouble(i350), Double.parseDouble(temperature));
00210        ModuleIV iv = new ModuleIV(sn,testDate,status,temperature,locn,testno,ii150,ii350);
00211        moduleTestNoHash.put(testno,iv);
00212        modIVs.add(testno);
00213        }
00214     statement.close();
00215     }
00216 //*******************************************************************************
00217     private void getModule500VData() {
00218        for(int i=0;i<modIVs.size();i++) {
00219           String testno = (String)modIVs.elementAt(i);
00220           ModuleIV iv = (ModuleIV)moduleTestNoHash.get(testno);
00221           String temperature = iv.getTemperature();
00222           try {
00223            double i500 = GeneralUtilities.get500VData(testno);
00224            i500 = guiUtilities.DaveUtils.getCorrectedCurrent(i500, Double.parseDouble(temperature));
00225            iv.add500VData(i500);       
00226            moduleTestNoHash.put(testno,iv);
00227            }catch(Exception e2){System.err.println(e2.toString());}
00228        }
00229     }
00230 //*******************************************************************************
00231     private void getModuleIVPlots() throws Exception {
00232        if(moduleTestNoHash.size()==0) return;
00233        int i=0;
00234        StringBuffer testnos = new StringBuffer();
00235        for(Enumeration e = moduleTestNoHash.keys(); e.hasMoreElements();) {
00236            if(i>0) testnos.append(",");
00237            i++;
00238            testnos.append((String)e.nextElement());
00239            }
00240        StringBuffer sqlStat = new StringBuffer("SELECT ");
00241        sqlStat.append("test_no,url FROM web_links");
00242      sqlStat.append(" WHERE test_no IN ("+testnos.toString()+")");
00243 
00244      statement = db.connection.createStatement();
00245      if(DEBUG) System.out.println(sqlStat.toString());
00246      resultSet = statement.executeQuery(sqlStat.toString());
00247 
00248      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00249          String testno = resultSet.getString(1);
00250          String url = resultSet.getString(2);
00251          ModuleIV iv = (ModuleIV)moduleTestNoHash.get(testno);
00252          iv.addLink(url);
00253          moduleTestNoHash.put(testno,iv);
00254          }
00255      statement.close();
00256 
00257     }
00258 
00259 
00260 }

Generated on Thu Jul 15 09:55:45 2004 for SCT DAQ/DCS Software - Java by doxygen 1.3.5