package DataLoader; import java.util.List; import java.util.Vector; import java.util.Hashtable; import java.util.Enumeration; import java.util.Arrays; import java.util.regex.*; import java.awt.*; import java.io.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.border.*; import javax.swing.filechooser.FileFilter; import javax.swing.table.TableColumn; import javax.swing.table.DefaultTableModel; import SBEAMS.*; //----------------------------------------------------------------------------------------------- public class GeneralInfoWizardPanel extends WizardPanel { //----------------------------------------------------------------------------------------------- private JComboBox organismDropDown; private JComboBox constantsDropDown; private JTextField strain; private JTextField manipulationType; private JTextField manipulatedVariable; private JTextField constantsFile; private JTable constantsTable; private JScrollPane constantsScrollPane; private BufferedReader bufferedReader; private StringBuffer strbuf; private SBEAMSClient sc; private Hashtable constantsFiles; private String[] titles = {"Variable", "Value", "Units"}; private static String CONSTANTS = "Constants"; private static String SELECT_ORGANISM="---Select Organism---"; private static String SELECT_CONSTANTS="---Select Constants---"; private static String OTHER_ORGANISM= "Other..."; private static String SBEAMS_SERVER_BASE = "http://db"; private static String constantsFileURL = SBEAMS_SERVER_BASE+"/sbeams/cgi/Microarray/ViewFile.cgi?action=read&FILE_NAME="; private static String organismURL = SBEAMS_SERVER_BASE+"/sbeams/cgi/Microarray/ManageTable.cgi?TABLE_NAME=organism&output_mode=tsv"; private static String constantsURL = SBEAMS_SERVER_BASE+"/sbeams/cgi/Microarray/ManageTable.cgi?TABLE_NAME=MA_experiment_constants&output_mode=tsv"; //----------------------------------------------------------------------------------------------- public GeneralInfoWizardPanel(WizardContext wc) { setWizardContext(wc); setLayout(new BorderLayout()); setBorder(new TitledBorder("Step 3. Describe the General Experiment Information")); SpringLayout layout = new SpringLayout(); JPanel infoPanel = new JPanel(layout); JPanel userInputPanel = new JPanel(new GridLayout(0,2)); userInputPanel.add(new JLabel("Organism")); if (wizardContext.getAttribute(SBEAMS_CLIENT) == null) { try{ sc = new SBEAMSClient(true); }catch (Exception e) { e.printStackTrace(); } }else { sc = (SBEAMSClient)wizardContext.getAttribute(SBEAMS_CLIENT); } Vector orgsFromSbeams = new Vector(); orgsFromSbeams.add(SELECT_ORGANISM); try{ String[] tempOrgs = sc.fetchSbeamsResultSetColumn(organismURL,"full_name"); // String[] tempOrgs = (sc.fetchSbeamsPage(organismURL)).split("\\n"); for (int m=0;m=3) { mt = breakdown[0]; mv = breakdown[breakdown.length-2]; } userInputPanel.add(new JLabel("Manipulation Type")); manipulationType = new JTextField(mt, 30); userInputPanel.add(manipulationType); userInputPanel.add(new JLabel("Manipulated Variable")); manipulatedVariable = new JTextField(mv, 30); userInputPanel.add(manipulatedVariable); Vector constantsFromSbeams = new Vector(); constantsFiles = new Hashtable(); constantsFromSbeams.add(SELECT_CONSTANTS); try{ constantsFiles = sc.fetchSbeamsResultSetHash(constantsURL, "name", "experiment_constants_id"); for (Enumeration enum = constantsFiles.keys(); enum.hasMoreElements();) { constantsFromSbeams.add((String)enum.nextElement()); } }catch (Exception e) { e.printStackTrace(); } String[] constants = new String[constantsFromSbeams.size()]; constantsFromSbeams.toArray(constants); Arrays.sort(constants); constantsDropDown = new JComboBox(constants); constantsDropDown.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED ){ Integer record_id = new Integer( (String)constantsFiles.get(e.getItem()) ); String fileUrl = constantsFileURL+constantsFiles.get(e.getItem())+"_constants_file.dat"; try{ String[][] constants = interpretConstants(record_id, sc.fetchSbeamsPage(fileUrl)); if (constants != null) ((DefaultTableModel)constantsTable.getModel()).setDataVector(constants,titles); constantsScrollPane.getParent().setVisible(false); constantsTable.repaint(); Dimension d = constantsTable.getPreferredSize(); constantsScrollPane.setPreferredSize(d); constantsScrollPane.repaint(); constantsScrollPane.getParent().setVisible(true); }catch (Exception except) { except.printStackTrace(); } } } }); userInputPanel.add(new JLabel("Constants")); userInputPanel.add(constantsDropDown); infoPanel.add(userInputPanel); layout.putConstraint(SpringLayout.WEST, userInputPanel, 10, SpringLayout.WEST, infoPanel); add(infoPanel, BorderLayout.CENTER); ConstantsTableModel model = new ConstantsTableModel(); constantsTable = new JTable(model); model.setDataVector(new String[5][3], titles); Dimension d = constantsTable.getPreferredSize(); constantsScrollPane = new JScrollPane(constantsTable); constantsScrollPane.setPreferredSize(d); add(constantsScrollPane, BorderLayout.SOUTH); }// constructor //----------------------------------------------------------------------------------------------- class ConstantsTableModel extends DefaultTableModel { public boolean isCellEditable(int row, int col){ return false; } }// class ConstantsTableModel //----------------------------------------------------------------------------------------------- public String[][] interpretConstants(Integer sbeamsId, String constantsData){ wizardContext.setAttribute(WIZARD_CONSTANTS_ID, sbeamsId); return interpretConstants(constantsData); }// interpretConstants //----------------------------------------------------------------------------------------------- public String[][] interpretConstants(String constantsData) { Vector c = new Vector(); Vector wizardVars = new Vector(); String [] dataLines = constantsData.split("\\n"); Pattern n = Pattern.compile(".*?"); Pattern u = Pattern.compile(".*?name.*?units='(.*?)'.*>"); for (int m=0;m0){ String[][] returnArray = new String[c.size()][3]; for (int m=0;m