001    package ps6;
002    
003    import java.io.*;
004    import java.util.*;
005    /**
006     * This class implements an interactive text-based interface for Husky Maps.
007     **/
008    
009    public class TextUI {
010    
011        public static void main(String args[]) {
012            try {
013                if (args.length == 0) {
014                    printUsage();
015                    return;
016                }
017    
018                TextUI textui;
019    
020                String databaseName = args[0];
021                List<String> zipcodes = new ArrayList<String>();
022                for (int i = 1; i<args.length; i++) {
023                    zipcodes.add(args[i]);
024                }
025    
026                textui = new TextUI(databaseName, zipcodes);
027    
028    
029                BufferedReader r = new BufferedReader(new InputStreamReader(System.in));
030                textui.interactiveLoop(r, System.out);
031    
032            } catch (IOException e) {
033                System.out.flush();
034                System.err.println(e.toString());
035                e.printStackTrace(System.err);
036    
037            }
038        }
039    
040        private static void printUsage() {
041            System.err.println("Usage:");
042            System.err.println("java ps6.TextUI directory-name  zipcode1 zipcode2 ...  zipcodeN");
043        }
044    
045        private final String databaseName;
046        private final List<String> zipcodes;
047    
048        /**
049         * @requires databaseName != null && zipcodes != null
050         *
051         * @effects Creates a new TextUI which loads from databaseName
052         * and limits its search to the zipcodes given, unless the list
053         * is empty or null, in which case it searches over all zipcodes.
054         **/
055        public TextUI(String databaseName, List<String> zipcodes) {
056            this.databaseName = databaseName;
057            this.zipcodes = new ArrayList<String>(zipcodes);
058        }
059    
060        /**
061         * TODO:Spec to be written by student.
062         **/
063        public void interactiveLoop(BufferedReader input, PrintStream output)
064            throws IOException
065        {
066            //loop:
067            //   read from input
068            //   find directions
069            //   write to output
070        }
071    
072    }