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

ExitPrompt.java

00001 /*
00002  * ExitPrompt.java
00003  *
00004  */
00005 
00006 package DisplayGUI;
00007 import java.util.*;
00008 import GuiComponents.System.*;
00009 
00014 public class ExitPrompt extends javax.swing.JDialog implements displayParams {
00015     private guiTableAdapter runTable;
00016     private javax.swing.JTable table;
00017     private javax.swing.ButtonGroup buttonGroup1;
00018     private javax.swing.JButton cancelButton;
00019     private javax.swing.JCheckBox deleteAllRuns;
00020     private javax.swing.JCheckBox deleteSelectedRuns;
00021     private javax.swing.JLabel jLabel1,jLabel2;
00022     private javax.swing.JScrollPane jScrollPane1;
00023     private javax.swing.JButton okButton;
00024     private Hashtable runNumberHash;
00025     private boolean confirmExit=false;
00026 
00027     
00029     public ExitPrompt(java.awt.Frame parent, boolean modal) {
00030         super(parent, modal);
00031         runNumberHash = new Hashtable();
00032         initComponents();
00033  //       checkArchiveService();
00034         fillTable();
00035 //        this.setSize(500, 500);
00036     }
00037     
00038 //    public String getText() {
00039 //        return taInput.getText();
00040 //    }
00041     public int getNoRuns() {
00042          return runTable.recordCount;
00043          }
00044     public boolean okToExit() {
00045         if(!confirmExit) return false;
00046         deleteDataFiles();
00047         return true;
00048         }
00049     
00050 
00051     private void initComponents() {
00052 
00053         getContentPane().setBackground(backgroundColor);
00054 
00055         runTable = new guiTableAdapter();
00056         table = new javax.swing.JTable(runTable);
00057         jScrollPane1 = new javax.swing.JScrollPane(table);
00058         table.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
00059 
00060         java.awt.GridBagConstraints gridBagConstraints;
00061 
00062 //        buttonGroup1 = new javax.swing.ButtonGroup();
00063         jLabel1 = new javax.swing.JLabel();
00064         jLabel2 = new javax.swing.JLabel();
00065         jScrollPane1 = new javax.swing.JScrollPane(table);
00066         deleteSelectedRuns = new javax.swing.JCheckBox();
00067         deleteAllRuns = new javax.swing.JCheckBox();
00068         okButton = new javax.swing.JButton();
00069         cancelButton = new javax.swing.JButton();
00070 
00071         getContentPane().setLayout(new java.awt.GridBagLayout());
00072 
00073         addWindowListener(new java.awt.event.WindowAdapter() {
00074             public void windowClosing(java.awt.event.WindowEvent evt) {
00075                 closeDialog(evt);
00076             }
00077         });
00078 
00079         jLabel1.setText("Quit SctGUI?");
00080         jLabel1.setFont(displayTitleFont);
00081         jLabel1.setForeground(darkBlueColor);
00082         gridBagConstraints = new java.awt.GridBagConstraints();
00083         gridBagConstraints.gridx = 0;
00084         gridBagConstraints.gridy = 0;
00085         gridBagConstraints.gridwidth = 2;
00086         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00087         gridBagConstraints.weighty = 0.1;
00088         getContentPane().add(jLabel1, gridBagConstraints);
00089 
00090         jLabel2.setText("Delete data files on exit?");
00091         jLabel2.setFont(displayScaleFont);
00092         gridBagConstraints = new java.awt.GridBagConstraints();
00093         gridBagConstraints.gridx = 0;
00094         gridBagConstraints.gridy = 1;
00095         gridBagConstraints.gridwidth = 2;
00096         gridBagConstraints.insets = new java.awt.Insets(5, 5, 0, 5);
00097         gridBagConstraints.weighty = 0.1;
00098         gridBagConstraints.anchor = java.awt.GridBagConstraints.SOUTHWEST;
00099         getContentPane().add(jLabel2, gridBagConstraints);
00100 
00101         jScrollPane1.setBackground(new java.awt.Color(255, 255, 255));
00102         table.setBackground(new java.awt.Color(255, 255, 255));
00103         jScrollPane1.setBorder(new javax.swing.border.BevelBorder(javax.swing.border.BevelBorder.LOWERED));
00104         jScrollPane1.setMaximumSize(new java.awt.Dimension(300, 300));
00105         jScrollPane1.setMinimumSize(new java.awt.Dimension(50, 50));
00106         jScrollPane1.setPreferredSize(new java.awt.Dimension(200, 100));
00107         gridBagConstraints = new java.awt.GridBagConstraints();
00108         gridBagConstraints.gridx = 0;
00109         gridBagConstraints.gridy = 2;
00110         gridBagConstraints.gridwidth = 2;
00111         gridBagConstraints.insets = new java.awt.Insets(0, 5, 5, 5);
00112         gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
00113         gridBagConstraints.weighty = 0.6;
00114         getContentPane().add(jScrollPane1, gridBagConstraints);
00115 
00116         deleteSelectedRuns.setText("Delete Selected Runs");
00117         deleteSelectedRuns.setFont(displayScaleFont);
00118         deleteSelectedRuns.setBackground(backgroundColor);
00119         deleteSelectedRuns.addActionListener(new java.awt.event.ActionListener() {
00120             public void actionPerformed(java.awt.event.ActionEvent evt) {
00121                 if(deleteSelectedRuns.isSelected()) deleteAllRuns.setSelected(false);
00122             }
00123         });
00124 
00125         gridBagConstraints = new java.awt.GridBagConstraints();
00126         gridBagConstraints.gridx = 0;
00127         gridBagConstraints.gridy = 3;
00128         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00129         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00130         gridBagConstraints.weightx = 0.5;
00131         gridBagConstraints.weighty = 0.1;
00132         getContentPane().add(deleteSelectedRuns, gridBagConstraints);
00133 
00134         deleteAllRuns.setSelected(true);
00135         deleteAllRuns.setText("Delete all Runs");
00136         deleteAllRuns.setFont(displayScaleFont);
00137         deleteAllRuns.setBackground(backgroundColor);
00138         deleteAllRuns.addActionListener(new java.awt.event.ActionListener() {
00139             public void actionPerformed(java.awt.event.ActionEvent evt) {
00140                 if(deleteAllRuns.isSelected()) deleteSelectedRuns.setSelected(false);
00141             }
00142         });
00143         gridBagConstraints = new java.awt.GridBagConstraints();
00144         gridBagConstraints.gridx = 1;
00145         gridBagConstraints.gridy = 3;
00146         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00147         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00148         gridBagConstraints.weightx = 0.5;
00149         gridBagConstraints.weighty = 0.1;
00150         getContentPane().add(deleteAllRuns, gridBagConstraints);
00151 
00152 //        javax.swing.ButtonGroup group = new javax.swing.ButtonGroup();
00153 //        group.add(deleteSelectedRuns);
00154 //        group.add(deleteAllRuns);
00155 
00156         okButton.setText("Ok");
00157         okButton.addActionListener(new java.awt.event.ActionListener() {
00158             public void actionPerformed(java.awt.event.ActionEvent evt) {
00159                 okButtonActionPerformed(evt);
00160             }
00161         });
00162         gridBagConstraints = new java.awt.GridBagConstraints();
00163         gridBagConstraints.gridx = 0;
00164         gridBagConstraints.gridy = 4;
00165         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00166         gridBagConstraints.anchor = java.awt.GridBagConstraints.WEST;
00167         getContentPane().add(okButton, gridBagConstraints);
00168         okButton.requestFocusInWindow();
00169 
00170         cancelButton.setText("Cancel");
00171         cancelButton.addActionListener(new java.awt.event.ActionListener() {
00172             public void actionPerformed(java.awt.event.ActionEvent evt) {
00173                 cancelButtonActionPerformed(evt);
00174             }
00175         });
00176         gridBagConstraints = new java.awt.GridBagConstraints();
00177         gridBagConstraints.gridx = 1;
00178         gridBagConstraints.gridy = 4;
00179         gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
00180         gridBagConstraints.anchor = java.awt.GridBagConstraints.EAST;
00181         gridBagConstraints.weighty = 0.1;
00182         getContentPane().add(cancelButton, gridBagConstraints);
00183 
00184         deleteAllRuns.setEnabled(true);
00185         deleteSelectedRuns.setEnabled(true);
00186 
00187         pack();
00188     }
00189 
00190 
00191     private void okButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bOKActionPerformed
00192         confirmExit=true;
00193         closeDialog(null);
00194     }//GEN-LAST:event_bOKActionPerformed
00195 
00196     private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bOKActionPerformed
00197         closeDialog(null);
00198     }//GEN-LAST:event_bOKActionPerformed
00199     
00201     private void closeDialog(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_closeDialog
00202         setVisible(false);
00203         dispose();
00204     }//GEN-LAST:event_closeDialog
00205 
00206   private void fillTable() {
00207        try {
00208           Vector runVector = new Vector();
00209           java.util.regex.Pattern fpattern1 = java.util.regex.Pattern.compile(".*SctData::\\w*\\.(\\d+)\\.\\d+\\.(\\d{14}|SCTTestAPI_PseudoModule)");
00210           String dataDir;
00211           if((dataDir = System.getProperty("Sct.Scratch.Dir", null))!=null) {
00212             java.io.File scratchDir = new java.io.File(dataDir);
00213             if(scratchDir.exists()) {
00214               java.io.File[] isFiles = scratchDir.listFiles(new isFileFilter(".*SctData::.*"));
00215               int deletions=0, failedDeletions=0;
00216               for(int i=0;i<isFiles.length;i++) {
00217                 String filename = isFiles[i].getName();
00218                 java.util.regex.Matcher matcher = fpattern1.matcher(filename); 
00219                 if(matcher.matches()) {
00220                     Integer runNo = Integer.valueOf(filename.substring(matcher.start(1),matcher.end(1)));
00221                     if(!runNumberHash.containsKey(runNo)) {
00222                        runNumberHash.put(runNo,new Integer(1));
00223                        runVector.addElement(runNo);
00224                        }
00225                     else {
00226                        int runCount = ((Integer)runNumberHash.get(runNo)).intValue();
00227                        runCount++;
00228                        runNumberHash.put(runNo,new Integer(runCount));
00229                        }
00230                   }
00231 //                 else {System.out.println(filename+" did not match ...");}
00232 //                if(isFiles[i].delete()) deletions++;
00233 //                else failedDeletions++;
00234                 }
00235               Collections.sort(runVector);
00236               Vector tableList = new Vector();
00237               Vector tableRow = new Vector();
00238               tableRow.addElement("Run Number");
00239               tableRow.addElement("# data files");
00240               tableList.addElement(tableRow);
00241               for(int i=0;i<runVector.size();i++) {
00242                  tableRow = new Vector();
00243                  Integer thisRunNo = (Integer)runVector.elementAt(i);
00244                  tableRow.addElement(thisRunNo);
00245                  tableRow.addElement((Integer)runNumberHash.get(thisRunNo));
00246                  tableList.addElement(tableRow);
00247                  }
00248               runTable.reTable(tableList);
00249             }       
00250           }
00251         }catch(Exception ioE){System.err.println("Exception deleting IS files: "+ioE.toString());}
00252    }
00253 
00254   private void deleteDataFiles() {
00255        try {
00256           String dataDir;
00257           if((dataDir = System.getProperty("Sct.Scratch.Dir", null))!=null) {
00258             java.io.File scratchDir = new java.io.File(dataDir);
00259             if(scratchDir.exists()) {
00260               String fileRegex = getFileRegex();
00261               if(fileRegex==null) return;
00262               java.io.File[] isFiles = scratchDir.listFiles(new isFileFilter(fileRegex));
00263               if(isFiles.length==0) return;
00264               System.out.println("Deleting "+isFiles.length+" data files ...");
00265               int deletions=0, failedDeletions=0;
00266               for(int i=0;i<isFiles.length;i++) {
00267                 if(isFiles[i].delete()) deletions++;
00268                 else failedDeletions++;
00269                 }
00270               System.out.println(deletions+ " files confirmed deleted.");
00271               if(failedDeletions>0) System.out.println("*** "+failedDeletions + " files were not deleted!");
00272               }   
00273            }
00274        }catch(Exception ioE){System.err.println("Exception deleting IS files: "+ioE.toString());}   
00275      }
00276 
00277   private String getFileRegex() {
00278       if(deleteAllRuns.isSelected()) return ".*SctData::.*";
00279       else if(deleteSelectedRuns.isSelected()) {
00280         StringBuffer runString = new StringBuffer(".*SctData::\\w*\\.");
00281         javax.swing.ListSelectionModel rowSM = table.getSelectionModel();
00282         int selectCount=0;
00283         for(int i=0;i<runTable.getRowCount();i++) {
00284           if(!rowSM.isSelectedIndex(i)) continue;   
00285           selectCount++;       
00286           String runNo = ((Integer)runTable.getValueAt(i,0)).toString();
00287           if(i>0) runString.append("|");
00288           runString.append(runNo);
00289           }
00290         if(selectCount==0) return null;
00291         runString.append(".*");
00292         return runString.toString();
00293         }
00294       return null;
00295       }
00296 
00297   private void checkArchiveService() {
00298         try {
00299         ArchivingServiceI.ArchivingServiceInterface a = SystemInterface.getInstance().getArchivingService();
00300         AnalysisServiceI.AnalysisServiceInterface b = SystemInterface.getInstance().getAnalysisService();
00301 
00302         if(a!=null && (a.busy()>0 || a.queueLength()>0)) {
00303            System.out.println("SctGUI: Archiving Service busy or not finished - will not permit file deletions");
00304            deleteAllRuns.setSelected(false);
00305            deleteSelectedRuns.setSelected(false);
00306            deleteAllRuns.setEnabled(false);
00307            deleteSelectedRuns.setEnabled(false);
00308            return;
00309            }
00310         if(b!=null && (b.busy()>0 || b.queueLength()>0)) {
00311            System.out.println("SctGUI: Analysis Service busy or not finished - will not permit file deletions");
00312            deleteAllRuns.setSelected(false);
00313            deleteSelectedRuns.setSelected(false);
00314            deleteAllRuns.setEnabled(false);
00315            deleteSelectedRuns.setEnabled(false);
00316            return;
00317            }
00318          }catch(Exception e){System.err.println("SctGUI: communication failure with Archiving or Analysis Service - "+e.toString());}
00319          }
00320 
00321 
00322     
00323     
00324 }

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