00001 package GuiComponents.SctApi;
00002
00003 import javax.swing.*;
00004 import javax.swing.table.*;
00005
00006 import java.awt.*;
00007 import java.awt.event.*;
00008 import java.io.*;
00009 import javax.swing.table.AbstractTableModel;
00010 import javax.swing.table.TableCellRenderer;
00011 import javax.swing.table.TableModel;
00012 import javax.swing.table.TableColumn;
00013 import javax.swing.table.JTableHeader;
00014 import java.lang.Math;
00015 import java.lang.Object;
00016
00017 import GuiComponents.System.SystemInterface;
00018
00019 import java.awt.Component;
00020 import java.awt.Color;
00021 import javax.swing.JTable;
00022 import javax.swing.table.DefaultTableCellRenderer;
00023
00024
00025
00026 public class HarnessTestView extends JPanel {
00027 Sct_SctApi.SctApi api;
00028
00029 SystemInterface sys;
00030 sctConf.Configuration conf;
00031
00032 int maxHarnessOnROD = 8;
00033 int maxDoglegNumberInHarness = 6;
00034
00035 short ps_state = 2;
00036 String passedFailed;
00037 String dataFile;
00038 String sct_daq_root = java.lang.System.getProperty("$SCT_DAQ_ROOT","/atlasdata/nfsroot73/home/daquser/Release3_branch/SctRodDaq");
00039 org.omg.CORBA.IntHolder murID;
00040
00041 int m_partition = 0;
00042 int m_crate = 0;
00043 int m_rod = 0;
00044 int m_select = -1;
00045
00046 int [] m_harnessList;
00047 int m_harnessMax = 0;
00048 int m_rxThreshold = 128;
00049 int m_txCurrent = 160;
00050 short [][] m_daq_scanResults;
00051 float [][] m_dcs_scanResults;
00052 String[][] m_daq_scanResultsTable;
00053 String[][] m_dcs_scanResultsTable;
00054 String[][][] m_summary_scanResults;
00055
00056
00057
00058
00059
00060
00061 String [] psChannelParametersList = {"LVchStat", "LVch_Icc", "LVch_Idd", "LVchVCSI", "LVchPINI","MOch_Tm0",
00062 "MOch_Tm1", "HVchCurr"};
00063
00064
00065
00066
00067
00068
00069 String [] psChannelParametersList_short = {"Status", "Icc", "Idd", "VCSI", "PINI", "Tm0", "Tm1", "HVCu"};
00070
00071
00072 float psChannelParametersLimits[][] =
00073 {
00074 {(float)-999999, (float)999999},
00075 {(float)55, (float)115},
00076 {(float)175, (float)245},
00077 {(float)1.80,(float)2.40 },
00078 {(float)0.20, (float)0.60},
00079 {(float)20, (float)30},
00080 {(float)5, (float)15},
00081 {(float)500, (float)570},
00082 };
00083
00084
00085
00086
00087
00088
00089
00090
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106 org.omg.CORBA.IntHolder ps_partition;
00107 org.omg.CORBA.IntHolder ps_crate;
00108 org.omg.CORBA.IntHolder [] [] ps_channel;
00109
00110 public HarnessTestView(Sct_SctApi.SctApi a)
00111 {
00112 api = a;
00113
00114 murID = new org.omg.CORBA.IntHolder();
00115 ps_partition = new org.omg.CORBA.IntHolder();
00116 ps_crate = new org.omg.CORBA.IntHolder();
00117 ps_channel = new org.omg.CORBA.IntHolder[8][maxDoglegNumberInHarness];
00118 for(int i=0; i<8; i++){
00119 for(int j=0;j<maxDoglegNumberInHarness;j++){
00120 ps_channel[i][j]= new org.omg.CORBA.IntHolder();
00121 }
00122 }
00123
00124 m_daq_scanResults = new short[0][0];
00125 m_daq_scanResultsTable = new String[25][12];
00126
00127 m_dcs_scanResults = new float[psChannelParametersList.length][maxDoglegNumberInHarness];
00128
00129 m_dcs_scanResultsTable = new String[psChannelParametersList.length+1][maxDoglegNumberInHarness];
00130
00131 for(int row=0; row<25; row++)
00132 for(int column=0; column<12; column++)
00133 m_daq_scanResultsTable[row][column] = "?";
00134
00135 sys = SystemInterface.getInstance();
00136 conf = sys.getConfigurationService();
00137
00138
00139
00140
00141 m_harnessMax=0;
00142 m_harnessList = new int[8];
00143
00144 if(conf!=null){
00145 for(int harness=0; harness<maxHarnessOnROD; harness++){
00146 try{
00147 System.out.println("part " + m_partition + " crate " + m_crate + " rod " + m_rod + " harness " + harness);
00148 conf.getMapRODMUR(m_partition, m_crate, m_rod, harness, murID);
00149 System.out.println(" harness " + harness + " MUR " + murID.value);
00150
00151 m_harnessList[m_harnessMax] = harness;
00152 m_harnessMax++;
00153
00154 for(int module=1; module<=6; module++){
00155 conf.translateToPowerSupply(murID.value, module, ps_partition, ps_crate, ps_channel[m_harnessMax-1][module-1]);
00156 System.out.println("Map for harness "+harness +" chan " + module + "ps chan " + ps_channel[m_harnessMax-1][module-1].value);
00157 }
00158 }
00159 catch(sctConf.ConfigurationException e) {
00160 System.out.println("No MUR at harness " + harness);
00161 }
00162 }
00163 }else{
00164 javax.swing.JOptionPane.showMessageDialog(null, "Unable to connect to the configuration service");
00165 }
00166
00167 passedFailed = "?";
00168 initComponents();
00169
00170
00171 dataFile = fileNameValue.getText();
00172 File dataFile_withpath = new File(dataFile);
00173 try{BufferedWriter out = new BufferedWriter(new FileWriter(dataFile, false)); out.close();}
00174 catch(IOException e) {javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File? " + dataFile_withpath.getPath());}
00175
00176
00177
00178 modifyComponents();
00179 }
00180
00181
00182 public HarnessTestView()
00183 {
00184 initComponents();
00185 modifyComponents();
00186 }
00187
00188 public void modifyComponents() {
00189
00190 }
00191
00197 private void initComponents()
00198 {
00199 topPanel = new javax.swing.JPanel();
00200 panelForLabels = new javax.swing.JPanel();
00201 partitionLabel = new javax.swing.JLabel();
00202 crateLabel = new javax.swing.JLabel();
00203 rodLabel = new javax.swing.JLabel();
00204 harnessMaxLabel = new javax.swing.JLabel();
00205 rxLabel = new javax.swing.JLabel();
00206 txLabel = new javax.swing.JLabel();
00207 fileNameLabel = new javax.swing.JLabel();
00208
00209 partitionValue = new javax.swing.JTextField();
00210 crateValue = new javax.swing.JTextField();
00211 rodValue = new javax.swing.JTextField();
00212 harnessMaxValue = new javax.swing.JTextField();
00213 rxThValue = new javax.swing.JTextField();
00214 txCurrentValue = new javax.swing.JTextField();
00215 fileNameValue = new javax.swing.JTextField();
00216 panelForClose = new javax.swing.JPanel();
00217 closeButton = new javax.swing.JButton();
00218
00219 jTabbedPaneTest = new javax.swing.JTabbedPane();
00220 jTabbedPaneDAQData = new javax.swing.JTabbedPane();
00221 jTabbedPaneDCSData = new javax.swing.JTabbedPane();
00222
00223 setLayout(new java.awt.BorderLayout());
00224
00225 add(panelForClose, java.awt.BorderLayout.SOUTH);
00226 panelForClose.setOpaque(false);
00227 panelForClose.add(closeButton);
00228 closeButton.setText("Close");
00229 closeButton.addActionListener(
00230 new java.awt.event.ActionListener()
00231 {
00232 public void actionPerformed(java.awt.event.ActionEvent evt)
00233 {
00234 closeButtonPerformed(evt);
00235 }
00236 });
00237
00238 add(topPanel, java.awt.BorderLayout.NORTH);
00239 topPanel.setLayout(new javax.swing.BoxLayout(topPanel, javax.swing.BoxLayout.Y_AXIS));
00240 topPanel.add(panelForLabels);
00241 panelForLabels.setLayout(new javax.swing.BoxLayout(panelForLabels, javax.swing.BoxLayout.X_AXIS));
00242
00243 panelForLabels.add(partitionLabel);
00244 partitionLabel.setText(" Partition ");
00245 panelForLabels.add(partitionValue);
00246 partitionValue.setText(Integer.toString(m_partition));
00247 partitionValue.addActionListener
00248 (new java.awt.event.ActionListener(){
00249 public void actionPerformed(java.awt.event.ActionEvent evt) {
00250 m_partition = Integer.parseInt(partitionValue.getText());
00251 }
00252 });
00253
00254 panelForLabels.add(crateLabel);
00255 crateLabel.setText(" Crate ");
00256 panelForLabels.add(crateValue);
00257 crateValue.setText(Integer.toString(m_crate));
00258 crateValue.addActionListener
00259 (new java.awt.event.ActionListener(){
00260 public void actionPerformed(java.awt.event.ActionEvent evt) {
00261 m_crate = Integer.parseInt(crateValue.getText());
00262 }
00263 });
00264
00265 panelForLabels.add(rodLabel);
00266 rodLabel.setText(" ROD ");
00267 panelForLabels.add(rodValue);
00268 rodValue.setText(Integer.toString(m_rod));
00269 rodValue.addActionListener
00270 (new java.awt.event.ActionListener(){
00271 public void actionPerformed(java.awt.event.ActionEvent evt) {
00272 m_rod = Integer.parseInt(rodValue.getText());
00273 }
00274 });
00275
00276 panelForLabels.add(harnessMaxLabel);
00277 harnessMaxLabel.setText(" HarnessMax ");
00278 panelForLabels.add(harnessMaxValue);
00279 harnessMaxValue.setText(Integer.toString(m_harnessMax));
00280 harnessMaxValue.addActionListener
00281 (new java.awt.event.ActionListener(){
00282 public void actionPerformed(java.awt.event.ActionEvent evt) {
00283 m_harnessMax = Integer.parseInt(harnessMaxValue.getText());
00284 createTabs(m_harnessMax);
00285 }
00286 });
00287
00288 panelForLabels.add(rxLabel);
00289 rxLabel.setText(" Rx Threshold ");
00290 panelForLabels.add(rxThValue);
00291
00292 rxThValue.setText("?");
00293 rxThValue.addActionListener
00294 (new java.awt.event.ActionListener(){
00295 public void actionPerformed(java.awt.event.ActionEvent evt) {
00296 if(api!=null){
00297 m_rxThreshold = Integer.parseInt(rxThValue.getText());
00298 for(int harness = 0; harness < m_harnessMax; harness++){
00299 for(int channel = (m_harnessList[harness]*6); channel < ((m_harnessList[harness]+1)*6); channel++){
00300 api.modifyBOCParam(m_partition,m_crate,m_rod,channel,50,m_rxThreshold);
00301 }
00302 }
00303
00304 }
00305 }
00306 });
00307
00308 panelForLabels.add(txLabel);
00309 txLabel.setText(" Tx Current ");
00310 panelForLabels.add(txCurrentValue);
00311
00312 txCurrentValue.setText("?");
00313 txCurrentValue.addActionListener
00314 (new java.awt.event.ActionListener(){
00315 public void actionPerformed(java.awt.event.ActionEvent evt) {
00316 m_txCurrent = Integer.parseInt(txCurrentValue.getText());
00317 if(api!=null){
00318 for(int harness = 0; harness < m_harnessMax; harness++){
00319 for(int channel = (m_harnessList[harness]*6); channel < ((m_harnessList[harness]+1)*6); channel++){
00320 api.modifyBOCParam(m_partition,m_crate,m_rod,channel,53,m_txCurrent);
00321 }
00322 }
00323 }
00324 }
00325 });
00326
00327 panelForLabels.add(fileNameLabel);
00328 fileNameLabel.setText(" FileName ");
00329 panelForLabels.add(fileNameValue);
00330 java.util.Date date = new java.util.Date();
00331 String timeStampForDataFile = date.getDate() + "_" + date.getMonth() + "_" + date.getYear() + "_"+ date.getHours()+ "." + date.getMinutes() + "." + date.getSeconds();
00332 String this_dataFile = sct_daq_root + "/saved_data/" + "harnessData_" + timeStampForDataFile + ".txt";
00333 fileNameValue.setText(this_dataFile);
00334
00335
00336 createTabs(m_harnessMax);
00337 }
00338
00339 private void createTabs(int harnessMax)
00340 {
00341
00342 m_summary_scanResults = new String[m_harnessMax][6][6];
00343 for(int harness=0; harness<m_harnessMax; harness++){
00344 for(int test=0; test<6; test++){
00345 for(int module=0; module<6; module++){
00346 m_summary_scanResults[harness][test][module] = "?";
00347 }
00348 }
00349 }
00350
00351 add(jTabbedPaneTest, java.awt.BorderLayout.CENTER);
00352
00353 jTabbedPaneTest.removeAll();
00354
00355
00356
00357 summaryScrollPanelForTable = new javax.swing.JScrollPane[m_harnessMax];
00358 summaryHarnessTable = new javax.swing.JTable[m_harnessMax];
00359 summaryHarnessTableModels = new HarnessTestsSummaryTableModel[m_harnessMax];
00360
00361 summaryHarnessPanel = new javax.swing.JPanel();
00362 jTabbedPaneTest.addTab("Test", summaryHarnessPanel);
00363 summaryHarnessPanel.setLayout(new javax.swing.BoxLayout(summaryHarnessPanel, javax.swing.BoxLayout.Y_AXIS));
00364 summaryHarnessPanel.setPreferredSize(new Dimension(150,180));
00365 performHarnessTestButton = new javax.swing.JButton();
00366 summaryHarnessPanel.add(performHarnessTestButton, java.awt.BorderLayout.CENTER);
00367 performHarnessTestButton.setText("Perform Harness Test");
00368 performHarnessTestButton.addActionListener(
00369 new java.awt.event.ActionListener() {
00370 public void actionPerformed(java.awt.event.ActionEvent evt) {
00371 doTestsForAllHarnesses();
00372 }
00373 });
00374
00375 for(int index=0; index<m_harnessMax; index++){
00376 summaryScrollPanelForTable[index] = new javax.swing.JScrollPane();
00377 summaryHarnessPanel.add(summaryScrollPanelForTable[index], java.awt.BorderLayout.CENTER);
00378 summaryHarnessTable[index] = new javax.swing.JTable();
00379 summaryScrollPanelForTable[index].setViewportView(summaryHarnessTable[index]);
00380
00381 summaryHarnessTable[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00382 String[] columnsNames = {"Harness ","DAQ Select 0","DAQ Select 1","DCS Select 0","DCS Select 1",
00383 "DCS S0vsS1", "RESULTS"};
00384 columnsNames[0] = columnsNames[0]+m_harnessList[index];
00385 summaryHarnessTableModels[index] = new HarnessTestsSummaryTableModel(m_harnessList[index],columnsNames);
00386 summaryHarnessTableModels[index].newData(m_summary_scanResults[index]);
00387 summaryHarnessTable[index].setModel(summaryHarnessTableModels[index]);
00388
00389 changeSummaryTableCellsColor(summaryHarnessTable[index]);
00390 }
00391
00392
00393
00394 jTabbedPaneTest.addTab("DAQ Data",jTabbedPaneDAQData);
00395
00396 jTabbedPaneDAQData.removeAll();
00397
00398 daqHaernessPanels = new javax.swing.JPanel[m_harnessMax];
00399 daqPanelForLabels = new javax.swing.JPanel[m_harnessMax];
00400 daqSelectLineLabel = new javax.swing.JLabel[m_harnessMax];
00401 daqSelectLineChoices = new javax.swing.JComboBox[m_harnessMax];
00402 performDAQScanButton = new javax.swing.JButton[m_harnessMax];
00403 daqScrollPanelForTable_Select0 = new javax.swing.JScrollPane[m_harnessMax];
00404 daqHarnessTable_Select0 = new javax.swing.JTable[m_harnessMax];
00405 daqHarnessTableModels_Select0 = new SamplingDataTableModel[m_harnessMax];
00406 daqPanelForSecondTable = new javax.swing.JPanel[m_harnessMax];
00407 daqScrollPanelForTable_Select1 = new javax.swing.JScrollPane[m_harnessMax];
00408 daqHarnessTable_Select1 = new javax.swing.JTable[m_harnessMax];
00409 daqHarnessTableModels_Select1 = new SamplingDataTableModel[m_harnessMax];
00410
00411 for(int index=0; index<m_harnessMax; index++) {
00412 daqHaernessPanels[index] = new javax.swing.JPanel();
00413 jTabbedPaneDAQData.addTab("Harness "+ m_harnessList[index], daqHaernessPanels[index]);
00414 daqPanelForLabels[index] = new javax.swing.JPanel();
00415 daqHaernessPanels[index].setLayout(new java.awt.BorderLayout());
00416 daqHaernessPanels[index].add(daqPanelForLabels[index], java.awt.BorderLayout.NORTH);
00417 daqPanelForLabels[index].setLayout(new javax.swing.BoxLayout(daqPanelForLabels[index],
00418 javax.swing.BoxLayout.X_AXIS));
00419 daqSelectLineLabel[index] = new javax.swing.JLabel();
00420 daqPanelForLabels[index].add(daqSelectLineLabel[index]);
00421 daqSelectLineLabel[index].setText(" Select Line ");
00422 daqSelectLineChoices[index] = new javax.swing.JComboBox();
00423 daqPanelForLabels[index].add(daqSelectLineChoices[index]);
00424 daqSelectLineChoices[index].setModel(
00425 new javax.swing.DefaultComboBoxModel(new String[]
00426 { "Normal + Redundant", "Normal", "Redundant" }));
00427
00428 performDAQScanButton[index] = new javax.swing.JButton();
00429 daqPanelForLabels[index].add(performDAQScanButton[index]);
00430 performDAQScanButton[index].setText("Perform DAQ scan");
00431 performDAQScanButton[index].addActionListener(new java.awt.event.ActionListener() {
00432 public void actionPerformed(java.awt.event.ActionEvent evt) {
00433
00434 int selectedHarness = jTabbedPaneDAQData.getSelectedIndex();
00435
00436 String selectLine =
00437 (String)daqSelectLineChoices[selectedHarness].getSelectedItem();
00438
00439 if(selectLine.equals("Normal"))
00440 {
00441 changeSelect(0);
00442 daqHarnessTableModels_Select0[selectedHarness].
00443 newData(probeScanHarnessWithTrigger(selectedHarness, (short)0),
00444 dataFile, getTimeStamp());
00445 }
00446 else if(selectLine.equals("Redundant"))
00447 {
00448 changeSelect(1);
00449 daqHarnessTableModels_Select1[selectedHarness].
00450 newData(probeScanHarnessWithTrigger(selectedHarness, (short)1),
00451 dataFile, getTimeStamp());
00452 }
00453 else if(selectLine.equals("Normal + Redundant"))
00454 {
00455 changeSelect(0);
00456 daqHarnessTableModels_Select0[selectedHarness].
00457 newData(probeScanHarnessWithTrigger(selectedHarness, (short)0),
00458 dataFile, getTimeStamp());
00459
00460 changeSelect(1);
00461 daqHarnessTableModels_Select1[selectedHarness].
00462 newData(probeScanHarnessWithTrigger(selectedHarness, (short)1),
00463 dataFile, getTimeStamp());
00464 }
00465 }
00466 });
00467
00468 daqHaernessPanels[index].setPreferredSize(new Dimension(850,550));
00469
00470 daqScrollPanelForTable_Select0[index] = new javax.swing.JScrollPane();
00471 daqHaernessPanels[index].add(daqScrollPanelForTable_Select0[index], java.awt.BorderLayout.CENTER);
00472 daqHarnessTable_Select0[index] = new javax.swing.JTable();
00473 daqScrollPanelForTable_Select0[index].setViewportView(daqHarnessTable_Select0[index]);
00474 daqHarnessTable_Select0[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00475
00476 daqHarnessTableModels_Select0[index] = new SamplingDataTableModel(m_harnessList[index], 0);
00477 daqHarnessTable_Select0[index].setModel(daqHarnessTableModels_Select0[index]);
00478 changeDAQTableCellsColor(daqHarnessTable_Select0[index]);
00479
00480 daqPanelForSecondTable[index] = new javax.swing.JPanel();
00481 daqHaernessPanels[index].add(daqPanelForSecondTable[index], java.awt.BorderLayout.SOUTH);
00482 daqPanelForSecondTable[index].setLayout(new java.awt.BorderLayout());
00483 daqPanelForSecondTable[index].setPreferredSize(new Dimension(550,250));
00484 daqScrollPanelForTable_Select1[index] = new javax.swing.JScrollPane();
00485 daqPanelForSecondTable[index].add(daqScrollPanelForTable_Select1[index], java.awt.BorderLayout.CENTER);
00486 daqHarnessTable_Select1[index] = new javax.swing.JTable();
00487 daqScrollPanelForTable_Select1[index].setViewportView(daqHarnessTable_Select1[index]);
00488 daqHarnessTable_Select1[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00489
00490 daqHarnessTableModels_Select1[index] = new SamplingDataTableModel(m_harnessList[index], 1);
00491 daqHarnessTable_Select1[index].setModel(daqHarnessTableModels_Select1[index]);
00492 changeDAQTableCellsColor(daqHarnessTable_Select1[index]);
00493 }
00494
00495 jTabbedPaneTest.addTab("DCS Data", jTabbedPaneDCSData);
00496
00497 jTabbedPaneDCSData.removeAll();
00498
00499 dcsHarnessPanels = new javax.swing.JPanel[harnessMax];
00500 dscScrollPanelForTable_Select0 = new javax.swing.JScrollPane[harnessMax];
00501 dcsHarnessTable_Select0 = new javax.swing.JTable[harnessMax];
00502 dcsHarnessTableModels_Select0 = new DCSDataTableModel[harnessMax];
00503 dcsPanelForSecondTable = new javax.swing.JPanel[harnessMax];
00504 dscScrollPanelForTable_Select1 = new javax.swing.JScrollPane[harnessMax];
00505 dcsHarnessTable_Select1 = new javax.swing.JTable[harnessMax];
00506 dcsHarnessTableModels_Select1 = new DCSDataTableModel[harnessMax];
00507 dcsPanelForLabels = new javax.swing.JPanel[harnessMax];
00508 stateTransitionLabel = new javax.swing.JLabel[harnessMax];
00509 transitionStateChoices = new javax.swing.JComboBox[harnessMax];
00510 changePSStateButton = new javax.swing.JButton[harnessMax];
00511 dcsSelectLineLabel = new javax.swing.JLabel[harnessMax];
00512 dcsSelectLineChoices = new javax.swing.JComboBox[harnessMax];
00513 performDCSScanButton = new javax.swing.JButton[harnessMax];
00514
00515 for(int index=0; index<harnessMax; index++)
00516 {
00517 dcsHarnessPanels[index] = new javax.swing.JPanel();
00518 jTabbedPaneDCSData.addTab("Harness "+ m_harnessList[index], dcsHarnessPanels[index] );
00519 dcsHarnessPanels[index].setLayout(new java.awt.BorderLayout());
00520 dcsHarnessPanels[index].setPreferredSize(new Dimension(350,550));
00521 dcsHarnessPanels[index].setPreferredSize(new Dimension(250,350));
00522
00523 dscScrollPanelForTable_Select0[index] = new javax.swing.JScrollPane();
00524 dcsHarnessPanels[index].add(dscScrollPanelForTable_Select0[index], java.awt.BorderLayout.CENTER);
00525 dcsHarnessTable_Select0[index] = new javax.swing.JTable();
00526 dscScrollPanelForTable_Select0[index].setViewportView(dcsHarnessTable_Select0[index]);
00527 dcsHarnessTable_Select0[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00528 dcsHarnessTableModels_Select0[index] = new DCSDataTableModel(m_harnessList[index], 0);
00529 dcsHarnessTable_Select0[index].setModel(dcsHarnessTableModels_Select0[index]);
00530 changeDCSTableCellsColor(dcsHarnessTable_Select0[index]);
00531
00532 dcsPanelForSecondTable[index] = new javax.swing.JPanel();
00533 dcsHarnessPanels[index].add(dcsPanelForSecondTable[index], java.awt.BorderLayout.SOUTH);
00534 dcsPanelForSecondTable[index].setLayout(new java.awt.BorderLayout());
00535 dcsPanelForSecondTable[index].setPreferredSize(new Dimension(350,250));
00536 dscScrollPanelForTable_Select1[index] = new javax.swing.JScrollPane();
00537 dcsPanelForSecondTable[index].add(dscScrollPanelForTable_Select1[index],
00538 java.awt.BorderLayout.CENTER);
00539 dcsHarnessTable_Select1[index] = new javax.swing.JTable();
00540 dscScrollPanelForTable_Select1[index].setViewportView(dcsHarnessTable_Select1[index]);
00541 dcsHarnessTable_Select1[index].setFont(new java.awt.Font("Monospaced", 0, 12));
00542 dcsHarnessTableModels_Select1[index] = new DCSDataTableModel(m_harnessList[index], 1);
00543 dcsHarnessTable_Select1[index].setModel(dcsHarnessTableModels_Select1[index]);
00544 changeDCSTableCellsColor(dcsHarnessTable_Select1[index]);
00545 dcsPanelForLabels[index] = new javax.swing.JPanel();
00546 dcsHarnessPanels[index].add(dcsPanelForLabels[index], java.awt.BorderLayout.NORTH);
00547 dcsPanelForLabels[index].setLayout(new javax.swing.BoxLayout(dcsPanelForLabels[index],
00548 javax.swing.BoxLayout.X_AXIS));
00549 stateTransitionLabel[index] = new javax.swing.JLabel();
00550 dcsPanelForLabels[index].add(stateTransitionLabel[index]);
00551 stateTransitionLabel[index].setText(" Select PS State ");
00552 transitionStateChoices[index] = new javax.swing.JComboBox();
00553 dcsPanelForLabels[index].add(transitionStateChoices[index]);
00554 transitionStateChoices[index].setModel(
00555 new javax.swing.DefaultComboBoxModel(new String[] { "STANDBY", "ON", "OFF" }));
00556 changePSStateButton[index] = new javax.swing.JButton();
00557 dcsPanelForLabels[index].add(changePSStateButton[index]);
00558 changePSStateButton[index].setText("Change STATE");
00559 changePSStateButton[index].addActionListener(
00560 new java.awt.event.ActionListener()
00561 {
00562 public void actionPerformed(java.awt.event.ActionEvent evt)
00563 {
00564
00565 int selectedHarness = jTabbedPaneDCSData.getSelectedIndex();
00566
00567 String state =
00568 (String)transitionStateChoices[selectedHarness].getSelectedItem();
00569 short stateNumber = 0;
00570 if(state.equals("ON")) {
00571 stateNumber = 1;
00572 } else if(state.equals("OFF")) {
00573 stateNumber = 0;
00574 } else if(state.equals("STANDBY")) {
00575 stateNumber = 2;
00576 }
00577
00578 changePSState(selectedHarness, stateNumber);
00579 }
00580 });
00581 dcsSelectLineLabel[index] = new javax.swing.JLabel();
00582 dcsPanelForLabels[index].add(dcsSelectLineLabel[index]);
00583 dcsSelectLineLabel[index].setText(" Select Line ");
00584 dcsSelectLineChoices[index] = new javax.swing.JComboBox();
00585 dcsPanelForLabels[index].add(dcsSelectLineChoices[index]);
00586 dcsSelectLineChoices[index].setModel(new javax.swing.DefaultComboBoxModel(
00587 new String[] { "Normal + Redundant", "Normal", "Redundant" }));
00588
00589 performDCSScanButton[index] = new javax.swing.JButton();
00590 dcsPanelForLabels[index].add(performDCSScanButton[index]);
00591 performDCSScanButton[index].setText("Perform DCS scan");
00592 performDCSScanButton[index].addActionListener(
00593 new java.awt.event.ActionListener()
00594 {
00595 public void actionPerformed(java.awt.event.ActionEvent evt)
00596 {
00597
00598 int selectedHarness = jTabbedPaneDCSData.getSelectedIndex();
00599
00600 String selectLine =
00601 (String)dcsSelectLineChoices[selectedHarness].getSelectedItem();
00602
00603 if(selectLine.equals("Normal"))
00604 {
00605 changeSelect(0);
00606 dcsHarnessTableModels_Select0[selectedHarness].
00607 newData(readDCSData(selectedHarness, (short)0),
00608 dataFile, getTimeStamp());
00609 }
00610 else if(selectLine.equals("Redundant"))
00611 {
00612 changeSelect(1);
00613 dcsHarnessTableModels_Select1[selectedHarness].
00614 newData(readDCSData(selectedHarness, (short)1),
00615 dataFile, getTimeStamp());
00616 }
00617 else if(selectLine.equals("Normal + Redundant"))
00618 {
00619 changeSelect(0);
00620 dcsHarnessTableModels_Select0[selectedHarness].
00621 newData(readDCSData(selectedHarness, (short)0),
00622 dataFile, getTimeStamp());
00623
00624 changeSelect(1);
00625 dcsHarnessTableModels_Select1[selectedHarness].
00626 newData(readDCSData(selectedHarness, (short)1),
00627 dataFile, getTimeStamp());
00628
00629 daqDcsAnalyse(selectedHarness);
00630 }
00631 }
00632 });
00633 }
00634 }
00635
00636
00637
00638
00639
00640 private String[][] probeScanHarnessWithTrigger(int selectedHarness, short selectLine)
00641 {
00642 if(api == null){
00643 System.out.println("Error: api pointer is NULL");
00644 return m_daq_scanResultsTable;
00645 }
00646
00647 Sct_SctApi.Scan probeScan = api.createScan();
00648 probeScan.getTrigger1().doubleL1A((short)10);
00649 probeScan.configure((short)20, 0.0, 24.0, 1.0);
00650
00651 try {
00652 m_daq_scanResults = api.probeScanHarnessWithTrigger(m_partition, m_crate, m_rod,
00653 probeScan, m_harnessList[selectedHarness]);
00654 }
00655 catch(NumberFormatException e) {
00656 javax.swing.JOptionPane.showMessageDialog(null, "Failed to interpet harness value");
00657 }
00658
00659
00660 harnessDAQTestAnalyse(selectedHarness, selectLine);
00661
00662
00663 return m_daq_scanResultsTable;
00664
00665 }
00666
00667 private void changePSState(int selectedHarness, short stateNumber) {
00668
00669
00670
00671
00672
00673
00674 if(api == null){
00675 System.out.println("Error: api pointer is NULL");
00676 return;
00677 }
00678
00679 for(int dogleg=0; dogleg<=5; dogleg++) {
00680 System.out.println("Requesting PS state change: " + getPSCrate().value + " " +
00681 getPSChannel(selectedHarness, dogleg).value + " " + stateNumber);
00682 api.ddcChangeState(getPSCrate().value, getPSChannel(selectedHarness, dogleg).value, stateNumber);
00683 }
00684 }
00685
00686 private void changeSelect(int selection) {
00687
00688
00689
00690
00691 boolean select;
00692 if(selection == 1) select = true;
00693 else select = false;
00694
00695 if(api == null){
00696 System.out.println("Error: api pointer is NULL");
00697 return;
00698 }
00699
00700 if(selection == m_select){
00701 System.out.println("changeSelect: select already set to " + selection + ". No action taken.");
00702 return;
00703 }
00704
00705 short oldTimeout = api.ddcGetMultipleTimeout();
00706 short newTimeout = 60;
00707 api.ddcSetMultipleTimeout(newTimeout);
00708
00709 System.out.println("changeSelect: Requesting Select " + selection + " Timeout " + newTimeout);
00710 api.setSelectAllInCrate(getPSCrate().value, select);
00711
00712 api.ddcSetMultipleTimeout(oldTimeout);
00713
00714 m_select = selection;
00715
00716 }
00717
00718 private String[][] readDCSData(int selectedHarness, short selectLine) {
00719
00720
00721
00722
00723
00724 if(api == null){
00725 System.out.println("Error: api pointer is NULL");
00726 return m_dcs_scanResultsTable;
00727 }
00728
00729 for(int dogleg=0; dogleg<=5; dogleg++){
00730 System.out.println("DOGLEG N = " + dogleg);
00731
00732 for( int parameter=0; parameter<psChannelParametersList.length; parameter++){
00733
00734 System.out.println(" Parameter: " + psChannelParametersList[parameter] + " channel " +
00735 getPSChannel(selectedHarness,dogleg).value);
00736 m_dcs_scanResults[parameter][dogleg] =
00737 api.ddcGetChannelParameterFloat(getPSCrate().value, getPSChannel(selectedHarness, dogleg).value,
00738 psChannelParametersList[parameter]);
00739 System.out.println(" ParameterValue = " + m_dcs_scanResults[parameter][dogleg]);
00740 }
00741 }
00742
00743 harnessDCSTestAnalyse(selectedHarness, selectLine);
00744
00745
00746 return m_dcs_scanResultsTable;
00747 }
00748
00749 private void doTestsForAllHarnesses() {
00750
00751
00752
00753 changeSelect(0);
00754
00755 for(int harness=0; harness<m_harnessMax; harness++) {
00756
00757 daqHarnessTableModels_Select0[harness].newData(probeScanHarnessWithTrigger(harness, (short)0),
00758 dataFile, getTimeStamp());
00759 dcsHarnessTableModels_Select0[harness].newData(readDCSData(harness, (short)0),
00760 dataFile, getTimeStamp());
00761
00762 summaryHarnessTableModels[harness].newData(m_summary_scanResults[harness],
00763 dataFile, getTimeStamp());
00764 }
00765
00766 changeSelect(1);
00767
00768 for(int harness=0; harness<m_harnessMax; harness++) {
00769
00770 daqHarnessTableModels_Select1[harness].newData(probeScanHarnessWithTrigger(harness, (short)1),
00771 dataFile, getTimeStamp());
00772
00773
00774
00775
00776
00777
00778 summaryHarnessTableModels[harness].newData(m_summary_scanResults[harness],
00779 dataFile, getTimeStamp());
00780
00781
00782
00783 }
00784
00785
00786
00787
00788 }
00789
00790 public void harnessDAQTestAnalyse(int selectedHarness, short selectLine)
00791 {
00792
00793 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00794
00795 int clk;
00796
00797 for(int link=0; link<12; link++) {
00798 int numberL=0;
00799 int number1=0;
00800 int number2=0;
00801 int numberE=0;
00802 int numberJunk=0;
00803 int number0=0;
00804 int numberUnidentified=0;
00805
00806 for(clk=0; clk<24; clk++) {
00807
00808 char linkResult = (char)m_daq_scanResults[clk][link];
00809
00810 if((linkResult == 'L') || (linkResult == 'l')) numberL++;
00811 else if(linkResult == '1') number1++;
00812 else if(linkResult == '2') number2++;
00813 else if(linkResult == 'E') numberE++;
00814 else if(linkResult == 'J') numberJunk++;
00815 else if(linkResult == '0') number0++;
00816 else numberUnidentified++;
00817
00818
00819 m_daq_scanResultsTable[clk][link] = "" + linkResult;
00820 }
00821
00822
00823 if(number0 >= 22) m_daq_scanResultsTable[clk][link] = "Dead";
00824 else if(number1 >= 22) m_daq_scanResultsTable[clk][link] = "Stuck";
00825 else if(number1+number0>=20 && number0<=15) m_daq_scanResultsTable[clk][link] = "CLK";
00826 else if(number2 >= 20) m_daq_scanResultsTable[clk][link] = "Clock by 2";
00827 else if(numberE >= 20) m_daq_scanResultsTable[clk][link] = "Event";
00828 else if(numberL >= 20) m_daq_scanResultsTable[clk][link] = "L1A";
00829 else m_daq_scanResultsTable[clk][link] = "Junk";
00830 }
00831
00832
00833
00834
00835 for(int dogleg=0; dogleg<6; dogleg++) {
00836 String link0Result = m_daq_scanResultsTable[24][(dogleg*2)];
00837 String link1Result = m_daq_scanResultsTable[24][(dogleg*2)+1];
00838
00839 String linksState = "FAIL";
00840 if(selectLine == 1){
00841
00842 if (link0Result == "CLK" && link1Result == "L1A") linksState = "PASS";
00843 else if(link0Result == "L1A" && link1Result == "CLK") linksState = "SWAP";
00844 }else{
00845
00846 if (link0Result == "L1A" && link1Result == "CLK") linksState = "PASS";
00847 else if(link0Result == "CLK" && link1Result == "L1A") linksState = "SWAP";
00848 }
00849
00850 if( link0Result == "Dead" && link1Result == "Dead") linksState = "Both Dead";
00851 else if( link0Result == "Dead") linksState = "Link0 Dead";
00852 else if( link1Result == "Dead") linksState = "Link1 Dead";
00853
00854 if( link0Result == "Stuck" && link1Result == "Stuck") linksState = "Both Stuck";
00855 else if( link0Result == "Stuck") linksState = "Link0 Stuck";
00856 else if( link1Result == "Stuck") linksState = "Link1 Stuck";
00857
00858 m_summary_scanResults[selectedHarness][selectLine][dogleg] = linksState;
00859 }
00860
00861
00862 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00863 dataFile, getTimeStamp());
00864 }
00865
00866 public void harnessDCSTestAnalyse(int selectedHarness, short selectLine)
00867 {
00868
00869 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00870
00871 for(int dogleg=0; dogleg<6; dogleg++) {
00872
00873
00874
00875 String parametersState = "PASS";
00876
00877 for(int parameter=0; parameter<psChannelParametersList.length; parameter++) {
00878 float thisParameterLowerLimit = psChannelParametersLimits[parameter][0];
00879 float thisParameterUpperLimit = psChannelParametersLimits[parameter][1];
00880
00881 if(m_dcs_scanResults[parameter][dogleg]<thisParameterLowerLimit ||
00882 m_dcs_scanResults[parameter][dogleg]>thisParameterUpperLimit) {
00883 parametersState="FAIL";
00884 }
00885
00886
00887 if(parameter==0){
00888 m_dcs_scanResultsTable[parameter][dogleg] = "0x" + Integer.toHexString((int)m_dcs_scanResults[parameter][dogleg]);
00889 }else{
00890 m_dcs_scanResultsTable[parameter][dogleg] = "" + m_dcs_scanResults[parameter][dogleg];
00891 }
00892 }
00893
00894 int status = (int) m_dcs_scanResults[0][dogleg];
00895 if((status&0x20)==0x20){
00896 parametersState="TRIP";
00897 }
00898
00899
00900 m_dcs_scanResultsTable[psChannelParametersList.length][dogleg] = parametersState;
00901
00902
00903
00904 m_summary_scanResults[selectedHarness][selectLine+2][dogleg] = parametersState;
00905 }
00906
00907
00908 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00909 dataFile, getTimeStamp());
00910 }
00911
00912 public void daqDcsAnalyse(int selectedHarness) {
00913
00914 m_summary_scanResults[selectedHarness] = summaryHarnessTableModels[selectedHarness].getData();
00915
00916
00917 String[][] select0_table = dcsHarnessTableModels_Select0[selectedHarness].getData();
00918 String[][] select1_table = dcsHarnessTableModels_Select1[selectedHarness].getData();
00919
00920 if(select0_table==null || select0_table==null) {
00921 System.out.println("pointer select0_table or select1_table is null. this means one select line table is empty");
00922 return;
00923 }
00924
00925
00926
00927
00928 for(int row=0; row<select0_table[0].length; row++) {
00929 String compareParameterValue = "";
00930 for(int column=1; column<select0_table.length-1; column++){
00931 float value1= Float.parseFloat(select0_table[column][row]);
00932 float value2= Float.parseFloat(select1_table[column][row]);
00933 float valuesComparison = 0;
00934
00935 if(value2 != 0)
00936 valuesComparison = value1/value2;
00937 else if(value1<-0.05 || value1>0.05)
00938 valuesComparison = 0;
00939 else
00940 valuesComparison = 1;
00941
00942 if(valuesComparison>1.05 || valuesComparison<0.95)
00943 compareParameterValue = "FAIL";
00944 else
00945 compareParameterValue = "PASS";
00946 }
00947
00948
00949
00950 if(compareParameterValue != "PASS" )
00951 m_summary_scanResults[selectedHarness][4][row] = "FAIL";
00952 else
00953 m_summary_scanResults[selectedHarness][4][row] = "PASS";
00954 }
00955
00956
00957
00958 for(int row=0; row<6; row++) {
00959 String daq_dcs_result = "PASS";
00960 for(int column=0; column<5; column++) {
00961 if(m_summary_scanResults[selectedHarness][column][row] != "PASS"){
00962 daq_dcs_result = "FAIL";
00963 }
00964 }
00965 m_summary_scanResults[selectedHarness][5][row] = daq_dcs_result;
00966 }
00967
00968
00969 summaryHarnessTableModels[selectedHarness].newData(m_summary_scanResults[selectedHarness],
00970 dataFile, getTimeStamp());
00971 }
00972
00973 private void closeButtonPerformed(java.awt.event.ActionEvent evt) {
00974 ((Window)getTopLevelAncestor()).dispose();
00975 }
00976
00977 public org.omg.CORBA.IntHolder getPSPartition() {return ps_partition;}
00978
00979 public org.omg.CORBA.IntHolder getPSCrate() {return ps_crate;}
00980
00981 public org.omg.CORBA.IntHolder getPSChannel(int selectedHarness, int dogleg) {return ps_channel[selectedHarness][dogleg];}
00982
00983
00984
00985
00986
00987
00988
00989
00990
00991 class SamplingDataTableModel extends javax.swing.table.AbstractTableModel
00992 {
00993
00994 int m_harness;
00995 int m_selectLine;
00996 String[][] m_harnessSamplingData;
00997
00998
00999 public SamplingDataTableModel(int harness, int selectLine) {
01000 m_harness = m_harness;
01001 m_selectLine = selectLine;
01002 m_harnessSamplingData = new String[25][12];
01003 for(int column=0; column< (getColumnCount()-1); column++){
01004 for(int row=0; row< getRowCount(); row++){
01005 m_harnessSamplingData[column][row] = "?";
01006 }
01007 }
01008 }
01009
01010 public Class getColumnClass(int column) {
01011 return getValueAt(0, column).getClass();
01012 }
01013
01014 public void newData(String[][] harnessSamplingData, String dataFile, String timeStamp) {
01015 for(int column=0; column< (getColumnCount()-1); column++){
01016 for(int row=0; row< getRowCount(); row++){
01017 m_harnessSamplingData[column][row] = harnessSamplingData[column][row];
01018 }
01019 }
01020 fireTableStructureChanged();
01021 saveDataToFile(dataFile, timeStamp);
01022 }
01023
01024 public String[][] getData() {
01025 return m_harnessSamplingData;
01026 }
01027
01028 public int getColumnCount() {
01029 return (1+m_harnessSamplingData.length);
01030 }
01031
01032 public int getRowCount() {
01033 return m_harnessSamplingData[0].length;
01034 }
01035
01036 public Object getValueAt(int rowIndex, int columnIndex) {
01037 if(columnIndex == 0)
01038 return "Ln" + rowIndex;
01039 else
01040 return "" + m_harnessSamplingData[columnIndex-1][rowIndex];
01041 }
01042
01043 public String getColumnName(int columnIndex) {
01044 String retValue;
01045
01046 if(columnIndex == 0) {
01047 retValue = "Select"+m_selectLine;
01048 } else if(columnIndex == 25) {
01049 retValue ="P/F";
01050 } else {
01051 columnIndex--;
01052 retValue = "" + columnIndex;
01053 }
01054
01055 return retValue;
01056 }
01057
01058 public void saveDataToFile(String dataFile, String timeStamp) {
01059 java.io.File dataFile_withpath = new File(dataFile);
01060
01061 try
01062 {
01063
01064 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01065
01066 out.write("---- DAQ Data for harness "+m_harness+ " Select Line "+m_selectLine);
01067 out.newLine();
01068 out.write(timeStamp);
01069 out.write(" Rx Threshold = " + m_rxThreshold);
01070 out.newLine();
01071 out.newLine();
01072
01073 out.write(getColumnName(0) + " ");
01074 for (int column =1; column<m_harnessSamplingData.length; column++)
01075 if(column<10) out.write(getColumnName(column) + " ");
01076 else out.write(getColumnName(column) + " ");
01077 out.newLine();
01078 out.newLine();
01079
01080 for (int row =0; row<m_harnessSamplingData[0].length; row++)
01081 {
01082 if(row<10) out.write("Link" + row+" ");
01083 else out.write("Link" + row+" ");
01084 for(int column=0; column<m_harnessSamplingData.length; column++)
01085 out.write(m_harnessSamplingData[column][row]+" ");
01086 out.newLine();
01087 }
01088
01089 out.newLine();
01090 out.newLine();
01091 out.close();
01092 }
01093 catch(IOException e)
01094 {
01095 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File = " + dataFile_withpath.getAbsolutePath());
01096 }
01097 }
01098 }
01099
01100
01101
01102
01103
01104 class DCSDataTableModel extends javax.swing.table.AbstractTableModel
01105 {
01106
01107 int m_harness;
01108 int m_selectLine;
01109 String[][] m_harnessDCSData;
01110
01111
01112 public DCSDataTableModel(int harness, int selectLine) {
01113 m_harness = harness;
01114 m_selectLine = selectLine;
01115 m_harnessDCSData = new String[psChannelParametersList.length+1][maxDoglegNumberInHarness];
01116 for(int column=0; column< (getColumnCount()-1); column++){
01117 for(int row=0; row< getRowCount(); row++){
01118 m_harnessDCSData[column][row] = "?";
01119 }
01120 }
01121 }
01122
01123 public void newData(String[][] harnessDCSData, String dataFile, String timeStamp) {
01124 for(int column=0; column< (getColumnCount()-1); column++){
01125 for(int row=0; row< getRowCount(); row++){
01126 m_harnessDCSData[column][row] = harnessDCSData[column][row];
01127 }
01128 }
01129 fireTableStructureChanged();
01130 saveDataToFile(dataFile, timeStamp);
01131 }
01132
01133 public Class getColumnClass(int column) {
01134 return getValueAt(0, column).getClass();
01135 }
01136
01137 public String[][] getData() {
01138 return m_harnessDCSData;
01139 }
01140
01141 public int getColumnCount() {
01142 return (1+m_harnessDCSData.length);
01143 }
01144
01145 public int getRowCount() {
01146 return m_harnessDCSData[0].length;
01147 }
01148
01149 public Object getValueAt(int rowIndex, int columnIndex) {
01150 if(columnIndex == 0)
01151 return "Dogleg " + (rowIndex+1);
01152 else
01153 return "" + m_harnessDCSData[columnIndex-1][rowIndex];
01154 }
01155
01156 public String getColumnName(int columnIndex) {
01157 String retValue;
01158
01159 if(columnIndex == 0)
01160 retValue = "Select"+m_selectLine;
01161 else if(columnIndex == psChannelParametersList_short.length+1)
01162 retValue = "P/F";
01163 else
01164 retValue = "" + psChannelParametersList_short[columnIndex-1];
01165
01166 return retValue;
01167 }
01168
01169 public void saveDataToFile(String dataFile, String timeStamp) {
01170 java.io.File dataFile_withpath = new File(dataFile);
01171
01172 try
01173 {
01174
01175
01176 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01177
01178 out.write("---- DCS Data for harness "+m_harness+ " Select Line "+m_selectLine);
01179 out.newLine();
01180 out.write(timeStamp);
01181 out.newLine();
01182 out.newLine();
01183
01184 out.write(getColumnName(0)+" ");
01185 for (int column =1; column<m_harnessDCSData.length; column++)
01186 out.write(getColumnName(column) + " ");
01187 out.newLine();
01188 out.newLine();
01189
01190 for (int row =0; row<m_harnessDCSData[0].length; row++)
01191 {
01192 out.write("Dogleg" + (row+1) +" ");
01193 for(int column=0; column<m_harnessDCSData.length; column++)
01194 out.write(m_harnessDCSData[column][row]+" ");
01195 out.newLine();
01196 }
01197
01198 out.newLine();
01199 out.newLine();
01200 out.close();
01201 }
01202 catch(IOException e)
01203 {
01204 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File:" + dataFile_withpath.getAbsolutePath());
01205 }
01206 }
01207 }
01208
01209
01210
01211
01212
01213 class HarnessTestsSummaryTableModel extends javax.swing.table.AbstractTableModel
01214 {
01215 String[][] m_HarnessTestsSummaryData;
01216 String[] m_columnsNames;
01217
01218 int m_harness;
01219
01220 public HarnessTestsSummaryTableModel(int harness, String[] columsNames) {
01221 m_harness = harness;
01222 m_columnsNames = columsNames;
01223 }
01224
01225 public void newData(String[][] harnessTestsSummaryData) {
01226 m_HarnessTestsSummaryData = harnessTestsSummaryData;
01227 fireTableStructureChanged();
01228 }
01229
01230 public void newData(String[][] harnessTestsSummaryData, String dataFile, String timeStamp) {
01231 m_HarnessTestsSummaryData = harnessTestsSummaryData;
01232 fireTableStructureChanged();
01233 saveDataToFile(dataFile, timeStamp);
01234 }
01235
01236 public Class getColumnClass(int column) {
01237 return getValueAt(0, column).getClass();
01238 }
01239
01240 public String[][] getData() {
01241 return m_HarnessTestsSummaryData ;
01242 }
01243
01244 public int getColumnCount() { return 7; }
01245
01246 public int getRowCount() { return 6; }
01247
01248 public Object getValueAt(int rowIndex, int columnIndex)
01249 {
01250 String retValue = "UNKNOWN";
01251 if(m_HarnessTestsSummaryData == null) return "Ptr Null";
01252 else
01253 {
01254 if(columnIndex == 0)
01255 retValue = "Dogleg " + (rowIndex+1);
01256 else
01257 retValue = ""+ m_HarnessTestsSummaryData[columnIndex-1][rowIndex];
01258 }
01259 return retValue;
01260 }
01261
01262 public String getColumnName(int columnIndex)
01263 {
01264 return m_columnsNames[columnIndex];
01265 }
01266 public void saveDataToFile(String dataFile, String timeStamp)
01267 {
01268 java.io.File dataFile_withpath = new File(dataFile);
01269
01270 try
01271 {
01272
01273
01274 BufferedWriter out = new BufferedWriter(new FileWriter(dataFile_withpath, true));
01275 out.write("---- DAQ-DCS Data Summary for harness "+m_harness);
01276 out.newLine();
01277 out.write(timeStamp);
01278 out.write(" Rx Threshold = " + m_rxThreshold);
01279 out.newLine();
01280 out.newLine();
01281
01282
01283 for (int column =0; column<m_HarnessTestsSummaryData.length; column++)
01284 out.write(getColumnName(column) + " ");
01285 out.newLine();
01286 out.newLine();
01287
01288 for (int row =0; row<m_HarnessTestsSummaryData[0].length; row++)
01289 {
01290 out.write("Dogleg" + (row+1)+" ");
01291 for(int column=0; column<m_HarnessTestsSummaryData.length; column++)
01292 out.write(m_HarnessTestsSummaryData[column][row]+" ");
01293 out.newLine();
01294 }
01295
01296 out.newLine();
01297 out.newLine();
01298 out.close();
01299 }
01300 catch(IOException e)
01301 {
01302 javax.swing.JOptionPane.showMessageDialog(null, "Failed to Open File " + dataFile_withpath.getAbsolutePath());
01303 }
01304 }
01305 }
01306
01307 public String getTimeStamp()
01308 {
01309
01310
01311
01312
01313
01314
01315
01316
01317
01318
01319
01320
01321 java.util.Date date = new java.util.Date();
01322
01323 String timestamp = date.getDate()+"/"+ date.getMonth() +"/"+ date.getYear() + " "+
01324 date.getHours()+":"+ date.getMinutes()+":"+date.getSeconds();
01325 return timestamp;
01326 }
01327
01328
01329
01330
01331
01332
01333
01334 public void changeDCSTableCellsColor(JTable table)
01335 {
01336 TableCellRenderer cellRenderer = new DCSTableCellRenderer();
01337 try {
01338 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01339 }
01340 catch( ClassNotFoundException ex ) {
01341 System.exit( 0 );
01342 }
01343 }
01344
01345 class DCSTableCellRenderer extends DefaultTableCellRenderer
01346 {
01347 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01348 int row, int column)
01349 {
01350 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01351
01352 String cellValue = (String)value;
01353 String stripped;
01354
01355 if(cellValue.equals("?")){
01356 return cell;
01357 }
01358
01359 switch(column){
01360 case 0:
01361 cell.setForeground(Color.black);
01362 break;
01363
01364 case 1:
01365 stripped = cellValue.substring(2, cellValue.length());
01366 int status = Integer.parseInt(stripped,16);
01367
01368 if((status & 0x20)==0){
01369 cell.setForeground(Color.black);
01370 }else{
01371 cell.setForeground(Color.red);
01372 }
01373 break;
01374
01375 case 9:
01376
01377 if(cellValue.equals("PASS")){
01378 cell.setForeground(Color.green);
01379 }else{
01380 cell.setForeground(Color.red);
01381 }
01382 break;
01383
01384 default:
01385 float valueFloat = Float.parseFloat(cellValue);
01386 float thisParameterLowerLimit = psChannelParametersLimits[column-1][0];
01387 float thisParameterUpperLimit = psChannelParametersLimits[column-1][1];
01388
01389 if(valueFloat<thisParameterLowerLimit || valueFloat>thisParameterUpperLimit) {
01390 cell.setForeground(Color.red);
01391 }else{
01392 cell.setForeground(Color.black);
01393 }
01394 break;
01395 }
01396 return cell;
01397 }
01398 }
01399
01400
01401
01402
01403
01404 public void changeDAQTableCellsColor(JTable table)
01405 {
01406 TableCellRenderer cellRenderer = new DAQTableCellRenderer();
01407 try {
01408 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01409 }
01410 catch( ClassNotFoundException ex ) {
01411 System.exit( 0 );
01412 }
01413 }
01414
01415 class DAQTableCellRenderer extends DefaultTableCellRenderer
01416 {
01417 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01418 int row, int column)
01419 {
01420 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01421
01422 String cellValue = (String)value;
01423
01424 if(cellValue.equals("PASS")) {
01425 cell.setForeground(Color.green);
01426 }else if(cellValue.equals("FAIL")) {
01427 cell.setForeground(Color.red);
01428 }else if(cellValue.equals("Dead")) {
01429 cell.setForeground(Color.blue);
01430 }else{
01431 cell.setForeground(Color.black);
01432 }
01433
01434 return cell;
01435 }
01436 }
01437
01438
01439
01440
01441
01442 public void changeSummaryTableCellsColor(JTable table)
01443 {
01444 TableCellRenderer cellRenderer = new SummaryTableCellRenderer();
01445 try {
01446 table.setDefaultRenderer(Class.forName("java.lang.String"), cellRenderer);
01447 }
01448 catch( ClassNotFoundException ex ) {
01449 System.exit( 0 );
01450 }
01451 }
01452
01453 class SummaryTableCellRenderer extends DefaultTableCellRenderer
01454 {
01455 public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus,
01456 int row, int column)
01457 {
01458 Component cell = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
01459
01460 String cellValue = (String)value;
01461
01462 if(cellValue.equals("PASS")) {
01463 cell.setForeground(Color.green);
01464 }else if(cellValue.equals("FAIL")){
01465 cell.setForeground(Color.red);
01466 }else{
01467 cell.setForeground(Color.black);
01468 }
01469
01470 return cell;
01471 }
01472 }
01473
01474 private javax.swing.JPanel topPanel;
01475 private javax.swing.JPanel panelForLabels;
01476 private javax.swing.JLabel partitionLabel;
01477 private javax.swing.JLabel crateLabel;
01478 private javax.swing.JLabel rodLabel;
01479 private javax.swing.JLabel harnessMaxLabel;
01480 private javax.swing.JLabel rxLabel;
01481 private javax.swing.JLabel txLabel;
01482 private javax.swing.JLabel fileNameLabel;
01483 private javax.swing.JTextField partitionValue;
01484 private javax.swing.JTextField crateValue;
01485 private javax.swing.JTextField rodValue;
01486 private javax.swing.JTextField harnessMaxValue;
01487 private javax.swing.JTextField rxThValue;
01488 private javax.swing.JTextField txCurrentValue;
01489 private javax.swing.JTextField fileNameValue;
01490 private javax.swing.JTabbedPane jTabbedPaneTest;
01491 private javax.swing.JPanel panelForClose;
01492 private javax.swing.JButton closeButton;
01493
01494 private javax.swing.JPanel summaryHarnessPanel;
01495 private javax.swing.JButton performHarnessTestButton;
01496 private javax.swing.JScrollPane[] summaryScrollPanelForTable;
01497 private javax.swing.JTable[] summaryHarnessTable;
01498 private HarnessTestsSummaryTableModel[] summaryHarnessTableModels;
01499
01500
01501 private javax.swing.JTabbedPane jTabbedPaneDAQData;
01502 private javax.swing.JPanel[] daqHaernessPanels;
01503 private javax.swing.JPanel[] daqPanelForLabels;
01504 private javax.swing.JLabel[] daqSelectLineLabel;
01505 private javax.swing.JComboBox[] daqSelectLineChoices;
01506 private javax.swing.JButton[] performDAQScanButton;
01507 private javax.swing.JScrollPane[] daqScrollPanelForTable_Select0;
01508 private javax.swing.JTable[] daqHarnessTable_Select0;
01509 private SamplingDataTableModel[] daqHarnessTableModels_Select0;
01510 private javax.swing.JPanel[] daqPanelForSecondTable;
01511 private javax.swing.JScrollPane[] daqScrollPanelForTable_Select1;
01512 private javax.swing.JTable[] daqHarnessTable_Select1;
01513 private SamplingDataTableModel[] daqHarnessTableModels_Select1;
01514
01515
01516 private javax.swing.JTabbedPane jTabbedPaneDCSData;
01517 private javax.swing.JPanel[] dcsHarnessPanels;
01518 private javax.swing.JScrollPane[] dscScrollPanelForTable_Select0;
01519 private javax.swing.JTable[] dcsHarnessTable_Select0;
01520 private DCSDataTableModel[] dcsHarnessTableModels_Select0;
01521 private javax.swing.JPanel[] dcsPanelForSecondTable;
01522 private javax.swing.JScrollPane[] dscScrollPanelForTable_Select1;
01523 private javax.swing.JTable[] dcsHarnessTable_Select1;
01524 private DCSDataTableModel[] dcsHarnessTableModels_Select1;
01525 private javax.swing.JPanel[] dcsPanelForLabels;
01526 private javax.swing.JLabel[] stateTransitionLabel;
01527 private javax.swing.JComboBox[] transitionStateChoices;
01528 private javax.swing.JButton[] changePSStateButton;
01529 private javax.swing.JLabel[] dcsSelectLineLabel;
01530 private javax.swing.JComboBox[] dcsSelectLineChoices;
01531 private javax.swing.JButton[] performDCSScanButton;
01532 }
01533