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

IVTest.java

00001 package SummaryReader;
00002 /*
00003  * @author robinson
00004  */
00005 
00006 public class IVTest {
00007 
00008       java.util.List comments, vValues, iValues;
00009       TestInfo testInfo;
00010       DAQInfo daqInfo;
00011       DCSInfo dcsInfo;
00012       String serialNo;
00013       java.text.DecimalFormat nf = new java.text.DecimalFormat("#.###");
00014       java.util.regex.Pattern vstartPattern = java.util.regex.Pattern.compile("^Vstart\\s*:\\s*([-]?\\d+\\.\\d+).*"); 
00015       java.util.regex.Pattern vstopPattern = java.util.regex.Pattern.compile("^Vstop\\s*:\\s*([-]?\\d+\\.\\d+).*"); 
00016       java.util.regex.Pattern vstepPattern = java.util.regex.Pattern.compile("^Vstep\\s*:\\s*([-]?\\d+\\.\\d+).*"); 
00017       boolean DEBUG=false;
00018 
00019       public IVTest() {
00020         comments = new java.util.ArrayList();
00021         vValues = new java.util.ArrayList();
00022         iValues = new java.util.ArrayList();
00023     }
00024 
00025     public java.util.List getVList() {
00026        return new java.util.ArrayList(vValues);
00027        }
00028     public java.util.List getIList() {
00029        return new java.util.ArrayList(iValues);
00030        }
00031 
00032     public void add(TestInfo testInfo) {
00033         this.testInfo=testInfo;
00034        }
00035     public void add(DAQInfo daqInfo) {
00036         this.daqInfo=daqInfo;
00037        }
00038     public void add(DCSInfo dcsInfo) {
00039         this.dcsInfo=dcsInfo;
00040         }
00041     public DCSInfo getDCSInfo() {
00042         return dcsInfo;
00043        }
00044     public TestInfo getTestInfo() {
00045         return testInfo;
00046        }
00047     public DAQInfo getDAQInfo() {
00048         return daqInfo;
00049         }
00050     public void setSerialNo(String serialNo) {
00051         this.serialNo = serialNo;
00052         }
00053     public String getSerialNo() {
00054          return serialNo;
00055          }
00056     public void addIVData(java.io.File rawDataFile) {
00057         String line;
00058         boolean readingIVData=false;
00059         java.util.regex.Matcher matcher;
00060         Double vstart=null, vstop=null, vstep=null;
00061         try {
00062         java.io.BufferedReader in = new java.io.BufferedReader(new java.io.FileReader(rawDataFile));
00063         while((line=in.readLine())!=null) {
00064            if(DEBUG) System.out.println("line: "+line);
00065            if(line.matches("^#V\\s*I.*")) {
00066              if(DEBUG) System.out.println("Start reading IV data...");
00067              readingIVData=true;
00068              continue;
00069              }
00070            if(line.matches("^#V\\s*microA.*")) {
00071              if(DEBUG) System.out.println("Stop reading IV data...");
00072              readingIVData=false;
00073              continue;
00074              }
00075            if(readingIVData) {
00076              double idata = Double.parseDouble(line.split("\\s+")[1]);
00077              if(DEBUG) System.out.println("Current = "+idata);             
00078              iValues.add(Double.valueOf(nf.format(idata)));
00079              continue;
00080              }
00081            matcher = vstartPattern.matcher(line);
00082            if(matcher.matches()) {
00083                double data = Double.parseDouble(line.substring(matcher.start(1),matcher.end(1)));
00084                vstart = Double.valueOf(nf.format(data));
00085                if(DEBUG) System.out.println("Vstart="+vstart);
00086                continue;
00087                }
00088            matcher = vstopPattern.matcher(line);
00089            if(matcher.matches()) {
00090                double data = Double.parseDouble(line.substring(matcher.start(1),matcher.end(1)));
00091                vstop = Double.valueOf(nf.format(data));
00092                if(DEBUG) System.out.println("Vstop="+vstop);
00093                continue;
00094                }
00095            matcher = vstepPattern.matcher(line);
00096            if(matcher.matches()) {
00097                double data = Double.parseDouble(line.substring(matcher.start(1),matcher.end(1)));
00098                vstep = Double.valueOf(nf.format(data));
00099                if(DEBUG) System.out.println("Vstep="+vstep);
00100                continue;
00101                }
00102            }
00103         in.close();
00104         if(vstart==null || vstop==null || vstep==null) {
00105            System.err.println("SctGUI::SummaryReader::IVTest - Voltage information not found in raw data file "+rawDataFile.getName());
00106            return;
00107            }
00108         int nsteps = (int)((vstop.doubleValue()-vstart.doubleValue())/vstep.doubleValue()) +1;
00109         if(DEBUG) System.out.println("nsteps="+nsteps);
00110         for(int i=0;i<nsteps;i++) {
00111               Double data = new Double(vstart.doubleValue() +i*vstep.doubleValue());
00112               data = Double.valueOf(nf.format(data.doubleValue()));
00113               if(DEBUG) System.out.println("V["+i+"]="+data.toString());
00114               vValues.add(data);
00115               }
00116         if(vValues.size()!=iValues.size()) {
00117          System.err.println("SctGUI::SummaryReader::IVTest - Noncompatible I/V information in raw data file "+rawDataFile.getName());
00118          vValues = new java.util.ArrayList();
00119          iValues = new java.util.ArrayList();
00120          }
00121         
00122         }catch(Exception e) {System.err.println("SctGUI::SummaryReader::IVTest - Exception reading in raw data file "+rawDataFile.getName()+" : "+e.toString());}
00123               
00124           
00125            
00126         }
00127 
00128 
00129     public void addComment(String comment) {
00130         comments.add(comment);
00131         }
00132     public String getComment(int commentIndex) {
00133         return (String)comments.get(commentIndex);
00134         }
00135     public String getCommentsSummary() {
00136        StringBuffer table = new StringBuffer("<h3>Comments</h3>\n");
00137        if(comments.size()==0) {
00138            table.append("None");
00139            return table.toString();
00140            }
00141        for(int i=0;i<comments.size();i++) table.append((String)comments.get(i)+"\n");
00142        return table.toString();
00143        }
00144     public Double getCurrentData(int stepIndex) {
00145        return (Double)iValues.get(stepIndex);
00146        }
00147         
00148 
00149 
00150 }

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