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