00001
00002
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
00034 fillTable();
00035
00036 }
00037
00038
00039
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
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
00153
00154
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) {
00192 confirmExit=true;
00193 closeDialog(null);
00194 }
00195
00196 private void cancelButtonActionPerformed(java.awt.event.ActionEvent evt) {
00197 closeDialog(null);
00198 }
00199
00201 private void closeDialog(java.awt.event.WindowEvent evt) {
00202 setVisible(false);
00203 dispose();
00204 }
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
00232
00233
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 }