423 lines
10 KiB
Java
423 lines
10 KiB
Java
/**
|
|
* <PRE>
|
|
* AircraftCarrier.java
|
|
*
|
|
* Revisions: 1.0 Oct. 18, 2002
|
|
* Created the AircraftCarrier class
|
|
* 1.1 Oct. 27, 2002
|
|
* Compiled, Finished, Commented
|
|
* 1.2 Oct. 28,2002
|
|
* Whoever writes these stupid .nfo's needs to be more specific
|
|
* added recode to fix the way launchLog.txt is written
|
|
*
|
|
*
|
|
* </PRE>
|
|
*
|
|
* Collaboration Statement:
|
|
* I worked on the homework assignment alone, using only
|
|
* course materials.
|
|
*
|
|
* Created with JCreatorLE, some indents are off when viewed through notepad
|
|
* or EMACS
|
|
*
|
|
* @author <A HREF="mailto:gtg184g@mail.gatech.edu">Jose Manuel Caban</A>
|
|
* @version Version 1.1, Oct. 27, 2002
|
|
*/
|
|
|
|
import java.io.*;
|
|
import java.util.*;
|
|
|
|
public class AircraftCarrier {
|
|
|
|
private final String FILE_NAME = "aircraftFile.txt";
|
|
private BST aircraftBST;
|
|
private boolean StrikePackageReady;
|
|
private static final String MENU = (
|
|
"1) Create New Strike Package\n"+
|
|
"2) Find Aircraft\n"+
|
|
"3) Throw Aircraft Overboard\n"+
|
|
"4) Print Strike Package to file\n"+
|
|
"5) Launch Aircraft\n"+
|
|
"6) Quit\n");
|
|
|
|
private BufferedReader KB_IN=
|
|
new BufferedReader(new InputStreamReader(System.in));
|
|
|
|
private Heap launchQueue; //holds the aircraft ordered by LaunchPriority
|
|
|
|
//change to false to remove prettiness of console
|
|
private static final boolean bPretty = true;
|
|
|
|
////////////////
|
|
//Constructors//
|
|
////////////////
|
|
|
|
/**
|
|
*Default Constructor
|
|
*starts menu
|
|
*/
|
|
public AircraftCarrier(){
|
|
aircraftBST = new BST();
|
|
StrikePackageReady = false;
|
|
doMenu();
|
|
}
|
|
|
|
///////////
|
|
//Methods//
|
|
///////////
|
|
|
|
/**
|
|
*Read Input
|
|
*/
|
|
private String readLine(){
|
|
String KB_INPUT ="";
|
|
|
|
try{
|
|
KB_INPUT = KB_IN.readLine();
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println("IOException in readLine()");
|
|
}
|
|
|
|
return KB_INPUT;
|
|
|
|
}//end readText(String,int)
|
|
|
|
/**
|
|
*Prompt user for Aircraft and then output its specifics
|
|
*/
|
|
public void findAircraft(){
|
|
|
|
if(!StrikePackageReady){
|
|
System.out.println("Strike Package not Ready");
|
|
return;
|
|
}
|
|
|
|
String KB_INPUT;
|
|
|
|
System.out.println("Please enter the a plane to search for: ");
|
|
KB_INPUT = readLine();
|
|
|
|
Aircraft craft = new Aircraft(KB_INPUT);
|
|
|
|
if(aircraftBST.find(craft) == null){
|
|
System.out.println("No Aircraft Found");
|
|
}
|
|
else{
|
|
System.out.println(aircraftBST.find(craft));
|
|
}
|
|
}//end findAircraft()
|
|
|
|
/**
|
|
*Throws a given aircraft overboard
|
|
*/
|
|
private void throwAircraftOverboard(){
|
|
//On a side note, did you guys consult the Navy about this program?
|
|
//I really don't think it behooves the Navy to throw their aircraft
|
|
//overboard
|
|
//but I could be going out on a limb here too
|
|
String KB_INPUT;
|
|
|
|
if(!StrikePackageReady){
|
|
System.out.println("Strike Package not Ready");
|
|
return;
|
|
}
|
|
|
|
System.out.println("Please enter the a plane to throw overboard: ");
|
|
KB_INPUT = readLine();
|
|
|
|
Comparable temp = aircraftBST.remove(new Aircraft(KB_INPUT));
|
|
|
|
if(temp == null){
|
|
System.out.println("No removal made");
|
|
}
|
|
else{
|
|
System.out.println((Aircraft)temp);
|
|
}
|
|
}
|
|
|
|
/**
|
|
*Reads the aircraft from file and adds them to the program
|
|
*/
|
|
private void createNewStrikePackage(){
|
|
BufferedReader br;
|
|
try{
|
|
br = new BufferedReader(new FileReader(FILE_NAME));
|
|
}
|
|
catch(FileNotFoundException fnfe){
|
|
System.err.println(FILE_NAME + " not found");
|
|
return;
|
|
}
|
|
catch(Exception e){
|
|
System.err.println(e);
|
|
return;
|
|
}
|
|
|
|
String aircraft = "";
|
|
try{
|
|
boolean bDone = false;
|
|
while(!bDone){
|
|
String temp = br.readLine();
|
|
|
|
if(temp == null){
|
|
bDone = true;
|
|
}
|
|
else{
|
|
aircraft+=" "+temp;
|
|
}
|
|
}
|
|
/*aircraft += br.readLine() while <- br.readLine() != null*/
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
return;
|
|
}
|
|
|
|
StringTokenizer st = new StringTokenizer(aircraft);
|
|
while(st.hasMoreTokens()){
|
|
aircraftBST.add(new Aircraft(
|
|
st.nextToken(),
|
|
st.nextToken(),
|
|
st.nextToken(),
|
|
Integer.parseInt(st.nextToken())
|
|
));
|
|
}
|
|
try{
|
|
br.close();
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
return;
|
|
}
|
|
|
|
StrikePackageReady = true;
|
|
}//end createNewStrikePackage()
|
|
|
|
/**
|
|
*Writes the current aircraft to file
|
|
*/
|
|
private void printStrikePackage(){
|
|
FileWriter fw;
|
|
PrintWriter pw;
|
|
|
|
//init fw
|
|
try{
|
|
fw = new FileWriter("strikePackage.txt");
|
|
}
|
|
catch(FileNotFoundException fnfe){
|
|
System.err.println(fnfe);
|
|
return;
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
return;
|
|
}
|
|
|
|
//init pw
|
|
pw = new PrintWriter(fw);
|
|
|
|
|
|
aircraftBST.writeAircraft(aircraftBST,pw);
|
|
|
|
try{
|
|
pw.flush();
|
|
fw.close();
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
}
|
|
}//end printStrikePackage()
|
|
|
|
/*************************************************************/
|
|
|
|
/***************/
|
|
//Phase 5 stuff//
|
|
/***************/
|
|
|
|
//private Heap launchQueue //restated for coherency
|
|
|
|
/**
|
|
*writes the aircraft to launchLog.txt and sends them off to battle
|
|
*/
|
|
private void launchAircraft(){
|
|
launchQueue = new Heap();
|
|
|
|
aircraftBST.createLaunchQueue(aircraftBST,launchQueue);
|
|
aircraftBST = null;
|
|
|
|
FileWriter fw;
|
|
PrintWriter pw;
|
|
|
|
//init fw
|
|
try{
|
|
fw = new FileWriter("launchLog.txt");
|
|
}
|
|
catch(FileNotFoundException fnfe){
|
|
System.err.println(fnfe);
|
|
return;
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
return;
|
|
}
|
|
|
|
//init pw
|
|
pw = new PrintWriter(fw);
|
|
|
|
while(!launchQueue.isEmpty()){
|
|
Aircraft temp = (Aircraft)(((BSTNode)launchQueue.remove()).getData());
|
|
|
|
//old code for the printing of file
|
|
/*String strTemp = temp.getModel() + " " + temp.getNickname() + " " +
|
|
temp.getRole() + " " + temp.getLaunchPriority();
|
|
pw.println(strTemp);*/
|
|
|
|
//new code
|
|
pw.println(temp);
|
|
|
|
/*
|
|
to be honest, I feel the way I did this, the old code, makes more
|
|
sense than writing "An Aircraft of type blah balh blah" to a file
|
|
you can reload the file just as easily as aircraftFile.txt.
|
|
For future TA meetings, please bring up the fact that its annoying
|
|
to rely on the newgroups (not .announce, the other ones) to find
|
|
things that should be clear in the instructions to begin with.*/
|
|
}
|
|
|
|
try{
|
|
pw.flush();
|
|
fw.close();
|
|
}
|
|
catch(IOException ioe){
|
|
System.err.println(ioe);
|
|
}
|
|
StrikePackageReady = false;
|
|
}//end launchAircraft()
|
|
|
|
/**
|
|
*Writes a menu to screen that runs until the user chooses to quit
|
|
*/
|
|
private void doMenu(){
|
|
boolean quit = false;
|
|
do{
|
|
System.out.println(MENU);
|
|
try{
|
|
|
|
int temp = Integer.parseInt(readLine());
|
|
switch(temp){
|
|
case 1:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
System.out.println(" * Creating new StikePackage...");
|
|
}
|
|
createNewStrikePackage();
|
|
if(bPretty){
|
|
System.out.println(" * Done.\n\n");
|
|
}
|
|
break;
|
|
|
|
case 2:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
System.out.println(" * Find Aircraft v1.1:");
|
|
}
|
|
findAircraft();
|
|
if(bPretty){
|
|
System.out.println(" * Done.\n\n");
|
|
}
|
|
break;
|
|
|
|
case 3:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
System.out.println(" * Throw Aircraft Overboard v1.1:");
|
|
}
|
|
throwAircraftOverboard();
|
|
if(bPretty){
|
|
System.out.println(" * Done.\n\n");
|
|
}
|
|
break;
|
|
|
|
case 4:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
System.out.println(" * Writing StikePackage to File...");
|
|
}
|
|
printStrikePackage();
|
|
if(bPretty){
|
|
System.out.println(" * Done.\n\n");
|
|
}
|
|
break;
|
|
|
|
case 5:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
System.out.println(" * Launching Aircraft...");
|
|
}
|
|
launchAircraft();
|
|
if(bPretty){
|
|
System.out.println(" * Done.\n\n");
|
|
}
|
|
break;
|
|
|
|
case 6:
|
|
if(bPretty){
|
|
System.out.println("\n\n\n\n/************************");
|
|
}
|
|
System.out.println("Thank you for using pseudo-Aircraft"+
|
|
"Carrier Version 1.1, send $20 to gtg184g for the"+
|
|
" full version.\n");
|
|
if(bPretty){
|
|
System.out.println(" * Done.");
|
|
}
|
|
quit = true;
|
|
break;
|
|
default:
|
|
System.out.println("Try Again, 1-6");
|
|
break;
|
|
}
|
|
}
|
|
catch(NumberFormatException nfe){
|
|
System.out.println("Please try again");
|
|
}
|
|
}while(!quit);
|
|
}//end doMenu()
|
|
|
|
|
|
/**
|
|
* Debugging main for class AircraftCarrier.
|
|
* This method will rigorously test my code.
|
|
*
|
|
* <br><br>
|
|
* @param args a String array of command line arguments.
|
|
*/
|
|
public static void main(String[] args) {
|
|
AircraftCarrier bob = new AircraftCarrier();
|
|
|
|
/*bob.aircraftBST = new BST();
|
|
bob.aircraftBST.add(new Aircraft("F-14","Tomcat","Interceptor",8));
|
|
|
|
bob.StrikePackageReady = false;
|
|
bob.findAircraft();
|
|
|
|
bob.StrikePackageReady = true;
|
|
bob.findAircraft();
|
|
bob.throwAircraftOverboard();
|
|
bob.aircraftBST.outputTree();
|
|
|
|
System.out.println("\nTesting createNewStrikePackage()\n");
|
|
bob.createNewStrikePackage();
|
|
|
|
bob.aircraftBST.outputTree();
|
|
bob.findAircraft();
|
|
bob.printStrikePackage();
|
|
|
|
bob.launchAircraft();
|
|
System.out.println(bob.aircraftBST);
|
|
System.out.println(bob.launchQueue);*/
|
|
|
|
|
|
}// end of main(String[] args)
|
|
|
|
}// end of class AircraftCarrier
|