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

BarrelUtilities.java

00001 package ProdDatabase;
00002 import java.sql.*;
00003 import java.util.*;
00004 
00005 public class BarrelUtilities implements SCTDBInfo, barrelMetrologyData {
00006 
00007 // *****************************************************************************************************************
00008     public static Vector getHybridVector(String sn1,String sn2,String locn) throws Exception {
00009 // return a Vector containing bmHASIC serial nos, located at locn, not-assembled, with
00010 // corresponding bmHPCs at the same locn also non-assembled
00011 
00012 // convert to bmHASIC
00013       sn1 = sn1.substring(0,7)+"8"+sn1.substring(8);
00014       sn2 = sn2.substring(0,7)+"8"+sn2.substring(8);
00015       Vector itemList = new Vector();
00016       StringBuffer sqlStat = new StringBuffer("SELECT ");
00017       sqlStat.append("ser_no,assembled FROM items WHERE ser_no >="+sn1+" AND ser_no <="+sn2+" AND locn_name = '"+locn+"'");
00018       sqlStat.append(" ORDER BY ser_no");
00019 //      System.out.println(sqlStat.toString());
00020 
00021       SCTDBInterface db = SCTDBInterface.getInstance();
00022       Statement statement = db.connection.createStatement();
00023       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00024       int recordCount=0;
00025       Hashtable tempHash = new Hashtable();
00026       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00027          recordCount++;
00028          String serno = resultSet.getString(1);
00029          String aFlag = resultSet.getString(2);
00030          tempHash.put(serno,"1");
00031 //         if(aFlag.equals("NO")) tempHash.put(serno,"1");
00032 //         else System.out.println("Cannot assemble hybrid "+serno+" - this is already assembled.");
00033             }
00034       statement.close();
00035       if(recordCount==0) {
00036            System.out.println("There are "+recordCount+" bmHASICs located at "+locn+" within the requested range.");
00037            return itemList;
00038            }
00039 // now check that the bmHPC are there too
00040       String firstbit = sn1.substring(0,7);
00041       String lastbit = sn1.substring(8);
00042       String sn1_2 = firstbit+"7"+lastbit;
00043       firstbit = sn2.substring(0,7);
00044       lastbit = sn2.substring(8);
00045       String sn2_2 = firstbit+"7"+lastbit;
00046 
00047       sqlStat = new StringBuffer("SELECT ser_no,assembled FROM items WHERE ser_no >="+sn1_2+" AND ser_no <="+sn2_2+" AND locn_name = '"+locn+"'");
00048       sqlStat.append(" ORDER BY ser_no");
00049 //      System.out.println(sqlStat.toString());
00050       statement = db.connection.createStatement();
00051       resultSet = statement.executeQuery(sqlStat.toString());
00052       recordCount=0;
00053       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00054          recordCount++;
00055          String serno = resultSet.getString(1);
00056          String aFlag = resultSet.getString(2);
00057          if(aFlag.equals("NO")) {
00058               String bmHASIC = serno.substring(0,7)+"8"+serno.substring(8);
00059               if(tempHash.containsKey(bmHASIC)) itemList.add(serno.substring(0,7)+"0"+serno.substring(8));
00060               }
00061          else System.out.println("Cannot assemble bare hybrid "+serno+" - this is already assembled.");
00062       }
00063       statement.close();
00064       System.out.println("There are "+recordCount+" bmHASICs and bmHPCs located at "+locn+" within the requested range.");
00065       System.out.println("Of these, "+itemList.size()+" bmHPCs are not yet assembled.");
00066  
00067       return itemList;
00068       }
00069 // *****************************************************************************************************************
00070     public static Vector getBaseBoardVector(String sn1,String sn2,String locn) throws Exception {
00071 // return a Vector containing bmSB serial nos, located at locn, not-assembled, with
00072 // corresponding bmBBs at the same locn also non-assembled
00073 
00074       Vector itemList = new Vector();
00075       StringBuffer sqlStat = new StringBuffer("SELECT ");
00076       sqlStat.append("ser_no,assembled FROM items WHERE ser_no >="+sn1+" AND ser_no <="+sn2+" AND locn_name = '"+locn+"'");
00077       sqlStat.append(" ORDER BY ser_no");
00078 
00079       SCTDBInterface db = SCTDBInterface.getInstance();
00080       Statement statement = db.connection.createStatement();
00081       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00082       int recordCount=0;
00083       Hashtable tempHash = new Hashtable();
00084       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00085          recordCount++;
00086          String serno = resultSet.getString(1);
00087          String aFlag = resultSet.getString(2);
00088          tempHash.put(serno,"1");
00089 //         if(aFlag.equals("NO")) tempHash.put(serno,"1");
00090 //         else System.out.println("Cannot assemble to sensor-baseboard "+serno+" - this is already assembled.");
00091             }
00092       statement.close();
00093       if(recordCount==0) {
00094              System.out.println("There are "+recordCount+" bmSBs located at "+locn+" within the requested range.");
00095              return itemList;
00096              }
00097 // now check that the bmBB are there too
00098       String firstbit = sn1.substring(0,7);
00099       String lastbit = sn1.substring(8);
00100       String sn1_2 = firstbit+"8"+lastbit;
00101       firstbit = sn2.substring(0,7);
00102       lastbit = sn2.substring(8);
00103       String sn2_2 = firstbit+"8"+lastbit;
00104 
00105       sqlStat = new StringBuffer("SELECT ser_no,assembled FROM items WHERE ser_no >="+sn1_2+" AND ser_no <="+sn2_2+" AND locn_name = '"+locn+"'");
00106       sqlStat.append(" ORDER BY ser_no");
00107 //      System.out.println(sqlStat.toString());
00108       statement = db.connection.createStatement();
00109       resultSet = statement.executeQuery(sqlStat.toString());
00110       recordCount=0;
00111       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00112          recordCount++;
00113          String serno = resultSet.getString(1);
00114          String aFlag = resultSet.getString(2);
00115          if(aFlag.equals("NO")) {
00116               String bmSB = serno.substring(0,7)+"0"+serno.substring(8);
00117               if(tempHash.containsKey(bmSB)) itemList.add(bmSB);
00118               }
00119          else System.out.println("Cannot assemble bare baseboard "+serno+" - this is already assembled.");
00120       }
00121       statement.close();
00122       System.out.println("There are "+recordCount+" bmSBs and bmBBs located at "+locn+" within the requested range.");
00123       System.out.println("Of these, "+itemList.size()+" bmBBs are not yet assembled.");
00124       return itemList;
00125       }
00126 // *****************************************************************************************************************
00127     public static Vector getModuleVector(String sn1,String sn2,String locn) throws Exception {
00128 // return a Vector containing module serial nos, located at locn, not-assembled
00129       Vector itemList = new Vector();
00130       StringBuffer sqlStat = new StringBuffer("SELECT ");
00131       sqlStat.append("ser_no,assembled FROM items WHERE ser_no >="+sn1+" AND ser_no <="+sn2+" AND locn_name = '"+locn+"'");
00132       sqlStat.append(" ORDER BY ser_no");
00133 //      System.out.println(sqlStat.toString());
00134       Hashtable tempHash = new Hashtable();
00135 
00136       SCTDBInterface db = SCTDBInterface.getInstance();
00137       Statement statement = db.connection.createStatement();
00138       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00139       int recordCount=0;
00140       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00141          recordCount++;
00142          String serno = resultSet.getString(1);
00143          String aFlag = resultSet.getString(2);
00144          if(aFlag.equals("NO")) tempHash.put(serno,"1");
00145          else System.out.println("Cannot assemble to module "+serno+" - this is already assembled.");
00146             }
00147       statement.close();
00148       if(recordCount==0) {
00149          System.out.println("There are "+recordCount+" modules located at "+locn+" within the requested range.");
00150          return itemList;
00151          }
00152 // now check that the bmHASIC are there too, they must be NOT-assembled
00153       String firstbit = sn1.substring(0,7);
00154       String lastbit = sn1.substring(8);
00155       String sn1_2 = firstbit+"8"+lastbit;
00156       firstbit = sn2.substring(0,7);
00157       lastbit = sn2.substring(8);
00158       String sn2_2 = firstbit+"8"+lastbit;
00159 
00160       sqlStat = new StringBuffer("SELECT ser_no,assembled FROM items WHERE ser_no >="+sn1_2+" AND ser_no <="+sn2_2+" AND locn_name = '"+locn+"'");
00161       sqlStat.append(" ORDER BY ser_no");
00162 //      System.out.println(sqlStat.toString());
00163       statement = db.connection.createStatement();
00164       resultSet = statement.executeQuery(sqlStat.toString());
00165       recordCount=0;
00166       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00167          recordCount++;
00168          String serno = resultSet.getString(1);
00169          String aFlag = resultSet.getString(2);
00170          if(!aFlag.equals("NO")) System.out.println("Cannot assemble ASIC_HYBRID "+serno+" - this is already assembled.");
00171          else {
00172             String bmModule = serno.substring(0,7)+"0"+serno.substring(8);
00173             if(tempHash.containsKey(bmModule)) itemList.addElement(bmModule);
00174             else System.out.println(bmModule+" is not located at "+locn);
00175          }
00176       }
00177       statement.close();
00178       System.out.println("There are "+recordCount+" modules located at "+locn+" within the requested range.");
00179       System.out.println("Of these, "+itemList.size()+" are not yet assembled.");
00180 
00181       return itemList;
00182       }
00183 // *****************************************************************************************************************
00184     public static boolean checkSensorList(Vector snList,String locn) throws Exception {
00185 
00186       StringBuffer snBuffer = new StringBuffer();
00187       int ndets=0;
00188       for(int i=0;i<snList.size();i++) {
00189           if(ndets>0) snBuffer.append(",");
00190           snBuffer.append((String)snList.elementAt(i));
00191           ndets++;
00192           }
00193       StringBuffer sqlStat = new StringBuffer("SELECT ");
00194       sqlStat.append("ser_no,assembled,locn_name FROM items WHERE ser_no IN ("+snBuffer.toString()+")");
00195       sqlStat.append(" AND ctype='bmSiDetectorOut'");
00196       sqlStat.append(" ORDER BY ser_no");
00197 
00198       SCTDBInterface db = SCTDBInterface.getInstance();
00199       Statement statement = db.connection.createStatement();
00200       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00201 
00202       int recordCount=0;
00203       int nready=0;
00204       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00205          recordCount++;
00206          String serno = resultSet.getString(1);
00207          String aFlag = resultSet.getString(2);
00208          String thislocn = resultSet.getString(3);
00209          if(aFlag.equals("NO") && thislocn.equals(locn)) nready++;
00210          else {
00211               if(aFlag.equals("YES")) System.out.println("Cannot assemble sensor "+serno+" - this is already assembled.");
00212               if(!thislocn.equals(locn))  System.out.println("Cannot assemble sensor "+serno+" - this is at "+thislocn+", not "+locn);
00213             }
00214          }
00215       statement.close();
00216       if(nready!=4) return false;
00217       return true;
00218       }
00219 // *****************************************************************************************************************
00220     public static boolean checkSensorBaseboard(String sn,String locn) throws Exception {
00221 
00222 
00223       StringBuffer sqlStat = new StringBuffer("SELECT ");
00224       sqlStat.append("ser_no,assembled,locn_name FROM items WHERE ser_no = "+sn);
00225       sqlStat.append(" AND ctype='bmSB'");
00226 
00227       SCTDBInterface db = SCTDBInterface.getInstance();
00228       Statement statement = db.connection.createStatement();
00229       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00230 
00231       int nready=0;
00232       int ncounts=0;
00233       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00234          ncounts++;
00235          String serno = resultSet.getString(1);
00236          String aFlag = resultSet.getString(2);
00237          String thislocn = resultSet.getString(3);
00238          if(aFlag.equals("NO") && thislocn.equals(locn)) nready++;
00239          else {
00240               if(aFlag.equals("YES")) System.out.println("Cannot assemble sensor-baseboard "+serno+" - this is already assembled.");
00241               if(!thislocn.equals(locn))  System.out.println("Cannot assemble sensor-baseboard "+serno+" - this is at "+thislocn+", not "+locn);
00242             }
00243          }
00244       
00245       statement.close();
00246       if(ncounts==0) System.out.println("No sensor-baseboard registered with serial no "+sn);
00247       if(nready!=1) return false;
00248       return true;
00249       }
00250 
00251 // *****************************************************************************************************************
00252     public static Hashtable getChipHash(Vector chipList, String thisLocn) throws Exception {
00253       Hashtable thisHash = new Hashtable();
00254       StringBuffer mfrSerNos = new StringBuffer();
00255       for(int i=0;i<chipList.size();i++) {
00256           if(i>0) mfrSerNos.append(",");
00257           mfrSerNos.append("'"+(String)chipList.elementAt(i)+"'"); 
00258           }
00259       StringBuffer sqlStat = new StringBuffer("SELECT ");
00260       sqlStat.append("ser_no,mfr_ser_no,locn_name FROM items WHERE mfr_ser_no IN ("+mfrSerNos.toString()+") AND ctype='chABCD3T' AND assembled='NO'");
00261       sqlStat.append(" ORDER BY ser_no");
00262 
00263       SCTDBInterface db = SCTDBInterface.getInstance();
00264       Statement statement = db.connection.createStatement();
00265       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00266       int recordCount=0;
00267       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00268           recordCount++;
00269           String sn = resultSet.getString(1);   
00270           String mfr = resultSet.getString(2);
00271           String locn = resultSet.getString(3);
00272           if(!locn.equals(thisLocn)) {
00273                   System.out.println("Chip "+mfr+" is owned by "+locn+", not "+thisLocn+"!");
00274                   continue;
00275                   }
00276           thisHash.put(mfr,sn);
00277             }
00278 //      System.out.println("Retrieved "+recordCount+" records in total.");
00279       statement.close();
00280       return thisHash;
00281       }
00282 // *****************************************************************************************************************
00283     public static Vector getItemVector(String serialNo) throws Exception {
00284       Vector itemList = new Vector();
00285       StringBuffer sqlStat = new StringBuffer("SELECT ");
00286       sqlStat.append("mfr,mfr_ser_no,ctype,locn_name,assembled,trashed FROM items WHERE ser_no="+serialNo);
00287       sqlStat.append(" ORDER BY ser_no");
00288 
00289       SCTDBInterface db = SCTDBInterface.getInstance();
00290       Statement statement = db.connection.createStatement();
00291       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00292       int recordCount=0;
00293       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00294           recordCount++;
00295           itemList.addElement(resultSet.getString(1));   // mfr name
00296           itemList.addElement(resultSet.getString(2));   // mfr serial no
00297           itemList.addElement(resultSet.getString(3));   // type
00298           itemList.addElement(resultSet.getString(4));   // location name
00299           itemList.addElement(resultSet.getString(5));   // assembled flag
00300           itemList.addElement(resultSet.getString(6));   // trashed flag
00301             }
00302 //      System.out.println("Retrieved "+recordCount+" records in total.");
00303       statement.close();
00304       return itemList;
00305       }
00306 
00307 // ****************************************************************************************************************
00308     public static Vector getSNfile(String shipment_no) throws Exception {
00309       Vector itemList = new Vector();
00310       Vector theLine =  new Vector();
00311       theLine.addElement("Serial Number");
00312       theLine.addElement("Mfr Serial No");
00313       theLine.addElement("Type");
00314       theLine.addElement("Current Location");
00315       theLine.addElement("Assembled?");
00316       itemList.addElement(theLine);
00317 
00318       StringBuffer sqlStat = new StringBuffer("SELECT ");
00319       sqlStat.append("ser_no,mfr_ser_no,ctype,locn_name,assembled FROM items");
00320       sqlStat.append(" WHERE ser_no IN (SELECT ship_items.ser_no FROM ship_items WHERE ship_items.ship_no = "+shipment_no+")");
00321       sqlStat.append(" ORDER BY ser_no");
00322 
00323       SCTDBInterface db = SCTDBInterface.getInstance();
00324       Statement statement = db.connection.createStatement();
00325       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00326      int recordCount=0;
00327      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00328           recordCount++;
00329           theLine = new Vector();
00330           theLine.addElement(resultSet.getString(1));   // serial no
00331           theLine.addElement(resultSet.getString(2));   // mfr serial no
00332           theLine.addElement(resultSet.getString(3));   // type
00333           theLine.addElement(resultSet.getString(4));   // location name
00334           theLine.addElement(resultSet.getString(5));   // assembled flag
00335           itemList.addElement(theLine);
00336             }
00337       System.out.println("Retrieved "+recordCount+" records in total.");
00338       statement.close();
00339       return itemList;
00340       }
00341 //*******************************************************************************8
00342       public static Vector checkDataSheets(String location, int fileType, Vector fileList) throws Exception {
00343           
00344          StringBuffer sqlStat = new StringBuffer("SELECT run_no FROM tests");
00345          sqlStat.append(" WHERE tests.locn_name='"+location+"' AND tests.test_name='"+dataSheetTestNames[fileType]+"'");
00346 
00347 //      SCTDBInterface db = SCTDBInterface.getInstance();
00348       Statement statement = SCTDBInterface.getInstance().connection.createStatement();
00349       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00350 
00351         for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00352           String testFileName = resultSet.getString(1);
00353           if(fileList.removeElement(testFileName)) {
00354               System.out.println(testFileName+" is already uploaded, skipping...");
00355               }
00356           }
00357       statement.close();
00358       return fileList;
00359       }
00360 //-----------------------------------------------------------------------------------------------
00361    public static Hashtable getDataSheetStatus(String moduleSerialNo, String bmSBserialNo) throws Exception {
00362 // return a has of testdatasheet name vs DB testno
00363       Hashtable thisHash = new Hashtable();
00364       if(moduleSerialNo==null) return thisHash;
00365       
00366       StringBuffer sqlStat = new StringBuffer("SELECT ");
00367       sqlStat.append(" tests.test_no,tests.test_name FROM tests");
00368       sqlStat.append(" WHERE tests.test_name LIKE 'bm%_RData'");
00369       sqlStat.append(" AND tests.run_no != 'SIGNOFF' AND tests.run_no != 'FINALSIGNOFF'");
00370 
00371       String sn1 = moduleSerialNo.substring(0,7)+"%"+moduleSerialNo.substring(8);
00372       if(bmSBserialNo!=null) {
00373          String sn2= bmSBserialNo.substring(0,7)+"%"+bmSBserialNo.substring(8);
00374          sqlStat.append(" AND (tests.ser_no LIKE '"+sn1+"' OR tests.ser_no LIKE '"+sn2+"')");
00375          }
00376       else sqlStat.append(" AND tests.ser_no LIKE '"+sn1+"'");
00377  
00378       sqlStat.append(" ORDER BY tests.test_date,tests.test_no");
00379    
00380       Statement statement = SCTDBInterface.getInstance().connection.createStatement();
00381       ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00382       for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00383           String testno = resultSet.getString(1);
00384           String testname = resultSet.getString(2);
00385           thisHash.put(testname,testno);
00386           }
00387       statement.close();
00388       return thisHash;
00389       }
00390 //************************************************************************************
00391    public static Vector getXYMetrologyData(String testno) throws Exception {
00392 // generate report of single XY metrology data measurement
00393       Vector itemList = new Vector();
00394       Vector theLine = new Vector();
00395       theLine.addElement("Parameter");
00396       theLine.addElement("Nominal");
00397       theLine.addElement("Data");
00398       theLine.addElement("Deviation");
00399       theLine.addElement("GOOD cut");
00400       theLine.addElement("PASS cut");
00401       theLine.addElement("PASS2 cut");
00402       theLine.addElement("SPARE cut");
00403       theLine.addElement("Status");
00404       itemList.addElement(theLine);
00405       StringBuffer sqlStat = new StringBuffer("SELECT EVENT");
00406       for(int i=0;i<xyMetrologyParameters.length;i++) {
00407               sqlStat.append(",");
00408               sqlStat.append(xyMetrologyParameters[i]);
00409               }
00410       sqlStat.append(" FROM SCT_TSTBMSURVEYXY WHERE test_no = "+testno);
00411       Statement statement = SCTDBInterface.getInstance().connection.createStatement();
00412 //     System.out.println(sqlStat.toString());
00413      java.text.DecimalFormat myFormatter = new java.text.DecimalFormat("#.##");
00414      String machine="";
00415      String temperature="";
00416      ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00417      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00418           String eventType = resultSet.getString(1);
00419           for(int i=0;i<xyMetrologyParameters.length;i++) {
00420              theLine = new Vector();
00421              String theData = resultSet.getString(2+i);
00422              if(i==xyMetrologyParameters.length-2) machine = resultSet.getString(2+i);
00423              else if(i==xyMetrologyParameters.length-1) temperature = resultSet.getString(2+i);
00424              else {      
00425                      double idata = Double.parseDouble(theData);
00426                      idata *= XYConversions[i];   // convert to microns
00427                      String thisData = myFormatter.format(idata);
00428                      idata-=XYOffsets[i];  // offset from nominal if requested
00429                      String deviation = myFormatter.format(idata);
00430                      theLine.addElement(xyMetrologyParameters[i]);
00431                      theLine.addElement(Double.toString(XYOffsets[i]));
00432                      theLine.addElement(thisData);
00433                      theLine.addElement(deviation);
00434                      for(int j=0;j<4;j++) theLine.addElement(Double.toString(XYTolerances[j][i]));
00435                      if(eventType.equals("SB")) {
00436                        if(i<13) theLine.addElement(categories[getXYStatus(i,theData)]);
00437                        else theLine.addElement("n/a");
00438                        }
00439                      else theLine.addElement(categories[getXYStatus(i,theData)]);
00440                      itemList.addElement(theLine);
00441                      }
00442                   }      
00443       }
00444       statement.close();
00445       Vector returnVector = new Vector();
00446       returnVector.addElement(machine);
00447       returnVector.addElement(temperature);
00448       returnVector.addElement(itemList);
00449       return returnVector;
00450 }
00451 
00452     public static int getXYStatus(int index, String data) {
00453       double idata = Double.parseDouble(data);
00454       idata *= XYConversions[index];   // convert to microns
00455       idata-=XYOffsets[index]; 
00456       String deviation = new java.text.DecimalFormat("#.#####").format(idata);
00457       int thisIndex = deviation.indexOf("."); 
00458       if(thisIndex!=-1) {
00459          int maxLength = thisIndex+XYTolerances_rd[index]+1;
00460          if(deviation.length()>maxLength) deviation = deviation.substring(0,maxLength);
00461          }    
00462       double dev = Double.parseDouble(deviation);
00463 
00464       for(int j=0;j<4;j++) if(dev<=XYTolerances[j][index]) return j;
00465       return 4;
00466       }
00467 
00468     public static int getZStatus(int index, String data) {
00469 
00470       int thisIndex = data.indexOf(".");
00471       double idata;
00472   
00473       switch(ZToleranceType[index]) {
00474         default:
00475          return 0;
00476         case 0: 
00477          if(thisIndex!=-1) {
00478            int maxLength = thisIndex+ZTolerances_rd[index]+1;
00479            if(data.length()>maxLength) data = data.substring(0,maxLength);
00480            } 
00481          idata = Double.parseDouble(data);
00482          for(int j=0;j<4;j++) if(idata>=ZTolerances[j][index]) return j;
00483          break;
00484         case 1:
00485 // special case for optimalRMSZerrorLower and optimalRMSZerrorUpper
00486 // precision is 3 for GOOD/PASS, 2 for PASS2/SPARE
00487          for(int j=0;j<4;j++) {
00488            int precision = (j>1 && (index==12 || index==13)) ? 2 : ZTolerances_rd[index];
00489            if(thisIndex!=-1) {
00490              int maxLength = thisIndex+precision+1;
00491              if(data.length()>maxLength) data = data.substring(0,maxLength);
00492              } 
00493            idata = Double.parseDouble(data);
00494            if(idata<=ZTolerances[j][index]) return j;
00495            }
00496          break;
00497         case 2:
00498          double dev = Math.abs(ZDesignValues[index]-Double.parseDouble(data));
00499          String deviation = new java.text.DecimalFormat("#.#####").format(dev);
00500          thisIndex = deviation.indexOf(".");
00501          if(thisIndex!=-1) {
00502            int maxLength = thisIndex+ZTolerances_rd[index]+1;
00503            if(deviation.length()>maxLength) deviation = deviation.substring(0,maxLength);
00504            } 
00505          dev = Double.parseDouble(deviation);
00506          for(int j=0;j<4;j++) if(dev<=ZTolerances[j][index]) return j;
00507          break;
00508          }
00509        return 4;
00510        }
00511 
00512 
00513 
00514 //***********************************************************************************************
00515    public static Vector getZMetrologyData(String testno) throws Exception {
00516 // generate report of single XY metrology data measurement
00517       Vector itemList = new Vector();
00518       Vector theLine = new Vector();
00519       theLine.addElement("Parameter");
00520       theLine.addElement("Data");
00521       theLine.addElement("GOOD cut");
00522       theLine.addElement("PASS cut");
00523       theLine.addElement("PASS2 cut");
00524       theLine.addElement("SPARE cut");
00525       theLine.addElement("Category");
00526       itemList.addElement(theLine);
00527       StringBuffer sqlStat = new StringBuffer("SELECT EVENT");
00528       for(int i=0;i<zMetrologyParameters.length;i++) {
00529               sqlStat.append(",");
00530               sqlStat.append(zBarrelDBParameters[i]);
00531               }
00532       sqlStat.append(" FROM SCT_TSTBMSURVEYZ WHERE test_no = "+testno);
00533       Statement statement = SCTDBInterface.getInstance().connection.createStatement();
00534 //     System.out.println(sqlStat.toString());
00535      String machine="";
00536      String temperature="";
00537      ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00538      for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00539           String eventType=resultSet.getString(1);
00540           for(int i=0;i<zMetrologyParameters.length;i++) {
00541              theLine = new Vector();
00542              String theData = resultSet.getString(2+i);
00543              if(i==zMetrologyParameters.length-2) machine = resultSet.getString(2+i);
00544              else if(i==zMetrologyParameters.length-1) temperature = resultSet.getString(2+i);
00545              else {      
00546 
00547                      theLine.addElement(zMetrologyParameters[i]);
00548                      theLine.addElement(theData);
00549                      switch(ZToleranceType[i]) {
00550                         default:
00551                           theLine.addElement("n/a");
00552                           theLine.addElement("n/a");
00553                           theLine.addElement("n/a");
00554                           theLine.addElement("n/a");
00555                           break;
00556                         case 0:
00557                           for(int j=0;j<4;j++)theLine.addElement(">="+Double.toString(ZTolerances[j][i]));
00558                           break;
00559                         case 1:
00560                           for(int j=0;j<4;j++)theLine.addElement("<="+Double.toString(ZTolerances[j][i]));
00561                           break;
00562                         case 2:
00563                           for(int j=0;j<4;j++)theLine.addElement(Double.toString(ZDesignValues[i])+"+/-"+Double.toString(ZTolerances[j][i]));
00564                           break;
00565                         }
00566                      if(ZToleranceType[i]==3) theLine.addElement("n/a");
00567                      else {
00568                        if(eventType.equals("SB")) {
00569                           if(is_SB_ZTolerance[i]) theLine.addElement(categories[getZStatus(i,theData)]);
00570                           else theLine.addElement("n/a");
00571                           }
00572                        else theLine.addElement(categories[getZStatus(i,theData)]);
00573                        }
00574                      itemList.addElement(theLine);
00575                      }
00576                   }      
00577       }
00578       statement.close();
00579       Vector returnVector = new Vector();
00580       returnVector.addElement(machine);
00581        returnVector.addElement(temperature);
00582       returnVector.addElement(itemList);
00583       return returnVector;
00584 }     
00585 
00586    public static void checkQualityUploads(Map qualityMap,Map signoffMap) throws Exception {
00587 
00588          StringBuffer sqlStat = new StringBuffer("SELECT ser_no,run_no FROM tests");
00589          sqlStat.append(" WHERE test_name='bmMOD_RData'");
00590          sqlStat.append(" ORDER BY test_date, test_no");
00591          Statement statement = SCTDBInterface.getInstance().connection.createStatement();
00592          ResultSet resultSet = statement.executeQuery(sqlStat.toString());
00593          for(boolean n = resultSet.next() ; n==true ; n=resultSet.next() ){
00594             String sn = resultSet.getString(1);
00595             String type = resultSet.getString(2);
00596             if(type.equals("SIGNOFF")) qualityMap.remove(sn);
00597             if(type.equals("FINALSIGNOFF")) signoffMap.remove(sn);
00598             }
00599       statement.close();
00600       }
00601 
00602     public static String writeUploadFile(String sn, String dataFile, String userInitials, String location, String signoffType) throws Exception {
00603         Preferences.PreferencesInterface prefs = Preferences.PreferencesInterface.getInstance();
00604         java.io.File outFile = new java.io.File(prefs.getPreference(Preferences.PreferencesInterface.UPLOAD_DIR),sn+"_"+signoffType+".upl");
00605         java.io.BufferedWriter out = new java.io.BufferedWriter(new java.io.FileWriter(outFile));
00606         out.write("%NEWTEST");
00607         out.newLine();
00608         out.write("SERIAL NUMBER : "+sn);
00609         out.newLine();
00610         out.write("TEST MADE BY : "+userInitials);
00611         out.newLine();
00612         out.write("LOCATION NAME : "+location);
00613         out.newLine();
00614         out.write("Run number : "+signoffType);
00615         out.newLine();
00616         out.write("TEST DATE : "+guiUtilities.DaveUtils.getTodaysDate());
00617         out.newLine();
00618         out.write("PASSED : YES");
00619         out.newLine();
00620         out.write("PROBLEM : NO");
00621         out.newLine();
00622         out.write("%bmMOD_RData");
00623         out.newLine();
00624         out.write("%TEST Rawdata");
00625         out.newLine();
00626         out.write("FILENAME : "+dataFile);
00627         // note deliberately miss final newline, otherwise UploadTestData will fail!
00628         out.close();
00629         return outFile.getAbsolutePath();
00630         }
00631  
00632 
00633 }

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