00001 package ProdDatabase;
00002
00003 import java.io.*;
00004 import java.util.*;
00005 import java.sql.*;
00006 import guiUtilities.*;
00007
00008
00009
00010
00011
00016 public class ReportDownloader extends Thread {
00017 int reportType;
00018 String parameter1;
00019 int parameter2;
00020
00021 Vector deviceList;
00022 boolean alreadyRunning=false;
00023 private final String thisThreadName = "SCTDB_DOWNLOAD";
00024
00025
00026
00027
00028
00029
00030 public ReportDownloader(int reportType, String parameter1, int parameter2) {
00031 super("SCTDB_DOWNLOAD");
00032 this.reportType=reportType;
00033 this.parameter1=parameter1;
00034 this.parameter2=parameter2;
00035
00036
00037 setPriority(Thread.MIN_PRIORITY);
00038
00039 }
00040
00041 public ReportDownloader(int reportType, Vector deviceList) {
00042 super("SCTDB_DOWNLOAD");
00043 this.reportType=reportType;
00044 this.deviceList = deviceList;
00045
00046
00047 setPriority(Thread.MIN_PRIORITY);
00048
00049 }
00050 public boolean isOkToStart() {
00051 Thread[] allThreads = new Thread[Thread.activeCount()];
00052 Thread.enumerate(allThreads);
00053 for(int i=0;i<allThreads.length;i++) {
00054 if(allThreads[i]!=null && allThreads[i].getName().equals("SCTDB_DOWNLOAD") && allThreads[i].isAlive()) {
00055 System.out.println("***A download from SCTDB is already in progress. Please wait...");
00056 return false;
00057 }
00058 }
00059 return true;
00060 }
00061
00062 public void run() {
00063 StringBuffer htmlContent = new StringBuffer();
00064 switch(reportType) {
00065 case guiUtilities.HTMLViewer.SCTDAQTESTDATA:
00066 String testno=parameter1;
00067 SctDaqTestInfo testInfo;
00068 try {
00069 if((testInfo=HTMLReportUtilities.getHTMLTestInfo(parameter1))==null) {
00070 javax.swing.JOptionPane.showMessageDialog(null,"No SCTDB data for this test number","No Data",javax.swing.JOptionPane.INFORMATION_MESSAGE);
00071 return;
00072 }
00073 htmlContent.append(guiUtilities.DaveUtils.getHTMLHeader(testInfo.getInfoString()));
00074 htmlContent.append(testInfo.getInfoString());
00075 htmlContent.append(HTMLReportUtilities.getHTMLCommentsTable(testno));
00076 htmlContent.append(HTMLReportUtilities.getHTMLDAQTable(testno));
00077 htmlContent.append(HTMLReportUtilities.getHTMLDCSTable(testno));
00078 htmlContent.append(HTMLReportUtilities.getHTMLScanTable(testno));
00079 htmlContent.append(HTMLReportUtilities.getSCTDAQHTMLTestData(testno,testInfo.getTestIndex()));
00080 htmlContent.append(HTMLReportUtilities.getHTMLDefectTable(testno));
00081 htmlContent.append(HTMLReportUtilities.getHTMLPlotTable(testno));
00082 htmlContent.append(HTMLReportUtilities.getImageHTMLTable(testno));
00083 htmlContent.append(guiUtilities.DaveUtils.getHTMLFooter());
00084 HTMLViewer.getInstance().show(htmlContent.toString(),testInfo.getInfoString());
00085 }catch(Exception e) {System.out.println("Exception writing html report: "+e.toString());};
00086 break;
00087 case guiUtilities.HTMLViewer.SCTDAQTESTLIST:
00088 String[] info = parameter1.split("__");
00089
00090 String title = (info.length==1) ? "SCTDAQ Tests of "+info[0] : info[3]+" SCTDAQ Tests of "+info[0]+" at "+info[1]+" on "+info[2];
00091 try {
00092 htmlContent.append(guiUtilities.DaveUtils.getHTMLHeader(title));
00093 htmlContent.append(HTMLReportUtilities.getHTMLModuleSummaryData(parameter1));
00094 htmlContent.append(guiUtilities.DaveUtils.getHTMLFooter());
00095 HTMLViewer.getInstance().show(htmlContent.toString(),title);
00096 }catch(Exception e) {System.out.println("Exception writing html report: "+e.toString());};
00097 break;
00098 case guiUtilities.HTMLViewer.MODULESUMMARY:
00099 String modSummary;
00100 if((modSummary=HTMLReportUtilities.getModuleReport(parameter1))==null) return;
00101 HTMLViewer.getInstance().show(modSummary,"Summary Report for Module "+parameter1);
00102 break;
00103 case guiUtilities.HTMLViewer.SENSORTESTDATA:
00104 if(deviceList.size()<1) return;
00105 StringBuffer sensorList = new StringBuffer((String)deviceList.elementAt(0));
00106 for(int i=1;i<deviceList.size();i++) sensorList.append(","+(String)deviceList.elementAt(i));
00107 try {
00108 htmlContent.append(guiUtilities.DaveUtils.getHTMLHeader("Test Report for Sensor(s) "+sensorList.toString()));
00109 htmlContent.append(HTMLReportUtilities.getSensorMfrHTMLTable(deviceList));
00110 htmlContent.append(HTMLReportUtilities.getSensorIVHTMLTable(deviceList));
00111 htmlContent.append(HTMLReportUtilities.getSensorDepletionHTMLTable(deviceList));
00112 htmlContent.append(HTMLReportUtilities.getSensorDefectHTMLTable(deviceList));
00113 htmlContent.append(HTMLReportUtilities.getSensorVisualTestHTMLTable(deviceList));
00114 htmlContent.append(guiUtilities.DaveUtils.getHTMLFooter());
00115 HTMLViewer.getInstance().show(htmlContent.toString(),"Sensor Test Report for "+sensorList.toString());
00116 }catch(Exception e2) {System.out.println("ERROR: Exception writing sensor test report: "+e2.toString());};
00117 break;
00118 case guiUtilities.HTMLViewer.URLTOPOSTSCRIPT:
00119 try {
00120 GeneralUtilities.downloadPSFile(null,new java.net.URL(parameter1));
00121 }catch(Exception e3) {System.out.println("ERROR: Exception downloading/displaying postscript: "+e3.toString());};
00122 break;
00123 case guiUtilities.HTMLViewer.RAWDATA:
00124 try {
00125 if((testInfo=HTMLReportUtilities.getHTMLTestInfo(parameter1))==null) {
00126 javax.swing.JOptionPane.showMessageDialog(null,"No SCTDB data for this test number","No Data",javax.swing.JOptionPane.INFORMATION_MESSAGE);
00127 return;
00128 }
00129 Vector theRawData = GeneralUtilities.getRawData(parameter1);
00130 if(theRawData.size()>0) {
00131 testInfo = HTMLReportUtilities.getHTMLTestInfo(parameter1);
00132 RawDataViewer.getInstance().showNewData(theRawData,"Raw Data for "+testInfo.getInfoString());
00133 }
00134 }catch(Exception e4) {System.out.println("ERROR: Exception downloading raw data: "+e4.toString());};
00135 break;
00136
00137 default:
00138 }
00139 }
00140
00141
00142 }