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

BookKeeper.java

00001 
00005 package DisplayGUI;
00006 import Preferences.*;
00007 import javax.swing.JCheckBox;
00008 import Sct_CalibrationController.TestData;
00009 import is.*;
00010 import Sct.Serializable;
00011 import Sct.IS.*;
00012 import java.io.*;
00013 import java.util.*;
00014 
00015 public class BookKeeper implements displayParams, SCTInfo {
00016     private static BookKeeper instance = new BookKeeper();
00017     java.io.File topLevel;
00018     public JCheckBox bookkeepingEnabled = new JCheckBox("Enable Book-keeping");
00019     public JCheckBox runPromptEnabled = new JCheckBox("Prompt for comments on new Run");
00020     public JCheckBox testPromptEnabled = new JCheckBox("Prompt for comments on new Test");
00021     SortedMap testMap;
00022     BookKeeperPrompt prompt = null;
00023 
00024     PreferencesInterface prefs;
00025 
00026     private BookKeeper() {
00027         Refresh();
00028         testMap = new TreeMap();
00029         }
00030 
00031     public static BookKeeper getInstance() {
00032         return instance;
00033     }
00034 
00035     public void Refresh() {
00036         prefs = PreferencesInterface.getInstance();
00037 
00038         bookkeepingEnabled.setSelected(prefs.getPreference(PreferencesInterface.BOOKKEEPING).equals("TRUE"));
00039         bookkeepingEnabled.addActionListener(new java.awt.event.ActionListener() {
00040                  public void actionPerformed(java.awt.event.ActionEvent evt) {
00041                     String status = bookkeepingEnabled.isSelected() ? "TRUE" : "FALSE";
00042                     PreferencesInterface.getInstance().setPreference(PreferencesInterface.BOOKKEEPING,status);   
00043                     runPromptEnabled.setEnabled(bookkeepingEnabled.isSelected());  
00044                     testPromptEnabled.setEnabled(bookkeepingEnabled.isSelected());                   
00045                  }
00046              });
00047         runPromptEnabled.setSelected(prefs.getPreference(PreferencesInterface.RUN_PROMPT).equals("TRUE"));
00048         runPromptEnabled.addActionListener(new java.awt.event.ActionListener() {
00049                  public void actionPerformed(java.awt.event.ActionEvent evt) {
00050                     String status = runPromptEnabled.isSelected() ? "TRUE" : "FALSE";
00051                     PreferencesInterface.getInstance().setPreference(PreferencesInterface.RUN_PROMPT,status);                        
00052                  }
00053              });
00054         testPromptEnabled.setSelected(prefs.getPreference(PreferencesInterface.TEST_PROMPT).equals("TRUE"));
00055         testPromptEnabled.addActionListener(new java.awt.event.ActionListener() {
00056                  public void actionPerformed(java.awt.event.ActionEvent evt) {
00057                     String status = testPromptEnabled.isSelected() ? "TRUE" : "FALSE";
00058                     PreferencesInterface.getInstance().setPreference(PreferencesInterface.TEST_PROMPT,status);                        
00059                  }
00060              });
00061          }
00062      public boolean directoriesOK() {
00063 
00064         if(prefs.getPreference(PreferencesInterface.WEB_LOOKUP_DIR).equals(PreferencesInterface.unDefinedString)) {
00065            System.err.println("SctGUI::BookKeeper - ERROR - Bookkeeping directory is not defined in your Preferences!");
00066            return false;
00067            }
00068         java.io.File dir = new java.io.File(prefs.getPreference(PreferencesInterface.WEB_LOOKUP_DIR));
00069         if(!dir.exists()) {
00070            System.err.println("SctGUI::BookKeeper - ERROR - The bookkeeping directory defined in your Preferences does not exist!");
00071            return false;
00072            }
00073         topLevel = new java.io.File(dir,"bookkeeping");
00074         if(!topLevel.exists()) {
00075            if(!topLevel.mkdir()) {
00076                 javax.swing.JOptionPane.showMessageDialog(null,"Failed to write to bookkeeping directory.\nAre you sure that you have write access?");
00077                 topLevel=null;
00078                 return false;
00079                 }
00080            }
00081          return true;
00082         }
00083 
00084 
00085 
00086     public void addTest(String objectName) {
00087 
00088         if(!bookkeepingEnabled.isSelected()) return;
00089 
00090         if(!directoriesOK()) return;
00091 
00092         boolean testPrompt=true;
00093 
00094          try {
00095            TestData testData = new TestData(); 
00096            GuiComponents.System.ISInterface.getInstance().getRepository().getValue(objectName, testData); 
00097            String runNo = Integer.toString(testData.runNumber);
00098 
00099            java.io.File runDir = new java.io.File(topLevel,"RUN"+guiUtilities.DaveUtils.padString(runNo,6,'0'));
00100            if(!runDir.exists()) {
00101               testMap = new TreeMap();
00102               if(!runDir.mkdir()) {
00103                 System.err.println("SctGUI::BookKeeper - ERROR - Failed to create run directory");
00104                 return;
00105                 }
00106               if(runPromptEnabled.isSelected()) {
00107                 testPrompt=false;
00108                 File runFile = new File(runDir,"comments.txt");               
00109                 if(prompt==null) prompt = new BookKeeperPrompt();
00110                 prompt.showPrompt(runFile,runNo,null,null);
00111                 }
00112               }
00113 // write test file
00114             Integer scanNo = new Integer(testData.startScanNumber);
00115             if(!testMap.containsKey(scanNo) && testPromptEnabled.isSelected() && testPrompt) {
00116                 File testFile = new File(runDir,"TEST"+guiUtilities.DaveUtils.padString(scanNo.toString(),6,'0')+".txt");
00117                 if(prompt==null) prompt = new BookKeeperPrompt();
00118                 prompt.showPrompt(testFile,runNo,scanNo.toString(),testData.testName);
00119                }
00120             testMap.put(scanNo,getTestString(testData));
00121             writeTestFile(runNo,Integer.toString(testData.startScanNumber));
00122 
00123           }catch(Exception e) {
00124               System.err.println("SctGUI::BookKeeper - Cant access "+objectName+" - "+e.toString());
00125               }
00126           }
00127 
00128     public void showCommentPrompt(int run, int scan, String testName) {
00129 
00130         if(!directoriesOK()) return;
00131 
00132         String runNo = Integer.toString(run);
00133         String scanNo = (testName!=null) ? Integer.toString(scan) : null;
00134 
00135         File runDir = new File(topLevel,"RUN"+guiUtilities.DaveUtils.padString(runNo,6,'0'));
00136         File cFile = (scanNo==null) ? new File(runDir,"comments.txt") : new File(runDir,"TEST"+guiUtilities.DaveUtils.padString(scanNo,6,'0')+".txt");
00137         if(prompt==null) prompt = new BookKeeperPrompt();
00138         prompt.showPrompt(cFile,runNo,scanNo,testName);
00139         }
00140 
00141     public String getTestString(TestData testData) {
00142         StringBuffer s = new StringBuffer();
00143         s.append("RUN="+Integer.toString(testData.runNumber));
00144         s.append(";NAME="+testData.testName);
00145         s.append(";START="+Integer.toString(testData.startScanNumber));
00146         s.append(";NSCANS="+Integer.toString(testData.nScans));
00147         s.append(";DATE="+guiUtilities.DaveUtils.getTodaysDate());
00148         s.append(";STIME="+testData.startTime);
00149         s.append(";ETIME="+testData.endTime);
00150         s.append(";STATUS="+Integer.toString(testData.status));
00151         s.append(";NMODULES="+Integer.toString(testData.modules.length));
00152         return s.toString();
00153         }
00154 
00155     public void writeTestFile(String runNo, String scanNo) {
00156        try {
00157         File runDir = new File(topLevel,"RUN"+guiUtilities.DaveUtils.padString(runNo,6,'0'));
00158         File testIndex = new File(runDir,"index.txt");
00159         BufferedWriter out = new BufferedWriter(new FileWriter(testIndex));
00160 
00161         for (Iterator i=testMap.entrySet().iterator(); i.hasNext(); ) {
00162             Map.Entry e = (Map.Entry) i.next();
00163             out.write((String)e.getValue());
00164             out.newLine();
00165             }
00166         out.close();
00167         }catch(Exception e) {
00168            System.err.println("SctGUI::BookKeeper - FAILed to update test file - "+e.toString());
00169            }
00170         }
00171 
00172         
00173 
00174 }
00175          

Generated on Fri Sep 16 18:05:53 2005 for SCT DAQ/DCS Software - Java by doxygen 1.3.5