Changeset 27941

Show
Ignore:
Timestamp:
30.07.2013 12:07:00 (6 years ago)
Author:
sjm84
Message:

Using ArrayLists? instead of arrays to fix an out of bounds exception that was occuring

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/src/java/org/greenstone/admin/gui/ConfPane.java

    r25635 r27941  
    3838package org.greenstone.admin.gui; 
    3939 
    40 import java.awt.*; 
    41 import java.awt.event.*; 
    42 import java.io.*; 
    43 import java.util.List; 
     40import java.awt.BorderLayout; 
     41import java.awt.Component; 
     42import java.awt.Dimension; 
     43import java.awt.Font; 
     44import java.awt.GridLayout; 
     45import java.awt.Point; 
     46import java.awt.event.ActionEvent; 
     47import java.awt.event.ActionListener; 
     48import java.awt.event.KeyAdapter; 
     49import java.awt.event.KeyEvent; 
     50import java.awt.event.MouseAdapter; 
     51import java.awt.event.MouseEvent; 
     52import java.io.BufferedReader; 
     53import java.io.BufferedWriter; 
     54import java.io.File; 
     55import java.io.FileReader; 
     56import java.io.FileWriter; 
     57import java.io.InputStream; 
     58import java.net.HttpURLConnection; 
     59import java.net.URL; 
     60import java.sql.Connection; 
     61import java.sql.DriverManager; 
    4462import java.util.ArrayList; 
     63import java.util.Enumeration; 
     64import java.util.HashMap; 
    4565import java.util.Hashtable; 
    46 import java.util.Enumeration; 
    47 import java.lang.Object; 
    48 import javax.swing.*; 
    49 import javax.swing.event.*; 
    50 import javax.swing.tree.*; 
    51 import javax.swing.table.*; 
    52 import java.awt.event.MouseEvent; 
    53 import java.net.*; 
    54 import java.sql.*; 
     66 
     67import javax.swing.BorderFactory; 
     68import javax.swing.ImageIcon; 
     69import javax.swing.JButton; 
     70import javax.swing.JLabel; 
     71import javax.swing.JList; 
     72import javax.swing.JOptionPane; 
     73import javax.swing.JPanel; 
     74import javax.swing.JScrollPane; 
     75import javax.swing.JSplitPane; 
     76import javax.swing.JTable; 
     77import javax.swing.JTree; 
     78import javax.swing.event.TreeSelectionEvent; 
     79import javax.swing.event.TreeSelectionListener; 
     80import javax.swing.table.AbstractTableModel; 
     81import javax.swing.table.JTableHeader; 
     82import javax.swing.table.TableCellRenderer; 
     83import javax.swing.tree.DefaultMutableTreeNode; 
     84import javax.swing.tree.TreeSelectionModel; 
    5585 
    5686import org.greenstone.admin.GAI; 
    57 import org.greenstone.admin.GAIManager; 
    58 import org.greenstone.admin.gui.ThreadControl; 
    59 //import org.greenstone.admin.gui.ConfSettingTableModel; 
    60 import org.greenstone.admin.gui.SiteConfSetting; 
    61 import org.greenstone.admin.gui.ParsingProgress; 
    62  
     87import org.greenstone.gsdl3.util.GSFile; 
    6388import org.greenstone.util.Configuration; 
    64 import org.greenstone.gsdl3.util.GSFile; 
    6589 
    6690/** 
     
    148172    private JTable conf_setting_table = null; 
    149173 
    150     private int num_of_setting; 
    151  
    152174    //The details display in the table 
    153175    int display_row_count = 5; 
    154     int rowLength = 20; 
    155     int colLength = 3; 
    156     private Object[][] conf_display = new Object[rowLength][colLength]; 
    157     private Object[][] conf_setting; 
     176    //int rowLength = 20; 
     177    //int colLength = 3; 
     178    //private Object[][] conf_display = new Object[rowLength][colLength]; 
     179    //private Object[][] conf_setting; 
     180 
     181    private final String ONE = "1"; 
     182    private final String TWO = "2"; 
     183    private final String THREE = "3"; 
     184 
     185    private ArrayList<ArrayList<Object>> conf_display = new ArrayList<ArrayList<Object>>(); 
     186    private ArrayList<HashMap<String, Object>> conf_setting = new ArrayList<HashMap<String, Object>>(); 
    158187 
    159188    //An array to store all the details in the build.properties file 
     
    345374                if (realColumnIndex == 0) 
    346375                { 
    347                     tip = conf_display[rowIndex][realColumnIndex].toString(); 
     376                    tip = conf_display.get(rowIndex).get(realColumnIndex).toString(); 
    348377                } 
    349378                else 
     
    713742    public void readProjectConf(String filename) 
    714743    { 
     744        System.err.println("FILENAME = " + filename); 
    715745        String fileLine; 
    716746        /* 
     
    720750         */ 
    721751        conf_array = new ArrayList<String>(); 
    722         conf_setting = new Object[rowLength][colLength]; 
     752        conf_setting.clear(); 
     753 
    723754        try 
    724755        { 
    725756            BufferedReader conf_in = new BufferedReader(new FileReader(filename)); 
    726             int i = 0; 
    727757            while ((fileLine = conf_in.readLine()) != null) 
    728758            { 
     759                HashMap<String, Object> map = new HashMap<String, Object>(); 
    729760                // This is an empty line 
    730761                if (fileLine.matches("^\\s*$")) 
     
    741772                    //This line is Configuration Comment line 
    742773                    conf_array.add(fileLine); 
    743                     conf_setting[i][0] = fileLine.substring(1); // use 1 to get rid of the # symbol. 
     774                    map.put(ONE, fileLine.substring(1)); 
     775                    conf_setting.add(map); 
    744776                } 
    745777                else if (!fileLine.matches("#.+") && !fileLine.matches("^\\s*$")) 
     
    747779                    //This line is Setting line 
    748780                    int end_index = fileLine.indexOf("="); 
    749                     if(end_index != -1) 
     781                    if (end_index != -1) 
    750782                    { 
    751                         conf_setting[i][1] = fileLine.substring(0, end_index).toUpperCase(); 
    752                         conf_setting[i][2] = fileLine.substring(end_index + 1); 
    753                         conf_table.put(conf_setting[i][1], conf_setting[i][2]); 
    754                         i++; //calculat the number of settings 
     783                        map.put(TWO, fileLine.substring(0, end_index).toUpperCase()); 
     784                        map.put(THREE, fileLine.substring(end_index + 1)); 
     785                        conf_table.put(map.get(TWO), map.get(THREE)); 
     786 
    755787                        conf_array.add(fileLine); 
     788 
     789                        if (map.get(TWO).toString().matches("TOMCAT.SERVER")) 
     790                        { 
     791                            tomcat_server = map.get(THREE).toString(); 
     792                        } 
     793                        if (map.get(TWO).toString().matches("TOMCAT.PORT")) 
     794                        { 
     795                            tomcat_port = map.get(THREE).toString(); 
     796                        } 
     797                        if (map.get(TWO).toString().matches("MYSQL.ADMIN.USER")) 
     798                        { 
     799                            mysql_adminuser = map.get(THREE).toString(); 
     800                        } 
     801                        if (map.get(TWO).toString().matches("MYSQL.SERVER")) 
     802                        { 
     803                            mysql_server = map.get(THREE).toString(); 
     804                        } 
     805                        if (map.get(TWO).toString().matches("MYSQL.PORT")) 
     806                        { 
     807                            mysql_port = map.get(THREE).toString(); 
     808                        } 
     809 
     810                        conf_setting.add(map); 
    756811                    } 
    757812                } 
     
    761816                } 
    762817            } 
    763             num_of_setting = i; 
    764             for (int j = 0; j < num_of_setting; j++) 
    765             { 
    766                 if (conf_setting[j][1].toString().matches("TOMCAT.SERVER")) 
    767                 { 
    768                     tomcat_server = conf_setting[j][2].toString(); 
    769                 } 
    770                 if (conf_setting[j][1].toString().matches("TOMCAT.PORT")) 
    771                 { 
    772                     tomcat_port = conf_setting[j][2].toString(); 
    773                 } 
    774                 if (conf_setting[j][1].toString().matches("MYSQL.ADMIN.USER")) 
    775                 { 
    776                     mysql_adminuser = conf_setting[j][2].toString(); 
    777                 } 
    778                 if (conf_setting[j][1].toString().matches("MYSQL.SERVER")) 
    779                 { 
    780                     mysql_server = conf_setting[j][2].toString(); 
    781                 } 
    782                 if (conf_setting[j][1].toString().matches("MYSQL.PORT")) 
    783                 { 
    784                     mysql_port = conf_setting[j][2].toString(); 
    785                 } 
    786             } 
     818 
    787819            conf_in.close(); 
    788820        } 
     
    795827    public void clearTable() 
    796828    { 
    797         for (int i = 0; i < rowLength; i++) 
    798         { 
    799             conf_display[i][0] = ""; 
    800             conf_display[i][1] = ""; 
    801             conf_display[i][2] = ""; 
    802         } 
     829        conf_display.clear(); 
    803830    } 
    804831 
     
    889916        public Object getValueAt(int row, int col) 
    890917        { 
    891             return conf_display[row][col + 1]; 
     918            try 
     919            { 
     920                return conf_display.get(row).get(col + 1); 
     921            } 
     922            catch (Exception ex) 
     923            { 
     924                return ""; 
     925            } 
    892926        } 
    893927 
     
    898932                return false; 
    899933            } 
    900             else if (conf_display[row][col].toString().matches("MYSQL.+")) 
     934            else if (conf_display.get(row).get(col).toString().matches("MYSQL.+")) 
    901935            { 
    902936                mysql_server_up = checkMysqlServer(); 
     
    906940                } 
    907941            } 
    908             else if (conf_display[row][col].toString().matches("TOMCAT.+")) 
     942            else if (conf_display.get(row).get(col).toString().matches("TOMCAT.+")) 
    909943            { 
    910944                tomcat_server_up = checkTomcatServer(); 
     
    921955            if (!isCellEditable(row, col)) 
    922956                return; 
    923             conf_display[row][col + 1] = value; 
     957            if (conf_display.get(row) == null) 
     958            { 
     959                ArrayList<Object> list = new ArrayList<Object>(); 
     960                list.add(col + 1, value); 
     961                conf_display.add(row, list); 
     962            } 
     963            else 
     964            { 
     965                conf_display.get(row).add(col + 1, value); 
     966            } 
    924967            project_conf_changed = true; 
    925968            //System.err.println("**ConfDisplay:" + conf_display[row][col].toString()); 
    926             conf_table.put(conf_display[row][col].toString(), value); 
     969            conf_table.put(conf_display.get(row).get(col).toString(), value); 
    927970            fireTableCellUpdated(row, col + 1); 
    928971            updateUI(); 
     
    937980        confContent_pane.revalidate(); 
    938981        clearTable(); 
    939         int j = 0; 
     982 
    940983        int row_count = 0; 
    941         for (int i = 0; i < num_of_setting; i++) 
    942         { 
    943             if (conf_setting[i][1].toString().matches("^(" + conf_param + ").+")) 
     984        for (int i = 0; i < conf_setting.size(); i++) 
     985        { 
     986            if (conf_setting.get(i).get(TWO) != null && conf_setting.get(i).get(TWO).toString().matches("^(" + conf_param + ").+")) 
    944987            { 
    945988                row_count = row_count + 1; 
    946                 conf_display[j][0] = conf_setting[i][0]; 
    947                 conf_display[j][1] = conf_setting[i][1]; 
    948                 conf_display[j][2] = conf_table.get(conf_setting[i][1]); 
    949                 j++; 
     989 
     990                ArrayList<Object> list = new ArrayList<Object>(); 
     991                list.add(conf_setting.get(i).get(ONE)); 
     992                list.add(conf_setting.get(i).get(TWO)); 
     993                list.add(conf_table.get(conf_setting.get(i).get(TWO))); 
     994                conf_display.add(list); 
    950995            } 
    951996        }