00001 package ProdDatabase;
00002 import java.io.*;
00003 import java.util.Vector;
00004 import java.util.Hashtable;
00005
00006 import Preferences.*;
00007
00008 public class SignoffData implements ModuleSignoffData {
00009
00010 Hashtable data;
00011 String uploadInfo;
00012
00013 public SignoffData() {
00014 data = new Hashtable();
00015 }
00016
00017 public SignoffData(String testno) {
00018 data = new Hashtable();
00019 try {
00020 Vector rawData = GeneralUtilities.getRawData(testno);
00021 if(rawData.size()>0) {
00022 extractSignoffInfo((String)rawData.elementAt(1));
00023 if(!data.containsKey(keywords[ModuleSignoffData.SERIALNO])) {
00024 String sn = GeneralUtilities.getSerialNo(testno);
00025 if(sn!=null) data.put(keywords[ModuleSignoffData.SERIALNO],sn);
00026 }
00027 }
00028 }catch(Exception e){System.err.println("SignoffData:: Exception downloading signoffInfo: "+e.toString());}
00029 }
00030
00031 public SignoffData(String uploadInfo, String dataString) {
00032 this.uploadInfo = uploadInfo;
00033 data = new Hashtable();
00034 extractSignoffInfo(dataString);
00035 }
00036
00037 private void extractSignoffInfo(String dataString) {
00038 String[] lines = dataString.split("[\\n\\r]");
00039 String keyword="None";
00040 for(int line=0;line<lines.length;line++) {
00041 if(lines[line].startsWith("#")) continue;
00042 if(lines[line].startsWith("%")) {
00043 keyword=lines[line];
00044 continue;
00045 }
00046 if(data.containsKey(keyword)) {
00047 String oldData = (String)data.get(keyword);
00048 oldData += "\n"+lines[line];
00049 data.put(keyword,oldData);
00050 }
00051 else data.put(keyword,lines[line]);
00052 }
00053 }
00054
00055
00056 public String getString(int index) {
00057 if(!data.containsKey(keywords[index])) return null;
00058 return (String)data.get(keywords[index]);
00059 }
00060 public void put(String key, String value) {
00061 data.put(key,value);
00062 }
00063 public void put(int ikey, String value) {
00064 put(keywords[ikey],value);
00065 }
00066 public String getUploaderInfo() {
00067 return uploadInfo;
00068 }
00069 public Vector allFieldsPresent(int uploadType) {
00070 Vector listOfMissingFields = new Vector();
00071 for(int i=0;i<keywords.length;i++) {
00072 if(compulsoryFields[uploadType][i] && !data.containsKey(keywords[i])) listOfMissingFields.add(descriptions[i]);
00073 }
00074
00075 if(data.containsKey(keywords[BARREL])) {
00076 if(((String)data.get(keywords[BARREL])).matches("5?6") && !data.containsKey(keywords[B56REASON])) listOfMissingFields.add(descriptions[B56REASON]);
00077 }
00078
00079 if(data.containsKey(keywords[CATEGORY])) {
00080 if(((String)data.get(keywords[CATEGORY])).equals("FAIL") && !data.containsKey(keywords[FAILREASON])) listOfMissingFields.add(descriptions[FAILREASON]);
00081 }
00082 return listOfMissingFields;
00083 }
00084 public String writeUploadDataFile(String sn) throws Exception {
00085 long nowtime = java.util.Calendar.getInstance().getTimeInMillis();
00086 Long tname = new Long(nowtime);
00087 File outFile = new File(PreferencesInterface.getInstance().getPreference(PreferencesInterface.UPLOAD_DIR),sn+"_"+tname.toString()+".txt");
00088 BufferedWriter out = new BufferedWriter(new FileWriter(outFile));
00089 for(int i=0;i<keywords.length;i++) {
00090 if(!data.containsKey(keywords[i])) continue;
00091 out.write(keywords[i]);
00092 out.newLine();
00093 out.write((String)data.get(keywords[i]));
00094 out.newLine();
00095 }
00096 out.close();
00097 return outFile.getAbsolutePath();
00098 }
00099
00100 }