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
00010
00011
00012
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
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
00032
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
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
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
00072
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
00090
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
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
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
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
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
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
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
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));
00296 itemList.addElement(resultSet.getString(2));
00297 itemList.addElement(resultSet.getString(3));
00298 itemList.addElement(resultSet.getString(4));
00299 itemList.addElement(resultSet.getString(5));
00300 itemList.addElement(resultSet.getString(6));
00301 }
00302
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));
00331 theLine.addElement(resultSet.getString(2));
00332 theLine.addElement(resultSet.getString(3));
00333 theLine.addElement(resultSet.getString(4));
00334 theLine.addElement(resultSet.getString(5));
00335 itemList.addElement(theLine);
00336 }
00337 System.out.println("Retrieved "+recordCount+" records in total.");
00338 statement.close();
00339 return itemList;
00340 }
00341
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
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
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
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
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];
00427 String thisData = myFormatter.format(idata);
00428 idata-=XYOffsets[i];
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];
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
00486
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
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
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
00628 out.close();
00629 return outFile.getAbsolutePath();
00630 }
00631
00632
00633 }