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

SignoffData.java

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         // if barrelcategory is '56', then require a reason
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         // if category is 'FAIL' then require a reason
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 }

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