diff --git a/Order Processor/.classpath b/Order Processor/.classpath
index d0b16d0..10d15a7 100644
--- a/Order Processor/.classpath
+++ b/Order Processor/.classpath
@@ -1,7 +1,7 @@
-
+
diff --git a/Order Processor/lib/sqlitejdbc-v056.jar b/Order Processor/lib/sqlitejdbc-v056.jar
new file mode 100644
index 0000000..f95d90e
Binary files /dev/null and b/Order Processor/lib/sqlitejdbc-v056.jar differ
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 d8eb8ed..85e5cf1 100644
--- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java
+++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/DB/OrderDB.java
@@ -61,7 +61,7 @@ public class OrderDB {
try {
stat.executeUpdate(CREATE_TABLE);
} catch (SQLException e) {
- // TODO Auto-generated catch block
+ //most likely the table already exist
e.printStackTrace();
}
conn.close();
@@ -104,14 +104,17 @@ public class OrderDB {
*/
public ArrayList getAllOrders() throws SQLException, IOException, ClassNotFoundException {
+ int row = 1;
Connection conn = getConnection();
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery("select * from Orders;");
ArrayList list = new ArrayList();
-
+
ByteArrayInputStream bais;
ObjectInputStream ins;
while (rs.next()) {
+ if(mListener != null)
+ mListener.onProgressUpdate(row++);
bais = new ByteArrayInputStream(rs.getBytes("item"));
ins = new ObjectInputStream(bais);
list.add((Order) ins.readObject());
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 7e7139c..9a46d49 100644
--- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java
+++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/MainWindow.java
@@ -93,7 +93,7 @@ public class MainWindow extends JFrame implements ActionListener, ProgressListen
@Override
public void actionPerformed(ActionEvent e) {
if(e.getSource() == mShowAllButton){
- new ShowAllDialog(db.toString());
+ new ShowAllDialog();
}
if (e.getSource() == mSearchButton) {
diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/OrderPane.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/OrderPane.java
new file mode 100644
index 0000000..7077de6
--- /dev/null
+++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/OrderPane.java
@@ -0,0 +1,145 @@
+/**
+ * OrderPanel.java
+ * @date Jan 9, 2011
+ * @author ricky barrette
+ * @author Twenty Codes, LLC
+ */
+package com.TwentyCodes.java.OrderProcessor.UI;
+
+import java.awt.Color;
+import java.util.ArrayList;
+
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+import javax.swing.text.BadLocationException;
+import javax.swing.text.Style;
+import javax.swing.text.StyleConstants;
+import javax.swing.text.StyleContext;
+import javax.swing.text.StyledDocument;
+
+import com.TwentyCodes.java.OrderProcessor.Order;
+import com.TwentyCodes.java.OrderProcessor.ProgressListener;
+import com.TwentyCodes.java.OrderProcessor.Status;
+import com.TwentyCodes.java.OrderProcessor.TextStyle;
+
+/**
+ * a pane to display orders in color code.
+ * @author ricky barrette
+ */
+public class OrderPane extends JScrollPane {
+
+ private static final long serialVersionUID = -8762146025822173375L;
+ private JTextPane mOutput;
+ private ProgressListener mListener;
+
+ /**
+ * Creates a new OrderPanel
+ * @author ricky barrette
+ */
+ public OrderPane() {
+ mOutput = new JTextPane();
+ mOutput.setEditable(false);
+ setViewportView(mOutput);
+ }
+
+ /**
+ * displays orders
+ *
+ * @param list
+ * of orders to display
+ * @author ricky barrette
+ */
+ public void displayOrders(ArrayList list) {
+ mOutput.setText(null);
+ float possible = 0;
+ float actual = 0;
+ int total = 0;
+ for (int i = 0; i < list.size(); i++) {
+ if(mListener != null)
+ mListener.onProgressUpdate(i);
+ switch (list.get(i).getFinancialStatus()) {
+ case CANCELLED:
+ updateTextPane(list.get(i).toString(), TextStyle.RED);
+ break;
+ case CANCELLED_BY_GOOGLE:
+ updateTextPane(list.get(i).toString(), TextStyle.RED);
+ break;
+ default:
+ updateTextPane(list.get(i).toString(), TextStyle.REGULAR);
+ }
+
+ possible = possible + list.get(i).getOrderAmount();
+ actual = actual + list.get(i).getAmountCharged();
+ if (list.get(i).getFulfillmentStatus() == Status.DELIVERED)
+ total++;
+ }
+
+ updateTextPane("Possible sales: $" + possible, TextStyle.BOLD);
+ updateTextPane("Actual sales: $" + actual, TextStyle.BOLD);
+ updateTextPane("Possible sold:" + list.size(), TextStyle.BOLD);
+ updateTextPane("Total sold: " + total, TextStyle.BOLD);
+ }
+
+ /**
+ * adds the following string to the textpane
+ *
+ * @param string
+ * @author ricky barrette
+ */
+ private void updateTextPane(String string, TextStyle style) {
+ String[] initString = { "\n" + string };
+ String[] initStyles = { style.toString() };
+
+ StyledDocument doc = mOutput.getStyledDocument();
+ addStylesToDocument(doc);
+
+ // Load the text pane with styled text.
+ try {
+ for (int i = 0; i < initString.length; i++) {
+ doc.insertString(doc.getLength(), initString[i],
+ doc.getStyle(initStyles[i]));
+ }
+ } catch (BadLocationException ble) {
+ System.err.println("Couldn't insert initial text into text pane.");
+ }
+ mOutput.setDocument(doc);
+
+ }
+
+ /**
+ * adds supported styles to the document
+ *
+ * @param doc
+ * @author ricky barrette
+ */
+ protected void addStylesToDocument(StyledDocument doc) {
+ // Initialize some styles.
+ Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
+
+ Style regular = doc.addStyle("REGULAR", def);
+ StyleConstants.setFontFamily(def, "Arial");
+ StyleConstants.setFontSize(def, 14);
+
+ Style s = doc.addStyle("ITALIC", regular);
+ StyleConstants.setItalic(s, true);
+
+ s = doc.addStyle("BOLD", regular);
+ StyleConstants.setBold(s, true);
+
+ s = doc.addStyle("RED", regular);
+ StyleConstants.setForeground(s, Color.RED);
+
+ s = doc.addStyle("GREEN", regular);
+ StyleConstants.setForeground(s, Color.GREEN);
+ }
+
+ /**
+ * sets a listener for db progress updates
+ *
+ * @param listener
+ * @author ricky barrette
+ */
+ public void setOnProgressListerner(ProgressListener listener) {
+ mListener = listener;
+ }
+}
\ No newline at end of file
diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java
index 52c60ab..2b11315 100644
--- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java
+++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/SearchDialog.java
@@ -7,7 +7,6 @@
package com.TwentyCodes.java.OrderProcessor.UI;
import java.awt.BorderLayout;
-import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
@@ -19,20 +18,11 @@ import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
-import javax.swing.JScrollPane;
import javax.swing.JTextField;
-import javax.swing.JTextPane;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.Style;
-import javax.swing.text.StyleConstants;
-import javax.swing.text.StyleContext;
-import javax.swing.text.StyledDocument;
import com.TwentyCodes.java.OrderProcessor.Main;
import com.TwentyCodes.java.OrderProcessor.Order;
import com.TwentyCodes.java.OrderProcessor.ProgressListener;
-import com.TwentyCodes.java.OrderProcessor.Status;
-import com.TwentyCodes.java.OrderProcessor.TextStyle;
/**
* This class will be the dialog that will ask the user for a specific make to show
@@ -41,11 +31,11 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
private static final long serialVersionUID = 1750326106927701404L;
private JButton mOkButton;
- private JTextPane mOutput;
private JTextField mTextField;
private JProgressBar mProgressBar;
private boolean isProcessing = false;
private int mListSize;
+ private OrderPane mOrderPanel;
/**
* Creates a new ShowAllMakeDialog
@@ -63,6 +53,9 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
//add the JPanel to the frame, and display
getContentPane().add(panel, BorderLayout.NORTH);
+ mOrderPanel = new OrderPane();
+ this.getContentPane().add(mOrderPanel, BorderLayout.CENTER);
+
mTextField = new JTextField();
mTextField.setColumns(20);
mTextField.addActionListener(this);
@@ -71,15 +64,10 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
panel.add(mTextField);
panel.add(mOkButton);
- JScrollPane scrollPane = new JScrollPane();
- getContentPane().add(scrollPane, BorderLayout.CENTER);
-
mProgressBar = new JProgressBar();
getContentPane().add(mProgressBar, BorderLayout.SOUTH);
- mOutput = new JTextPane();
- mOutput.setEditable(false);
- scrollPane.setViewportView(mOutput);
+
pack();
setVisible(true);
}
@@ -102,10 +90,7 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
e1.printStackTrace();
}
MainWindow.db.setOnProgressListerner(SearchDialog.this);
- mOutput.setText(null);
- float possible = 0;
- float actual = 0;
- int total = 0;
+
ArrayList list = null;
try {
list = MainWindow.db.search(mTextField.getText());
@@ -123,29 +108,10 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
mProgressBar.setString("Processing Order: "+ 1 +" of "+ mListSize);
pack();
- for(int i = 0; i < list.size(); i++){
- onProgressUpdate(i);
- switch(list.get(i).getFinancialStatus()){
- case CANCELLED:
- updateTextPane(list.get(i).toString(), TextStyle.RED);
- break;
- case CANCELLED_BY_GOOGLE:
- updateTextPane(list.get(i).toString(), TextStyle.RED);
- break;
- default:
- updateTextPane(list.get(i).toString(), TextStyle.REGULAR);
- }
-
- possible = possible + list.get(i).getOrderAmount();
- actual = actual + list.get(i).getAmountCharged();
- if(list.get(i).getFulfillmentStatus() == Status.DELIVERED)
- total++;
- }
+ mOrderPanel.setOnProgressListerner(SearchDialog.this);
+ mOrderPanel.displayOrders(list);
- updateTextPane("Possible sales: $"+possible, TextStyle.BOLD);
- updateTextPane("Actual sales: $"+actual, TextStyle.BOLD);
- updateTextPane("Possible sold:"+ list.size(), TextStyle.BOLD);
- updateTextPane("Total sold: "+total, TextStyle.BOLD);
+ //todo updates order panel
isProcessing = false;
pack();
@@ -154,56 +120,7 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
}
- /**
- * adds the folloing string to the textpane
- * @param string
- * @author ricky barrette
- */
- private void updateTextPane(String string, TextStyle style) {
- String[] initString = {"\n"+ string };
- String[] initStyles = { style.toString() };
- StyledDocument doc = mOutput.getStyledDocument();
- addStylesToDocument(doc);
-
- // Load the text pane with styled text.
- try {
- for (int i = 0; i < initString.length; i++) {
- doc.insertString(doc.getLength(), initString[i],
- doc.getStyle(initStyles[i]));
- }
- } catch (BadLocationException ble) {
- System.err.println("Couldn't insert initial text into text pane.");
- }
- mOutput.setDocument(doc);
-
- }
-
- /**
- * adds supported styles to the document
- * @param doc
- * @author ricky barrette
- */
- protected void addStylesToDocument(StyledDocument doc) {
- //Initialize some styles.
- Style def = StyleContext.getDefaultStyleContext().getStyle(StyleContext.DEFAULT_STYLE);
-
- Style regular = doc.addStyle("REGULAR", def);
- StyleConstants.setFontFamily(def, "Arial");
- StyleConstants.setFontSize(def, 14);
-
- Style s = doc.addStyle("ITALIC", regular);
- StyleConstants.setItalic(s, true);
-
- s = doc.addStyle("BOLD", regular);
- StyleConstants.setBold(s, true);
-
- s = doc.addStyle("RED", regular);
- StyleConstants.setForeground(s, Color.RED);
-
- s = doc.addStyle("GREEN", regular);
- StyleConstants.setForeground(s, Color.GREEN);
- }
/**
diff --git a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java
index 68c665e..3aa896b 100644
--- a/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java
+++ b/Order Processor/src/com/TwentyCodes/java/OrderProcessor/UI/ShowAllDialog.java
@@ -9,27 +9,67 @@ package com.TwentyCodes.java.OrderProcessor.UI;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
+import javax.swing.JProgressBar;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+import com.TwentyCodes.java.OrderProcessor.ProgressListener;
+
/**
* This panel will be used to display all Vehicles in the VechicleDB
*/
-public class ShowAllDialog extends JFrame implements ActionListener {
+public class ShowAllDialog extends JFrame implements ActionListener, ProgressListener {
private static final long serialVersionUID = -8416144493079733535L;
-
+ private JProgressBar mProgressBar;
+
/**
* Creates a new ShowAllDialog
*/
- public ShowAllDialog(final String list){
+ public ShowAllDialog(){
super();
setTitle("Show All Orders");
+ JButton ok = new JButton("Ok");
+ ok.addActionListener(this);
+ final OrderPane output = new OrderPane();
+ mProgressBar = new JProgressBar();
+ getContentPane().add(mProgressBar, BorderLayout.SOUTH);
+ this.getContentPane().add(output, BorderLayout.CENTER);
+ this.getContentPane().add(ok, BorderLayout.NORTH);
+ try {
+ mProgressBar.setMaximum(MainWindow.db.getCount());
+ } catch (SQLException e1) {
+ e1.printStackTrace();
+ }
+ mProgressBar.setString("Loading from Database");
+ mProgressBar.setStringPainted(true);
+ MainWindow.db.setOnProgressListerner(this);
- initialize(list);
+ java.util.concurrent.Executors.newSingleThreadExecutor().submit(new Runnable() {
+ public void run() {
+ try {
+ output.displayOrders(MainWindow.db.getAllOrders());
+ } catch (SQLException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (ClassNotFoundException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+ });
+
+
+ pack();
+ setVisible(true);
}
/**
@@ -39,19 +79,9 @@ public class ShowAllDialog extends JFrame implements ActionListener {
super();
setTitle(title);
- initialize(body);
- }
-
- /**
- * initializes the dialog's components
- * @param body
- * @author ricky barrette
- */
- private void initialize(String body) {
JButton ok = new JButton("Ok");
ok.addActionListener(this);
-
JScrollPane scrollPane = new JScrollPane();
final JTextArea results = new JTextArea();
@@ -65,9 +95,19 @@ public class ShowAllDialog extends JFrame implements ActionListener {
pack();
setVisible(true);
}
+
@Override
public void actionPerformed(ActionEvent arg0) {
setVisible(false);
}
+
+ @Override
+ public void onProgressUpdate(int progress) {
+ mProgressBar.setValue(progress);
+ if(progress >= mProgressBar.getMaximum()){
+ this.pack();
+ mProgressBar.setString("Done");
+ }
+ }
}