added export feature to search, so we can save *.cvs files to be used as reports

This commit is contained in:
2011-01-13 17:19:36 +00:00
parent b2da630680
commit 239218f6d4
3 changed files with 84 additions and 30 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -79,6 +79,10 @@ public class OrderPane extends JScrollPane {
updateTextPane("Possible sold:" + list.size(), TextStyle.BOLD); updateTextPane("Possible sold:" + list.size(), TextStyle.BOLD);
updateTextPane("Total sold: " + total, TextStyle.BOLD); updateTextPane("Total sold: " + total, TextStyle.BOLD);
} }
public String getText(){
return mOutput.getText();
}
/** /**
* adds the following string to the textpane * adds the following string to the textpane

View File

@@ -9,10 +9,10 @@ package com.TwentyCodes.java.OrderProcessor.UI;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.awt.event.MouseListener; import java.awt.event.MouseListener;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.ArrayList; import java.util.ArrayList;
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JCheckBox; import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JPanel; import javax.swing.JPanel;
@@ -28,6 +29,7 @@ import javax.swing.JTextField;
import com.TwentyCodes.java.OrderProcessor.Date; import com.TwentyCodes.java.OrderProcessor.Date;
import com.TwentyCodes.java.OrderProcessor.DatePickerListener; import com.TwentyCodes.java.OrderProcessor.DatePickerListener;
import com.TwentyCodes.java.OrderProcessor.FileFilter;
import com.TwentyCodes.java.OrderProcessor.InvalidDateFormatException; import com.TwentyCodes.java.OrderProcessor.InvalidDateFormatException;
import com.TwentyCodes.java.OrderProcessor.Main; import com.TwentyCodes.java.OrderProcessor.Main;
import com.TwentyCodes.java.OrderProcessor.Order; import com.TwentyCodes.java.OrderProcessor.Order;
@@ -37,7 +39,7 @@ import com.TwentyCodes.java.OrderProcessor.ProgressListener;
* This class will be the dialog that will ask the user for a specific make to show * This class will be the dialog that will ask the user for a specific make to show
* @author ricky barrette * @author ricky barrette
*/ */
public class SearchDialog extends JFrame implements ActionListener, ProgressListener, MouseListener, DatePickerListener, ItemListener { public class SearchDialog extends JFrame implements ActionListener, ProgressListener, MouseListener, DatePickerListener {
private static final long serialVersionUID = 1750326106927701404L; private static final long serialVersionUID = 1750326106927701404L;
private static final int END_DATE_RESULT = 1; private static final int END_DATE_RESULT = 1;
@@ -50,8 +52,10 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
private OrderPane mOrderPanel; private OrderPane mOrderPanel;
private JTextField mStartDateField; private JTextField mStartDateField;
private JTextField mEndDateField; private JTextField mEndDateField;
private boolean isExclusive = false;
private JCheckBox mExclusiveCheckBox; private JCheckBox mExclusiveCheckBox;
private JButton mExportButton;
private JFileChooser fc;
private JCheckBox fcCheckBox;
/** /**
* Creates a new ShowAllMakeDialog * Creates a new ShowAllMakeDialog
@@ -77,7 +81,6 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
//exclusive check box //exclusive check box
mExclusiveCheckBox = new JCheckBox("Exclusive Search"); mExclusiveCheckBox = new JCheckBox("Exclusive Search");
mExclusiveCheckBox.addItemListener(this);
panel.add(mExclusiveCheckBox); panel.add(mExclusiveCheckBox);
//start date //start date
@@ -99,6 +102,11 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
mOkButton.addActionListener(this); mOkButton.addActionListener(this);
panel.add(mOkButton); panel.add(mOkButton);
//export button
mExportButton = new JButton("Export", new ImageIcon(getClass().getResource("/floppy_disc.png")));
panel.add(mExportButton);
mExportButton.addActionListener(this);
//progress bar //progress bar
mProgressBar = new JProgressBar(); mProgressBar = new JProgressBar();
getContentPane().add(mProgressBar, BorderLayout.SOUTH); getContentPane().add(mProgressBar, BorderLayout.SOUTH);
@@ -107,6 +115,13 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
mOrderPanel = new OrderPane(); mOrderPanel = new OrderPane();
this.getContentPane().add(mOrderPanel, BorderLayout.CENTER); this.getContentPane().add(mOrderPanel, BorderLayout.CENTER);
//file chooser
fc = new JFileChooser();
fc.setFileFilter(new FileFilter());
fcCheckBox = new JCheckBox("Automatically append extention");
fcCheckBox.setSelected(true);
fc.setAccessory(fcCheckBox);
pack(); pack();
setVisible(true); setVisible(true);
} }
@@ -119,16 +134,54 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
*/ */
@Override @Override
public void actionPerformed(ActionEvent e) { public void actionPerformed(ActionEvent e) {
if(! mStartDateField.getText().isEmpty() && !mEndDateField.getText().isEmpty()) if(e.getSource() == mExportButton)
try { exportToCSV();
preformSearch(mTextField.getText(), new Date(mStartDateField.getText()), new Date(mEndDateField.getText()));
} catch (InvalidDateFormatException e1) {
e1.printStackTrace();
}
else else
preformSearch(mTextField.getText(), null, null); if(! mStartDateField.getText().isEmpty() && !mEndDateField.getText().isEmpty())
try {
preformSearch(mTextField.getText(), new Date(mStartDateField.getText()), new Date(mEndDateField.getText()));
} catch (InvalidDateFormatException e1) {
e1.printStackTrace();
}
else
preformSearch(mTextField.getText(), null, null);
} }
/**
* displays a JFileChooser dialog, and saves the current search results to an *.CSV file
* @return true is save was successfull
* @author ricky barrette
*/
private boolean exportToCSV() {
if(fc.showDialog(SearchDialog.this, "Export") == JFileChooser.APPROVE_OPTION){
StringBuffer sb = new StringBuffer("Order Number, Time & date, Product Name, Order Amount, Amount Charged, Financial Status, Fulfillment Status, Customer Name, Customer Email");
sb.append(mOrderPanel.getText());
try {
FileOutputStream theFile;
if (fcCheckBox.isSelected())
theFile = new FileOutputStream(new File(fc.getSelectedFile().toString()+".csv"));
else
theFile = new FileOutputStream(fc.getSelectedFile());
theFile.write(sb.toString().getBytes());
theFile.flush();
theFile.close();
} catch(IOException e) {
e.printStackTrace();
return false;
}
return true;
}
return false;
}
/**
* executes a concurrent database search
* @param search string
* @param start date
* @param end date
* @author ricky barrette
*/
private void preformSearch(final String search, final Date start, final Date end) { private void preformSearch(final String search, final Date start, final Date end) {
java.util.concurrent.Executors.newSingleThreadExecutor().submit(new Runnable() { java.util.concurrent.Executors.newSingleThreadExecutor().submit(new Runnable() {
public void run() { public void run() {
@@ -139,9 +192,9 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
ArrayList<Order> list = null; ArrayList<Order> list = null;
try { try {
if((start != null) && (end != null)){ if((start != null) && (end != null)){
list = MainWindow.db.search(search, start, end, isExclusive); list = MainWindow.db.search(search, start, end, mExclusiveCheckBox.isSelected());
} else{ } else{
list = MainWindow.db.search(search, isExclusive); list = MainWindow.db.search(search, mExclusiveCheckBox.isSelected());
} }
} catch (SQLException e) { } catch (SQLException e) {
@@ -180,8 +233,6 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
if(Main.DEBUG) if(Main.DEBUG)
System.out.println("search progress = "+ progress); System.out.println("search progress = "+ progress);
progress++; progress++;
if(mProgressBar.isIndeterminate()) { if(mProgressBar.isIndeterminate()) {
mProgressBar.setIndeterminate(false); mProgressBar.setIndeterminate(false);
@@ -200,7 +251,12 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
} }
} }
/**
* called when either of the date fields are clicked
* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
* @author ricky barrette
*/
@Override @Override
public void mouseClicked(MouseEvent e) { public void mouseClicked(MouseEvent e) {
if(e.getSource() == mEndDateField){ if(e.getSource() == mEndDateField){
@@ -240,6 +296,12 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
} }
/**
* called when the date picker returns a vaid date
* (non-Javadoc)
* @see com.TwentyCodes.java.OrderProcessor.DatePickerListener#onDatePicked(int, com.TwentyCodes.java.OrderProcessor.Date)
* @author ricky barrette
*/
@Override @Override
public void onDatePicked(int resultCode, Date date) { public void onDatePicked(int resultCode, Date date) {
switch(resultCode){ switch(resultCode){
@@ -252,16 +314,4 @@ public class SearchDialog extends JFrame implements ActionListener, ProgressList
} }
} }
}
@Override
public void itemStateChanged(ItemEvent e) {
if(e.getSource() == mExclusiveCheckBox)
if(e.getStateChange() == java.awt.event.ItemEvent.SELECTED)
isExclusive = true;
if(e.getStateChange() == java.awt.event.ItemEvent.DESELECTED)
isExclusive = false;
}
}