Advertisement
Guest User

Untitled

a guest
Dec 6th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 6.20 KB | None | 0 0
  1. import java.io.File;
  2. import java.util.Scanner;
  3. import java.util.Arrays;
  4. import java.io.FileNotFoundException;
  5.  
  6. /**
  7.  * Create methods for creating array of networks and reading in a file.
  8.  *
  9.  * Project 10
  10.  * @author Logan Ridings
  11.  * @version 11/15/2019
  12.  */
  13. public class WirelessNetworkList {
  14.    
  15.    private WirelessNetwork[] networkList;
  16.    private String[] invalidRecords;
  17.    /**
  18.     * Constructor instansiates arrays with 0 size.
  19.     */
  20.    public WirelessNetworkList() {
  21.       networkList = new WirelessNetwork[0];
  22.       invalidRecords = new String[0];
  23.    }
  24.    /**
  25.     * Get the array of networks.
  26.     * @return a WirelessNetwork[]
  27.     */
  28.    public WirelessNetwork[] getWirelessNetworksArray() {
  29.       return networkList;
  30.    }
  31.    /**
  32.     * Get the array of invalid records.
  33.     * @return a String[]
  34.     */
  35.    public String[] getInvalidRecordsArray() {
  36.       return invalidRecords;
  37.    }
  38.    /**
  39.     * Add a network to the array.
  40.     * @param networkIn for adding a network
  41.     */
  42.    public void addWirelessNetwork(WirelessNetwork networkIn) {
  43.       networkList = Arrays.copyOf(networkList, networkList.length + 1);
  44.       networkList[networkList.length - 1] = networkIn;
  45.    }
  46.    /**
  47.     * Adds an invalid record to the array.
  48.     * @param invRecIn for adding string
  49.     */
  50.    public void addInvalidRecord(String invRecIn) {
  51.       invalidRecords = Arrays.copyOf(invalidRecords, invalidRecords.length + 1);
  52.       invalidRecords[invalidRecords.length - 1] = invRecIn;
  53.    }
  54.    /**
  55.     * Reads in file delimited by commas.
  56.     * @param fileNameIn for file
  57.     * @throws FileNotFoundException for Scanner on file
  58.     */
  59.    public void readFile(String fileNameIn) throws FileNotFoundException {
  60.       Scanner file = new Scanner(new File(fileNameIn));
  61.       String name;
  62.       double bandwidth, mfc, time, modemcost, datalimit;
  63.       while (file.hasNext()) {
  64.          Scanner line = new Scanner(file.nextLine());
  65.          line.useDelimiter(",");
  66.          switch (line.next().charAt(0)) {
  67.             case 'W':
  68.                name = line.next();
  69.                bandwidth = Double.parseDouble(line.next());
  70.                mfc = Double.parseDouble(line.next());
  71.                modemcost = Double.parseDouble(line.next());
  72.                WiFi wifi = new WiFi(name, bandwidth, mfc, modemcost);
  73.                addWirelessNetwork(wifi);
  74.                break;
  75.             case 'C':
  76.                name = line.next();
  77.                bandwidth = Double.parseDouble(line.next());
  78.                mfc = Double.parseDouble(line.next());
  79.                time = Double.parseDouble(line.next());
  80.                datalimit = Double.parseDouble(line.next());
  81.                Cellular cell = new Cellular(name, bandwidth, mfc,
  82.                      time, datalimit);
  83.                addWirelessNetwork(cell);
  84.                break;
  85.             case 'L':
  86.                name = line.next();
  87.                bandwidth = Double.parseDouble(line.next());
  88.                mfc = Double.parseDouble(line.next());
  89.                time = Double.parseDouble(line.next());
  90.                datalimit = Double.parseDouble(line.next());
  91.                LTE lte = new LTE(name, bandwidth, mfc, time, datalimit);
  92.                addWirelessNetwork(lte);
  93.                break;
  94.             case 'F':
  95.                name = line.next();
  96.                bandwidth = Double.parseDouble(line.next());
  97.                mfc = Double.parseDouble(line.next());
  98.                time = Double.parseDouble(line.next());
  99.                datalimit = Double.parseDouble(line.next());
  100.                FiveG g = new FiveG(name, bandwidth, mfc, time, datalimit);
  101.                addWirelessNetwork(g);
  102.                break;
  103.             default:
  104.                String badData = file.nextLine();
  105.                addInvalidRecord(badData);
  106.                break;
  107.          }
  108.       }
  109.    }
  110.    
  111.    /**
  112.     * Generates and returns report naturally ordered.
  113.     * @return a String
  114.     */
  115.    public String generateReport() {
  116.       String report = "-------------------------------\n"
  117.          + "Monthly Wireless Network Report\n"
  118.          + "-------------------------------\n";
  119.       for (int i = 0; i < networkList.length; i++) {
  120.          report += networkList[i].toString() + "\n\n";
  121.       }
  122.       return report;
  123.    }
  124.    /**
  125.     * Generates alphabetized report.
  126.     * @return a String
  127.     */
  128.    public String generateReportByName() {
  129.       String report = "-----------------------------------------\n"
  130.          + "Monthly Wireless Network Report (by Name)\n"
  131.          + "-----------------------------------------\n";
  132.       Arrays.sort(getWirelessNetworksArray());
  133.       for (int i = 0; i < networkList.length; i++) {
  134.          report += networkList[i].toString() + "\n\n";
  135.       }
  136.       return report;
  137.    }
  138.    /**
  139.     * Generates report ordered by bandwidth (low to high).
  140.     * @return a String
  141.     */
  142.    public String generateReportByBandwidth() {
  143.       String report = "----------------------------------------------\n"
  144.          + "Monthly Wireless Network Report (by Bandwidth)\n"
  145.          + "----------------------------------------------\n";
  146.       Arrays.sort(getWirelessNetworksArray(), new BandwidthComparator());
  147.       for (int i = 0; i < networkList.length; i++) {
  148.          report += networkList[i].toString() + "\n\n";
  149.       }
  150.       return report;
  151.    }
  152.    /**
  153.     * Generate report ordered by monthly cost (high to low).
  154.     * @return a String
  155.     */
  156.    public String generateReportByMonthlyCost() {
  157.       String report = "-------------------------------------------------\n"
  158.          + "Monthly Wireless Network Report (by Monthly Cost)\n"
  159.          + "-------------------------------------------------\n";
  160.       Arrays.sort(getWirelessNetworksArray(), new MonthlyCostComparator());
  161.       for (int i = 0; i < networkList.length; i++) {
  162.          report += networkList[i].toString() + "\n\n";
  163.       }
  164.       return report;
  165.    }
  166.    
  167.    public String generateInvalidRecordsReport() {
  168.       String report = "----------------------\n"
  169.          + "Invalid Records Report\n"
  170.          + "----------------------\n";
  171.       for (int i = 0; i < invalidRecords.length; i++) {
  172.          report += invalidRecords[i].toString() + "\n\n";
  173.       }
  174.       return report;
  175.    }
  176. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement