From 4be7476de7312a4f206587d65b1d43ce629a8155 Mon Sep 17 00:00:00 2001 From: ricky barrette Date: Thu, 27 Jan 2011 18:49:30 +0000 Subject: [PATCH] added more options in settings allowing user to pick the database name. added an option to allow the user to save their password added a password field to the main panel to allow for easy password entry added a connect button to the main panel --- Order Processor/.settings.propertys | 7 - Order Processor/images/remove.png | Bin 0 -> 2167 bytes Order Processor/images/repeat.png | Bin 0 -> 2107 bytes .../java/OrderProcessor/DB/OrderDB.java | 34 ++++- .../java/OrderProcessor/UI/MainWindow.java | 65 +++++++- .../java/OrderProcessor/UI/SettingsPanel.java | 142 ++++++++++++------ Order Processor/version infomation/changelog | 5 + Order Processor/version infomation/version | 2 +- 8 files changed, 195 insertions(+), 60 deletions(-) delete mode 100644 Order Processor/.settings.propertys create mode 100644 Order Processor/images/remove.png create mode 100644 Order Processor/images/repeat.png diff --git a/Order Processor/.settings.propertys b/Order Processor/.settings.propertys deleted file mode 100644 index 38b31c4..0000000 --- a/Order Processor/.settings.propertys +++ /dev/null @@ -1,7 +0,0 @@ -#---No Comment--- -#Wed Jan 26 13:29:05 EST 2011 -server_parrword=kwz5vDLcNnKG6agAnGSm8nwzSncF2SK5 -server_location=tcdevsvn1 -use_remote_server=true -server_port_number=3306 -server_user_name=ricky.barrette diff --git a/Order Processor/images/remove.png b/Order Processor/images/remove.png new file mode 100644 index 0000000000000000000000000000000000000000..9be3a99139cd4faffa85d228d1fbc3e1c4ced35b GIT binary patch literal 2167 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 literal 0 HcmV?d00001 diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java index 90c1dc3..3f87b00 100644 --- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java @@ -57,12 +57,13 @@ public class OrderDB { /** * Creates a new OrderDB * @author ricky barrette + * @param password * @throws ClassNotFoundException * @throws SQLException * @throws SocketException * @throws Exception */ - public OrderDB() throws ClassNotFoundException, SQLException, SocketException { + public OrderDB(String password) throws ClassNotFoundException, SQLException, SocketException { Properties props = getProperties(); @@ -76,7 +77,12 @@ public class OrderDB { dbLocation = System.getProperty("user.home") +"/.TwentyCodesOrders"; } - Connection conn = getConnection(); + Connection conn; + if(password == null) + conn = getConnection(); + else + conn = getConnection(password); + Statement stat = conn.createStatement(); // stat.executeUpdate("drop table if exists Orders;"); @@ -132,7 +138,7 @@ public class OrderDB { cnt++; return cnt; } - + /** * deletes the old order that IS BEING replaced * @throws SQLException @@ -216,7 +222,7 @@ public class OrderDB { passwordEncryptor.setPassword(PASSWORD); if(isUsingRemoteDatabase){ - String url = "jdbc:mysql://"+props.getProperty(SettingsPanel.SERVER_LOCATION)+":"+props.getProperty(SettingsPanel.SERVER_PORT_NUMBER, "3306")+"/Orders"; + String url = "jdbc:mysql://"+props.getProperty(SettingsPanel.SERVER_LOCATION)+":"+props.getProperty(SettingsPanel.SERVER_PORT_NUMBER, "3306")+"/"+props.getProperty(SettingsPanel.DATABASE_NAME,"Orders"); if(props.getProperty(SettingsPanel.SERVER_USERNAME).length() > 0) url += "?user="+ props.getProperty(SettingsPanel.SERVER_USERNAME); @@ -231,6 +237,26 @@ public class OrderDB { return DriverManager.getConnection("jdbc:sqlite:"+ dbLocation+".db"); } + private Connection getConnection(String password) throws SQLException { + Properties props = getProperties(); + BasicTextEncryptor passwordEncryptor = new BasicTextEncryptor(); + passwordEncryptor.setPassword(PASSWORD); + + if(isUsingRemoteDatabase){ + String url = "jdbc:mysql://"+props.getProperty(SettingsPanel.SERVER_LOCATION)+":"+props.getProperty(SettingsPanel.SERVER_PORT_NUMBER, "3306")+"/"+props.getProperty(SettingsPanel.DATABASE_NAME,"Orders"); + + if(props.getProperty(SettingsPanel.SERVER_USERNAME).length() > 0) + url += "?user="+ props.getProperty(SettingsPanel.SERVER_USERNAME); + + url += "&password="+ password; + + return DriverManager.getConnection(url); + + } + else + return DriverManager.getConnection("jdbc:sqlite:"+ dbLocation+".db"); + } + /** * returns the row count * @return number orders in the database diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java index 3898d86..3292669 100644 --- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java @@ -9,10 +9,12 @@ package com.TwentyCodes.java.OrderProcessor.UI; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.net.SocketException; import java.sql.SQLException; +import java.util.Properties; import javax.swing.ImageIcon; import javax.swing.JButton; @@ -27,6 +29,7 @@ import com.TwentyCodes.java.OrderProcessor.FileFilter; import com.TwentyCodes.java.OrderProcessor.ProgressListener; import com.TwentyCodes.java.OrderProcessor.UncaughtExceptionHandler; import com.TwentyCodes.java.OrderProcessor.DB.OrderDB; +import javax.swing.JPasswordField; /** * this is the main window and class of this application @@ -42,6 +45,9 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen private UncaughtExceptionHandler mExceptionReport = new UncaughtExceptionHandler(this.getClass()); private static JLabel orderCountLabel; private static JLabel mWarningLabel; + private static JButton mConnectButton; + private static JPasswordField mPassWord; + private JLabel lblDatabasePassword; /** * Creates a new MainWindow @@ -97,6 +103,17 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen panel.add(mLoadFileButton); + lblDatabasePassword = new JLabel("Database Password"); + panel.add(lblDatabasePassword); + + mPassWord = new JPasswordField(); + mPassWord.setColumns(10); + panel.add(mPassWord); + + mConnectButton = new JButton("Connect", new ImageIcon(getClass().getResource("/repeat.png"))); + mConnectButton.addActionListener(this); + panel.add(mConnectButton); + panel.add(mWarningLabel); //progress bar @@ -104,10 +121,24 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen mProgressBar.setStringPainted(true); mainPanel.add(mProgressBar, BorderLayout.SOUTH); + + + return mainPanel; } public static void loadDatabase() { + + try { + Properties p = getProperties(); + mPassWord.setEnabled(! Boolean.parseBoolean(p.getProperty(SettingsPanel.SAVE_PASSWORD, "false"))); + if(! mPassWord.isEnabled()) + mPassWord.setText(p.getProperty(SettingsPanel.SERVER_PASSWORD)); + } catch (IOException e) { + e.printStackTrace(); + } + + mConnectButton.setEnabled(false); mProgressBar.setString("Connecting to database"); mProgressBar.setIndeterminate(true); java.util.concurrent.Executors.newSingleThreadExecutor().submit(new Runnable() { @@ -115,23 +146,30 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen //order count labels try { - db = new OrderDB(); + db = new OrderDB(mPassWord.isEnabled() ? new String(mPassWord.getPassword()) : null); orderCountLabel.setText(db.getCount()+""); - mWarningLabel.setText(null); + mWarningLabel.setText("Connected"); + mPassWord.setEnabled(false); } catch (SQLException e) { e.printStackTrace(); mWarningLabel.setText(e.getMessage()); mWarningLabel.setVisible(true); + mConnectButton.setEnabled(true); + orderCountLabel.setText(""); } catch (SocketException e) { mWarningLabel.setText(e.getMessage()); mWarningLabel.setVisible(true); + mConnectButton.setEnabled(true); + orderCountLabel.setText(""); } catch (NullPointerException e){ mWarningLabel.setText("Database not avilable"); mWarningLabel.setVisible(true); + mConnectButton.setEnabled(true); + orderCountLabel.setText(""); } catch (ClassNotFoundException e) { e.printStackTrace(); } - mProgressBar.setString(null); + mProgressBar.setString(mWarningLabel.getText()); mProgressBar.setIndeterminate(false); } }); @@ -178,6 +216,10 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen mProgressBar.setIndeterminate(false); } } + + if(e.getSource() == mConnectButton){ + loadDatabase(); + } } /** @@ -205,6 +247,21 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen mWarningLabel.setText(e.getMessage()); } } - } + } + + /** + * gets the properties from the save file + * @return + * @throws IOException + * @author ricky barrette + */ + private static Properties getProperties() throws IOException{ + // create and load default properties + Properties props = new Properties(); + FileInputStream in = new FileInputStream(".settings.propertys"); + props.load(in); + in.close(); + return props; + } } \ No newline at end of file diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SettingsPanel.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SettingsPanel.java index d235b08..6021666 100644 --- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SettingsPanel.java +++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SettingsPanel.java @@ -16,6 +16,7 @@ import java.util.Properties; import javax.swing.GroupLayout; import javax.swing.GroupLayout.Alignment; +import javax.swing.ImageIcon; import javax.swing.JButton; import javax.swing.JCheckBox; import javax.swing.JLabel; @@ -40,6 +41,8 @@ public class SettingsPanel extends JPanel implements ActionListener { public static final String SERVER_PORT_NUMBER = "server_port_number"; public static final String SERVER_USERNAME = "server_user_name"; public static final String SERVER_PASSWORD = "server_parrword"; + public static final String SAVE_PASSWORD = "save_password"; + public static final String DATABASE_NAME = "database_name"; private JTextField mServerLocation; private JTextField mPortNumber; private JTextField mUserName; @@ -48,6 +51,8 @@ public class SettingsPanel extends JPanel implements ActionListener { private JButton mSaveButton; private JCheckBox mUseRemoteDatabase; private Properties mProps; + private JTextField mDatabaseName; + private JCheckBox mSavePassword; /** * Creates a new SettingsPanel @@ -69,10 +74,10 @@ public class SettingsPanel extends JPanel implements ActionListener { //server port number mPortNumber = new JTextField(); + mPortNumber.setEnabled(false); mPortNumber.setColumns(10); - mPortNumber.setText("3306"); - JLabel lblMysql = new JLabel("MYsql serevr username:"); + JLabel lblMysql = new JLabel("MYsql server user name:"); JLabel lblMysqlServerPassword = new JLabel("MYsql server password:"); //username mUserName = new JTextField(); @@ -84,38 +89,58 @@ public class SettingsPanel extends JPanel implements ActionListener { //disable everything mServerLocation.setEnabled(false); - mPortNumber.setEnabled(false); mUserName.setEnabled(false); mUserPassword.setEnabled(false); //save button - mSaveButton = new JButton("Save"); + mSaveButton = new JButton("Save", new ImageIcon(getClass().getResource("/floppy_disc.png"))); mSaveButton.addActionListener(this); + mSavePassword = new JCheckBox("Save Password?"); + mSavePassword.addActionListener(this); + + JLabel lblDatabaseName = new JLabel("Database Name:"); + + mDatabaseName = new JTextField(); + mDatabaseName.setEnabled(false); + + mDatabaseName.setColumns(10); + //group layout bullshit GroupLayout groupLayout = new GroupLayout(this); groupLayout.setHorizontalGroup( groupLayout.createParallelGroup(Alignment.LEADING) + .addGroup(groupLayout.createSequentialGroup() + .addContainerGap() + .addComponent(mUseRemoteDatabase) + .addContainerGap(1087, Short.MAX_VALUE)) .addGroup(groupLayout.createSequentialGroup() .addContainerGap() .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addGroup(groupLayout.createSequentialGroup() - .addComponent(mUseRemoteDatabase) + .addComponent(mSavePassword) .addContainerGap()) .addGroup(groupLayout.createSequentialGroup() .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) .addComponent(lblMysqlServerLocation) .addComponent(lblMysqlServerPort) - .addComponent(lblMysql) - .addComponent(lblMysqlServerPassword)) + .addComponent(lblDatabaseName) + .addComponent(lblMysql)) .addPreferredGap(ComponentPlacement.RELATED) - .addGroup(groupLayout.createParallelGroup(Alignment.LEADING, false) - .addComponent(mServerLocation) - .addComponent(mSaveButton, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(mUserPassword) - .addComponent(mUserName) - .addComponent(mPortNumber)) - .addContainerGap(139, Short.MAX_VALUE)))) + .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING) + .addComponent(mPortNumber, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 1079, Short.MAX_VALUE) + .addComponent(mServerLocation, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 1079, Short.MAX_VALUE) + .addComponent(mDatabaseName, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 1079, Short.MAX_VALUE) + .addComponent(mUserName, Alignment.LEADING, GroupLayout.DEFAULT_SIZE, 1079, Short.MAX_VALUE)) + .addContainerGap()))) + .addGroup(groupLayout.createSequentialGroup() + .addContainerGap() + .addComponent(lblMysqlServerPassword) + .addPreferredGap(ComponentPlacement.RELATED) + .addGroup(groupLayout.createParallelGroup(Alignment.LEADING) + .addComponent(mUserPassword, GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE) + .addComponent(mSaveButton, GroupLayout.DEFAULT_SIZE, 949, Short.MAX_VALUE)) + .addContainerGap()) ); groupLayout.setVerticalGroup( groupLayout.createParallelGroup(Alignment.LEADING) @@ -131,16 +156,22 @@ public class SettingsPanel extends JPanel implements ActionListener { .addComponent(lblMysqlServerPort) .addComponent(mPortNumber, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED) + .addGroup(groupLayout.createParallelGroup(Alignment.TRAILING) + .addComponent(lblDatabaseName) + .addComponent(mDatabaseName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(ComponentPlacement.RELATED) .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) - .addComponent(lblMysql) - .addComponent(mUserName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) + .addComponent(mUserName, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE) + .addComponent(lblMysql)) + .addPreferredGap(ComponentPlacement.RELATED) + .addComponent(mSavePassword) .addPreferredGap(ComponentPlacement.RELATED) .addGroup(groupLayout.createParallelGroup(Alignment.BASELINE) .addComponent(lblMysqlServerPassword) .addComponent(mUserPassword, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)) .addPreferredGap(ComponentPlacement.RELATED) .addComponent(mSaveButton) - .addContainerGap(142, Short.MAX_VALUE)) + .addContainerGap(264, Short.MAX_VALUE)) ); setLayout(groupLayout); @@ -157,17 +188,22 @@ public class SettingsPanel extends JPanel implements ActionListener { mServerLocation.setEnabled(true); mPortNumber.setEnabled(true); mUserName.setEnabled(true); - mUserPassword.setEnabled(true); + mUserPassword.setEnabled( Boolean.parseBoolean(mProps.getProperty(SAVE_PASSWORD, "false"))); mUseRemoteDatabase.setSelected(true); + mDatabaseName.setEnabled(true); + mSavePassword.setEnabled(true); } - + + mDatabaseName.setText(mProps.getProperty(DATABASE_NAME, "Orders")); mServerLocation.setText(mProps.getProperty(SERVER_LOCATION)); - mPortNumber.setText(mProps.getProperty(SERVER_PORT_NUMBER));; - mUserName.setText(mProps.getProperty(SERVER_USERNAME));; + mPortNumber.setText(mProps.getProperty(SERVER_PORT_NUMBER, "3306")); + mUserName.setText(mProps.getProperty(SERVER_USERNAME)); + mSavePassword.setSelected(Boolean.parseBoolean(mProps.getProperty(SAVE_PASSWORD, "false"))); - } catch (IOException e) { e.printStackTrace(); + mDatabaseName.setText("Orders"); + mPortNumber.setText("3306"); } } @@ -187,49 +223,67 @@ public class SettingsPanel extends JPanel implements ActionListener { mProps.put(SERVER_LOCATION, mServerLocation.getText()); mProps.put(SERVER_PORT_NUMBER, mPortNumber.getText()); mProps.put(SERVER_USERNAME, mUserName.getText()); - mProps.put(SERVER_PASSWORD, new String(passwordEncryptor.encrypt(new String(mUserPassword.getPassword())))); - try { - FileOutputStream out = new FileOutputStream(".settings.propertys"); - mProps.store(out, "---No Comment---"); - out.close(); - } catch (FileNotFoundException e1) { - // TODO Auto-generated catch block - e1.printStackTrace(); - } catch (IOException e1) { - // TODO Auto-gene1rated catch block - e1.printStackTrace(); - } + mProps.put(DATABASE_NAME, mDatabaseName.getText()); + + if(mSavePassword.isSelected()) + mProps.put(SERVER_PASSWORD, new String(passwordEncryptor.encrypt(new String(mUserPassword.getPassword())))); + + writeProperties(mProps); } //use remote database checkbox if(e.getSource() == mUseRemoteDatabase){ mProps.put(IS_USING_REMOTE_SERVER, Boolean.toString(mUseRemoteDatabase.isSelected())); - try { - FileOutputStream out = new FileOutputStream(".settings.propertys"); - mProps.store(out, "---No Comment---"); - out.close(); - } catch (FileNotFoundException e1) { - e1.printStackTrace(); - } catch (IOException e1) { - e1.printStackTrace(); - } - + writeProperties(mProps); if(mUseRemoteDatabase.isSelected()){ mServerLocation.setEnabled(true); mPortNumber.setEnabled(true); mUserName.setEnabled(true); mUserPassword.setEnabled(true); + mDatabaseName.setEnabled(true); + mSavePassword.setEnabled(true); } else { mServerLocation.setEnabled(false); mPortNumber.setEnabled(false); mUserName.setEnabled(false); mUserPassword.setEnabled(false); + mDatabaseName.setEnabled(false); + mSavePassword.setEnabled(false); } } + if(e.getSource() == mSavePassword){ + mProps.setProperty(SAVE_PASSWORD, Boolean.toString(mSavePassword.isSelected())); + writeProperties(mProps); + if(mSavePassword.isSelected()){ + mUserPassword.setEnabled(true); + return; + } else { + mUserPassword.setEnabled(false); + return; + } + } + MainWindow.loadDatabase(); } + + /** + * writes the Properties to a persitent file + * @param p + * @author ricky barrette + */ + private void writeProperties(Properties p){ + try { + FileOutputStream out = new FileOutputStream(".settings.propertys"); + p.store(out, "---Order Processor Settings---"); + out.close(); + } catch (FileNotFoundException e1) { + e1.printStackTrace(); + } catch (IOException e1) { + e1.printStackTrace(); + } + } } \ No newline at end of file diff --git a/Order Processor/version infomation/changelog b/Order Processor/version infomation/changelog index 63fa1a1..70766ae 100644 --- a/Order Processor/version infomation/changelog +++ b/Order Processor/version infomation/changelog @@ -43,3 +43,8 @@ added new order stats to the order pane fixed processed order stats to only display new order stats when theres new orders added password encryption using jasypt +1.1.4 b 49 +added more options in settings allowing user to pick the database name. +added an option to allow the user to save their password +added a password field to the main panel to allow for easy password entry +added a connect button to the main panel \ No newline at end of file diff --git a/Order Processor/version infomation/version b/Order Processor/version infomation/version index f0c0f80..fcfc703 100644 --- a/Order Processor/version infomation/version +++ b/Order Processor/version infomation/version @@ -1 +1 @@ -1.1.3 b 48 \ No newline at end of file +1.1.4 b 49 \ No newline at end of file