My assignment requires that I use exception handling to create a directory and file if necessary.
I was able to create a C:data\inventory.dat file, provided that there's an existing Data folder (directory) in my C: drive; however, I have a feeling that the assignment wants me to create an actual Data folder if one is not available. When I remove the Data folder from my C: drive, I get "C:\data\inventory.dat (The system cannot find the path specified)".
How am I to create able a folder that currently does not exist? I'm reading the java.sun website on the File class, the mkdirs methods, and the FileSystemView class; however, I'm having trouble implementing the requirements in my code (I wish API documentation was more understandable to me.). Can an example be provided? Thank you everyone; below is my code.
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.HeadlessException;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
public class InventoryGUI extends JFrame implements ActionListener,Serializable
{
private JTextArea textArea;
private JButton first,
next,
previous,
last,
add,
modify,
delete,
save,
search,
exit;
JLabel imageLabel;
private static Inventory inv = new Inventory();
/**
* @param arg0
* @throws HeadlessException
*/
public InventoryGUI( String arg0 ) throws HeadlessException
{
super( "Inventory GUI" );
textArea = new JTextArea( 250,30 );
JScrollPane scrollPane = new JScrollPane( textArea );
textArea.setEditable( false );
scrollPane.setVerticalScrollBarPolicy( JScrollPane.VERTICAL_SCROLLBAR_ALWAYS );
scrollPane.setPreferredSize( new Dimension( 250, 250 ) );
JPanel cp = new JPanel();
cp.setSize( 250, 40 );
cp.setLayout( new BorderLayout() );
cp.add( scrollPane,BorderLayout.CENTER );
JPanel buttonPaenl = new JPanel();
JPanel buttonPaenl1 = new JPanel();
first = new JButton( "First" );
first.addActionListener( this );
search = new JButton( "Search" );
search.addActionListener( this );
next = new JButton( "Next" );
next.addActionListener( this );
previous = new JButton( "Previous" );
previous.addActionListener( this );
last = new JButton( "Last" );
last.addActionListener( this );
add = new JButton( "Add" );
add.addActionListener( this );
modify = new JButton( "Modify" );
modify.addActionListener( this );
delete = new JButton( "Delete" );
delete.addActionListener( this );
save = new JButton( "Save" );
save.addActionListener( this );
exit = new JButton( "Exit" );
exit.addActionListener( this );
buttonPaenl.setLayout( new FlowLayout() );
buttonPaenl1.setLayout( new FlowLayout() );
buttonPaenl.add( first );
buttonPaenl.add( previous );
buttonPaenl.add( next );
buttonPaenl.add( last );
buttonPaenl1.add( add );
buttonPaenl1.add( modify );
buttonPaenl1.add( delete );
buttonPaenl1.add( save );
buttonPaenl1.add( search );
buttonPaenl1.add( exit );
cp.add( buttonPaenl,BorderLayout.SOUTH );
cp.add( buttonPaenl1,BorderLayout.NORTH );
ImageIcon icon = new ImageIcon( "logo.gif" );
imageLabel = new JLabel( icon, JLabel.CENTER );
cp.add( imageLabel, BorderLayout.EAST );
this.setContentPane( cp );
this.setTitle( " Week Nine Final Project: Inventory Program Part Six - Transformers Autobot Inventory ( More Than Meets the Eye o_0?! ) " );
this.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
this.textArea.setText(inv.getFirst());
this.setSize(400, 400);
this.pack();
this.setVisible( true );
}
@Override
public void actionPerformed( ActionEvent e )
{
// TODO Auto-generated method stub
if( e.getActionCommand().equals( "First" ) )
{
textArea.setText( inv.getFirst() );
}
if( e.getActionCommand().equals( "Next" ) )
{
textArea.setText(inv.getNext());
}
if( e.getActionCommand().equals( "Previous" ) )
{
textArea.setText( inv.getPrevious() );
}
if( e.getActionCommand().equals( "Last" ) )
{
textArea.setText(inv.getLast());
}
if( e.getActionCommand().equals( "Save" ) )
{
save();
}
if( e.getActionCommand().equals( "Exit" ) )
{
System.exit(0);
}
if( e.getActionCommand().equals( "Add" ) )
{
InventoryDialogue id = new InventoryDialogue( true," Add a new Inventory " );
}
if( e.getActionCommand().equals( "Modify" ) )
{
InventoryDialogue id = new InventoryDialogue( false," Modify Inventory " );
}
if( e.getActionCommand().equals( "Search" ) )
{
String s = JOptionPane.showInputDialog( null, " Enter Product Name ",null, 1 );
s = inv.Search(s);
if( s == null )
{
JOptionPane.showMessageDialog( this, " No Results Found " ) ;
}
else textArea.setText( s );
}
if( e.getActionCommand().equals( "Delete" ) )
{
inv.getproducts().remove( inv.index );
}
}
public void save()
{
File f = new File( "C:\\data\\inventory.dat" );
try
{
FileOutputStream out = new FileOutputStream( f );
try
{
ObjectOutputStream objectOut = new ObjectOutputStream( out );
objectOut.writeObject( inv );
}
catch (IOException e)
{
// TODO Auto-generated catch block
JOptionPane.showMessageDialog( null, e.getMessage() );
e.printStackTrace();
}
}
catch ( FileNotFoundException e )
{
// TODO Auto-generated catch block
JOptionPane.showMessageDialog( null, e.getMessage() );
e.printStackTrace();
}
}
public static Inventory getInv()
{
return inv;
}
public static void setInv( Inventory inv )
{
InventoryGUI.inv = inv;
}
/**
* @param args
*/
public static void main( String[] args )
{
InventoryGUI inventory = new InventoryGUI( "Inventory" );
}
}
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class InventoryDialogue extends JFrame implements ActionListener
{
private boolean status = false; //false is for modify
JTextField nameTextField,
unitTextField,
priceTextField;
JLabel nameLabel,
unitLabel,
priceLabel;
JPanel TextFields,
buttons;
JButton modify,
add;
public InventoryDialogue( Boolean stat, String title )
{
super( title );
status = stat;
JPanel but = new JPanel();
modify = new JButton( "Modify" );
modify.addActionListener( this );
add = new JButton( "Add" );
add.addActionListener( this );
but.add( add );
but.add( modify );
if( status == false )
{
add.setVisible( false );
}
else
{
modify.setVisible( false );
}
nameTextField = new JTextField( "", 20 );
unitTextField = new JTextField( "", 5 );
priceTextField = new JTextField( "" , 5 );
nameLabel = new JLabel( "Name" );
unitLabel = new JLabel( "Units" );
priceLabel = new JLabel( "Price per Unit" );
JPanel p = new JPanel();
p.setLayout( new FlowLayout() );
p.add( nameLabel );
p.add( nameTextField );
p.add( unitLabel );
p.add( unitTextField );
p.add( priceLabel );
p.add( priceTextField );
JPanel cp = new JPanel();
cp.setLayout( new BorderLayout() );
cp.add( p, BorderLayout.CENTER );
cp.add( but, BorderLayout.EAST );
this.setContentPane( cp );
this.setDefaultCloseOperation( JFrame.DISPOSE_ON_CLOSE );
this.pack();
this.setVisible( true );
}
@Override
public void actionPerformed( ActionEvent arg0 )
{
if( arg0.getActionCommand().equals( "Add" ) )
{
String name;
int units;
Double price;
name = nameTextField.getText();
try
{
units = Integer.parseInt( unitTextField.getText() );
}
catch ( NumberFormatException e )
{
JOptionPane.showMessageDialog( null, e.getMessage() );
e.printStackTrace();
return;
}
try
{
price = Double.parseDouble( priceTextField.getText() );
}
catch ( NumberFormatException e )
{
// TODO Auto-generated catch block
JOptionPane.showMessageDialog( null, e.getMessage() );
e.printStackTrace();
return;
}
InventoryGUI.getInv().getproducts().add( new ProductModified( name, InventoryGUI.getInv().products.size(),
units,price ) );
this.dispose();
}
if( arg0.getActionCommand().equals( "Modify" ) )
{
String name;
int units;
Double price;
name = nameTextField.getText();
try
{
units = Integer.parseInt( unitTextField.getText() );
}
catch ( NumberFormatException e )
{
JOptionPane.showMessageDialog( null,"Please Enter Valid Integers" );
e.printStackTrace();
return;
}
try
{
price = Double.parseDouble( priceTextField.getText() );
}
catch ( NumberFormatException e )
{
// TODO Auto-generated catch block
JOptionPane.showMessageDialog( null,"Please Enter Valid Price" );
//e.printStackTrace();
return;
}
InventoryGUI.getInv().getproducts().set( InventoryGUI.getInv().index,
new ProductModified( name, InventoryGUI.getInv().index, units, price ) );
this.dispose();
}
}
public static void main( String args[] )
{
InventoryDialogue idf = new InventoryDialogue( true,"cc" );
}
}
import java.text.Collator;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Locale;
import java.io.Serializable;
public class Inventory implements Serializable
{
private String inventoryName; // name of inventory
public String restockRate; // restock rate percentage
public double totalRestock;
public static int index;
public ArrayList < ProductModified > products = new ArrayList < ProductModified > ();
public Inventory()
{
products.add( new ProductModified( "No Sale Bot", 0, 1, 0.00 ) );
products.add( new ProductModified( "Optimus Prime", 7, 52, 160.00 ) );
products.add( new ProductModified( "BumbleeBee", 16, 61, 97.00 ) );
products.add( new ProductModified( "Ironhide", 25, 106, 88.00 ) );
products.add( new ProductModified( "Ratchet", 34, 125, 79.00 ) );
products.add( new ProductModified( "Jazz", 0, 124, 70.00 ) );
index = 0;
}
public void sort()
{
Locale loc = Locale.ENGLISH;
ProductModified Temp;
Collator col = Collator.getInstance( loc );
for ( int i = 0; i < products.size(); i++ )
{
for ( int j = i + 1; j < products.size(); j++ )
{
if( col.compare( products.get( i ).getAutobotName(), products.get( j ).getAutobotName() ) > 0 )
{
Temp = products.get( i );
products.set( i, products.get( j ) );
products.set( j, Temp );
}
}
}
}
public String getInventoryName()
{
return inventoryName;
}
public void setInventoryName( String inventoryName )
{
this.inventoryName = inventoryName;
}
public String getRestockRate()
{
return restockRate;
}
public void setRestockRate( String restockRate )
{
this.restockRate = restockRate;
}
public double getTotalRestock()
{
return totalRestock;
}
public void setTotalRestock( double totalRestock )
{
this.totalRestock = totalRestock;
}
public ArrayList < ProductModified > getproducts()
{
return products;
}
public void seproducts( ArrayList < ProductModified > products)
{
this.products = products;
}
public String toString()
{
String transformersSub = new String(" ");
transformersSub = "Welcome to the\n" + getInventoryName() + "!\n\n";
transformersSub = transformersSub + "Below is the available inventory:\n\n";
transformersSub = transformersSub + "The restock interest rate is at " + getRestockRate() + ".\n\n";
transformersSub = transformersSub + "Index\tProductModified #\t\t\tName\t\tUnits\t\tPrice\t\t";
transformersSub = transformersSub + "Unit Restock Value\t";
transformersSub = transformersSub + "Stock Value\t\t";
transformersSub = transformersSub + "Total ProductModified Restock\n";
Iterator < ProductModified > i = this.getproducts().iterator();
while(i.hasNext())
{
transformersSub = transformersSub + i.next();
}
return transformersSub;
}
public Double getTotal()
{
Double Total = 0.0;
ProductModified p;
Iterator < ProductModified > i = products.iterator();
while( i.hasNext() )
{
p = i.next();
Total = Total + p.getPrice() * p.getUnit();
}
return Total;
}
public String processOutPut( ProductModified p )
{
String out = "Welcome to the Transformers Autobot Toy Inventory\n\nTotal Inventory = "
+ this.getTotal() + "\nRestocking Fee = 5%"
+ "\n\nItem #\tName\tUnit\tPrice\tUnit Restock Value"
+ p;
return out;
}
public String getFirst()
{
index = 0;
return processOutPut( products.get(0) );
}
public String getLast()
{
index = products.size() - 1;
return processOutPut( products.get( products.size() - 1 ) );
}
public String getNext()
{
if( index == products.size() - 1 )
{
getFirst();
return getFirst();
}
else
{
index++;
return processOutPut( products.get( index ) );
}
}
public String getPrevious()
{
if( index == 0 )
{
return getLast();
}
else
return processOutPut(products.get(--index));
}
public String Search( String Search )
{
Iterator < ProductModified > i = products.iterator();
String te = null;
ProductModified p;
while( i.hasNext() )
{
p = i.next();
if( p.getAutobotName().equals( Search ) )
{
te = processOutPut( p );
}
}
return te;
}
}
import static java.lang.System.out;
import java.io.Serializable;
//class declaration for TransformersProduct
public class Product implements Serializable
{
public String autobotName; // array of autobot toy names
public int productNumber; // product # array ID for product
public int unit; // array of autobot toy units
public double price; // array of autobot prices
public double inventoryValue;
/**
* @param autobotName
* @param productNumber
* @param unit
* @param price
*/
public Product( String autobotName, int productNumber, int unit,
double price )
{
super();
this.autobotName = autobotName;
this.productNumber = productNumber;
this.unit = unit;
this.price = price;
}
public String getAutobotName()
{
return autobotName;
}
public void setAutobotName( String autobotName )
{
this.autobotName = autobotName;
}
public int getProductNumber()
{
return productNumber;
}
public void setProductNumber( int productNumber )
{
this.productNumber = productNumber;
}
public int getUnit()
{
return unit;
}
public void setUnit( int unit )
{
this.unit = unit;
}
public double getPrice()
{
return price;
}
public void setPrice( double price )
{
this.price = price;
}
public double getInventoryValue()
{
return inventoryValue;
}
public Double inventoryValue()
{
return this.getPrice() * this.getUnit();
}
public String toString()
{
return "\n"+this.productNumber+"\t"+this.autobotName+"\t"+this.unit +"\t"+this.price+ "\t";
}
}
import java.io.Serializable;
public class ProductModified extends Product implements Serializable
{
public ProductModified( String autobotName, int productNumber, int unit,
double price )
{
super( autobotName, productNumber, unit, price );
this.inventoryValue = this.inventoryValue();
// TODO Auto-generated constructor stub
}
public Double inventoryValue()
{
return this.getUnit() * this.getPrice() + this.getUnit() * this.getPrice() * 0.05;
}
public String toString()
{
return "\n" + this.productNumber + "\t" + this.autobotName
+ "\t" + this.unit + "\t" + this.price + "\t"
+ this.getInventoryValue();
}
}