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

IVTestInterface.java

00001 package DisplayGUI;
00002 import java.util.*;
00003 import Preferences.*;
00004 
00010 public class IVTestInterface implements SummaryReader.regExpressions {
00011    Vector ivtests;
00012    ConfigurationInterface conf;
00013    SortedMap ivMap;  // sorted map of run*1e6+scan to IVInfo
00014    List table;
00015    IVInfo selectedIV;  // summary of IVscan info for a given run and scan number, for selected IV scan
00016    int sctView;
00017    java.util.regex.Pattern rPattern = java.util.regex.Pattern.compile("^Run Number\\s*:\\s*(\\d+)-(\\d+)");
00018    java.util.regex.Pattern dPattern = java.util.regex.Pattern.compile("^TEST_DATE\\s*:\\s*(\\d{2})/(\\d{2})/(\\d{4})");
00019    java.util.regex.Pattern fPattern = java.util.regex.Pattern.compile("CRATE\\d{2}CHAN\\d{2}_(\\d4)(\\d{2})(\\d{2})\\.txt");
00020 
00021    public IVTestInterface(int sctView) {
00022      conf = ConfigurationInterface.getInstance();
00023      ivMap = new TreeMap();
00024      this.sctView=sctView;
00025      }
00026    public void clear() {
00027      conf = ConfigurationInterface.getInstance();
00028      ivMap = new TreeMap();
00029      selectedIV=null;
00030      }
00031    public int getNoTests() {
00032      return ivMap.size();
00033      }
00034    public void refresh() {
00035 
00036      String ivdirectory = PreferencesInterface.getInstance().getPreference(PreferencesInterface.IV_DIRECTORY);
00037      if(ivdirectory.equals(PreferencesInterface.unDefinedString)) {
00038           javax.swing.JOptionPane.showMessageDialog(null,"You have not defined the IV data directory. Please do this first in the Options->DCS menu.");
00039           return;
00040           }
00041      java.io.File ivDir = new java.io.File(ivdirectory);
00042      if(!ivDir.exists()) {
00043         javax.swing.JOptionPane.showMessageDialog(null,"Your IV Data directory does not exist! Please correct it in the Options->DCS menu.");
00044         return;
00045         }
00046 
00047      Set moduleList = conf.getSortedVector(sctView);
00048 
00049      for (Iterator j = moduleList.iterator(); j.hasNext(); ) {
00050          String thisSN=(String)j.next();
00051          String ivHeader = conf.getSNInfo(thisSN,SNInfo.IV_FILE_HEADER);
00052          java.io.File[] ivfiles = ivDir.listFiles(new ivFileFilter(ivHeader));
00053          for(int i=0;i<ivfiles.length;i++) getFileInfo(thisSN,ivfiles[i]);
00054          }
00055     }
00056     public List getTableList() {
00057       table =  new ArrayList();
00058       for (Iterator i=ivMap.values().iterator(); i.hasNext(); ) {
00059          IVInfo ivInfo = (IVInfo)i.next();
00060          table.add(ivInfo);
00061          }
00062        return table;
00063        }
00064      public IVInfo getIVInfo(int index) {
00065        return (IVInfo)ivMap.values().toArray()[index];
00066        }
00067      public void getFileInfo(String serialNo,java.io.File filename) {
00068 
00069         java.util.regex.Matcher matcher;
00070         IVInfo ivInfo = null;
00071         boolean nextLineIsTime=false;
00072         List scanList = new ArrayList();
00073         boolean skipTest=false;
00074         try {
00075           java.io.BufferedReader in = new java.io.BufferedReader(new java.io.FileReader(filename));
00076           String line;
00077           while((line=in.readLine())!=null) {
00078 
00079              if(line.matches("^%NewTest")) {
00080                 if(ivInfo!=null && ivInfo.isValid()) updateIVMap(serialNo,ivInfo);
00081                 ivInfo = new IVInfo();
00082                 skipTest=false;
00083                 }
00084 
00085              if(skipTest) continue;
00086 
00087              if(line.startsWith("SERIAL NUMBER")) ivInfo.addModule(serialNo);
00088 
00089              matcher = rPattern.matcher(line);
00090              if(matcher.matches()) {
00091                    String scan = line.substring(matcher.start(2),matcher.end(2));
00092                    String run = line.substring(matcher.start(1),matcher.end(1));
00093                    Integer key = IVInfo.getIVKey(run,scan);
00094                    if(scanList.contains(key)) {
00095                      System.err.println("SctGUI::IVTestInterface - Duplicate run/scan number found in "+filename.getName());
00096                      ivInfo.inValidate();
00097                      skipTest=true;
00098                      continue;
00099                      }
00100                    scanList.add(key);
00101                    ivInfo.setRun(run);
00102                    ivInfo.setScan(scan);
00103            //        if(gotIVInfo(run,scan)) {
00104            //           skipTest=true;
00105            //           continue;
00106            //           }
00107                    }
00108              matcher = dPattern.matcher(line);
00109              if(matcher.matches()) ivInfo.setDate(line.substring(matcher.start(1),matcher.end(1)),line.substring(matcher.start(2),matcher.end(2)),line.substring(matcher.start(3),matcher.end(3)));
00110 
00111 // get voltage data for this run and scan no
00112              matcher = filenamePattern.matcher(line);
00113              if(matcher.matches()) {
00114                 SummaryReader.IVTest ivTest = new SummaryReader.IVTest();
00115                 java.io.File originalRawdataFile = new java.io.File(line.substring(matcher.start(1),matcher.end(1)));
00116                 java.io.File rawDataFile = new java.io.File(filename.getParent(),originalRawdataFile.getName());
00117                 ivTest.addIVData(rawDataFile);
00118                 ivInfo.setVData(ivTest.getVList());
00119                  }
00120 
00121 
00122              if(nextLineIsTime) ivInfo.setTime(line.replaceAll("\"",""));
00123 
00124              nextLineIsTime = line.matches("^#TIME$");
00125              }
00126           in.close();
00127           if(ivInfo!=null && ivInfo.isValid()) updateIVMap(serialNo,ivInfo);
00128 
00129          }catch(Exception e){System.err.println("SctGUI::IVTestInterface - Exception reading "+filename.getName()+" : "+e.toString());}
00130 
00131          }
00132    private void updateIVMap(String serialNo,IVInfo ivInfo) {
00133             Integer key = ivInfo.getIVKey();
00134             IVInfo oldIVInfo = (IVInfo)ivMap.get(key);
00135             if(oldIVInfo==null) ivMap.put(key,ivInfo);
00136             else oldIVInfo.addModule(serialNo);
00137             }
00138    public boolean gotIVInfo(String run, String scan) {
00139             Integer key = IVInfo.getIVKey(run,scan);
00140             return ivMap.containsKey(key);
00141             }
00142 
00143    public String getIVFileStem() {
00144        if(selectedIV==null) return null;
00145        return selectedIV.getFileStem();
00146        }     
00147 
00148    public String getDataString(Integer run,Integer scan, String module, String filestem) {
00149          java.util.regex.Matcher matcher;
00150          String ivHeader = conf.getSNInfo(module,SNInfo.IV_FILE_HEADER);
00151          StringBuffer dataString = new StringBuffer();
00152          String ivdirectory = PreferencesInterface.getInstance().getPreference(PreferencesInterface.IV_DIRECTORY);
00153          java.io.File dataFile;
00154          boolean skipTest=false;
00155          try {
00156          dataFile = new java.io.File(ivdirectory,ivHeader+filestem);
00157          java.io.BufferedReader in = new java.io.BufferedReader(new java.io.FileReader(dataFile));
00158          String line;
00159 
00160          while((line=in.readLine())!=null) {
00161 
00162              if(line.matches("^%NewTest")) {
00163                 dataString = new StringBuffer();
00164                 dataString.append(line+"\n");
00165                 skipTest=false;
00166                 continue;
00167                 }
00168 
00169              if(skipTest) continue;
00170 
00171              matcher = rPattern.matcher(line);
00172              if(matcher.matches()) {
00173                    String thisScan = line.substring(matcher.start(2),matcher.end(2));
00174                    String thisRun = line.substring(matcher.start(1),matcher.end(1));
00175                    if(!thisScan.equals(scan.toString()) || !thisRun.equals(run.toString())) {
00176                      skipTest=true;
00177                      continue;
00178                      }
00179                    }
00180 // get voltage data for this run and scan no
00181              matcher = filenamePattern.matcher(line);
00182              if(matcher.matches()) {
00183                 SummaryReader.IVTest ivTest = new SummaryReader.IVTest();
00184                 java.io.File originalRawdataFile = new java.io.File(line.substring(matcher.start(1),matcher.end(1)));
00185                 java.io.File rawDataFile = new java.io.File(ivdirectory,originalRawdataFile.getName());
00186                 ivTest.addIVData(rawDataFile);
00187                 List iList = ivTest.getIList();
00188                 List vList = ivTest.getVList();
00189                 for(int i=0;i<vList.size();i++) dataString.append("IVDATA:"+((Double)vList.get(i)).toString()+":"+((Double)iList.get(i)).toString()+"\n");
00190                 dataString.append("###END");
00191                 break;
00192                 }
00193               else dataString.append(line+"\n");
00194               }
00195             in.close();
00196             }catch(Exception e){System.err.println("SctGUI::IVTestInterface - "+e.toString()); return null;}
00197             if(skipTest) {
00198                System.err.println("SctGUI::IVTestInterface - no raw data for IVScan file "+dataFile.getName());
00199                return null;
00200                }
00201             return (dataString.length()==0) ? null : dataString.toString();
00202             }
00203 
00204           
00205             
00206        
00207 
00208 
00209    
00210        
00211 }
00212 
00213       
00214        
00215                 
00216            
00217 
00218    
00219 
00220    

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