From 8f0619d20f2673f9e1b7b9371f9452fda7055b5b Mon Sep 17 00:00:00 2001 From: YaFedImYaEatIm Date: Thu, 22 Sep 2016 00:02:23 +1200 Subject: [PATCH] Made EntryParser which will parse a single entry --- .../group9/Controller/EntryParser.java | 170 ++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 src/main/java/seng202/group9/Controller/EntryParser.java diff --git a/src/main/java/seng202/group9/Controller/EntryParser.java b/src/main/java/seng202/group9/Controller/EntryParser.java new file mode 100644 index 0000000..651226f --- /dev/null +++ b/src/main/java/seng202/group9/Controller/EntryParser.java @@ -0,0 +1,170 @@ +package seng202.group9.Controller; + +import javafx.scene.chart.PieChart; +import seng202.group9.Core.Airline; +import seng202.group9.Core.Airport; +import seng202.group9.Core.FlightPoint; +import seng202.group9.Core.Route; + +/** + * Created by Gondr on 21/09/2016. + */ +public class EntryParser { + + public EntryParser(){ + + } + + public Airline parseAirline(String name, String alias, String IATA, String ICAO, String callsign, String country, String active) throws DataException{ + if (name.equals("")){ + throw new DataException("Name cannot be Empty."); + } + //alias + if (alias.equals("\\N") || alias.equals("\\n")){ + alias = ""; + } + //IATA must be either empty, - or a 2 letter code + if (IATA.length() != 2 && IATA.length() != 1 && IATA.equals("-")){ + throw new DataException("IATA Code must be either empty or 2 letters."); + } + if (IATA.equals("-")){ + IATA = ""; + } + IATA = IATA.toUpperCase(); + //ICAO must be 3 letters or nothing + if (ICAO.length() != 3 && ICAO.length() != 0){ + throw new DataException("ICAO Code must be either 3 letters or empty."); + } + ICAO = ICAO.toUpperCase(); + //Active must be Y or N + if (!active.equals("Y") && !active.equals("N")){ + throw new DataException("Active must be Y or N."); + } + Airline successParse = new Airline(name, alias, IATA, ICAO, callsign, country, active); + return successParse; + } + + public Airport parseAirport(String name, String city, String country, String IATA_FFA, String ICAO, String latitude, String longitude, String altitude, String timezone, String DST, String olson) throws DataException{ + if (name.equals("")){ + throw new DataException("Name cannot be Empty."); + } + //IATA_FFA + if (IATA_FFA.length() != 3 && IATA_FFA.length() != 0){ + throw new DataException("IATA/FFA Code must be 3 letters long or blank."); + } + IATA_FFA = IATA_FFA.toUpperCase(); + //ICAO + if (ICAO.length() != 4 && ICAO.length() != 0){ + throw new DataException("ICAO must be 4 letters long or blank."); + } + //latitude + double lat; + try{ + lat = Double.parseDouble(latitude); + }catch (NumberFormatException e){ + throw new DataException("Latitude must be a Number"); + } + if (lat > 90 || lat < -90){ + throw new DataException("Latitude must be between -90 and 90 inclusive."); + } + //longitude + double lng; + try{ + lng = Double.parseDouble(longitude); + }catch (NumberFormatException e){ + throw new DataException("Longitude must be a Number"); + } + if (lng > 180 || lng < -180){ + throw new DataException("Longitude must be between -180 and 180 inclusive."); + } + //altitude + double alt; + try{ + alt = Double.parseDouble(altitude); + }catch (NumberFormatException e){ + throw new DataException ("Altitude must be a number"); + } + //timezone + double tz; + try{ + tz = Double.parseDouble(timezone); + }catch (NumberFormatException e){ + throw new DataException ("Timezone must be a number"); + } + if (tz > 14 || tz < -12){ + throw new DataException("Timezone must be between 14 and -12 UTC inclusive"); + } + //DST + if (!DST.equals("E") && !DST.equals("A") && !DST.equals("S") && !DST.equals("O") && !DST.equals("Z") && !DST.equals("N") && !DST.equals("U")){ + throw new DataException ("TDST must be either E (Europe), A (US/Canada), S (South America), O (Australia), Z (New Zealand), N (None) or U (Unknown)"); + } + if (olson.equals("\\N") || olson.equals("\\n")){ + olson.equals(""); + } + Airport successParse = new Airport(name, city, country, IATA_FFA, ICAO, lat, lng, alt); + return successParse; + } + + public Route parseRoute(String airline, String source, String dest, String code, String stops, String equip) throws DataException { + if (airline.length() != 2 && airline.length() != 3){ + throw new DataException("Airline must be 2 letters (IATA Code) or 3 letters (ICAO Code)."); + } + if (source.length() != 3 && source.length() != 4){ + throw new DataException("Source Airport must be 3 letters (IATA Code) or 4 letters (ICAO Code)."); + } + if (dest.length() != 3 && dest.length() != 4){ + throw new DataException("Destination Airport must be 3 letters (IATA Code) or 4 letters (ICAO Code)."); + } + if (!code.equals("Y") && !code.equals("")){ + throw new DataException("Codeshare must be Y or empty."); + } + int stop; + try{ + stop = Integer.parseInt(stops); + }catch (NumberFormatException e){ + throw new DataException ("Number of Stops must be a number."); + } + if (stop < 0){ + throw new DataException("Number of Stops must be more than 0."); + } + Route successParse = new Route(airline, source, dest, code, stop, equip); + return successParse; + } + + public FlightPoint parsePoint(String name, String type, String altitude, String latitude, String longitude) throws DataException{ + type = type.toUpperCase(); + if (!type.equals("APT") && !type.equals("VOR") && !type.equals("FIX") && !type.equals("NDB") && !type.equals("LATLON")){ + throw new DataException("Type of flight must be either APT, VOR, FIX, NDB or LATLON"); + } + //latitude + double lat; + try{ + lat = Double.parseDouble(latitude); + }catch (NumberFormatException e){ + throw new DataException("Latitude must be a Number"); + } + if (lat > 90 || lat < -90){ + throw new DataException("Latitude must be between -90 and 90 inclusive."); + } + //longitude + double lng; + try{ + lng = Double.parseDouble(longitude); + }catch (NumberFormatException e){ + throw new DataException("Longitude must be a Number"); + } + if (lng > 180 || lng < -180){ + throw new DataException("Longitude must be between -180 and 180 inclusive."); + } + //altitude + double alt; + try{ + alt = Double.parseDouble(altitude); + }catch (NumberFormatException e){ + throw new DataException ("Altitude must be a number"); + } + FlightPoint parseSuccess = new FlightPoint(type, name, alt, lat, lng); + return parseSuccess; + } + +}