Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.File;
- import java.util.Scanner;
- import java.util.Arrays;
- import java.io.FileNotFoundException;
- /**
- * Create methods for creating array of networks and reading in a file.
- *
- * Project 10
- * @author Logan Ridings
- * @version 11/15/2019
- */
- public class WirelessNetworkList {
- private WirelessNetwork[] networkList;
- private String[] invalidRecords;
- /**
- * Constructor instansiates arrays with 0 size.
- */
- public WirelessNetworkList() {
- networkList = new WirelessNetwork[0];
- invalidRecords = new String[0];
- }
- /**
- * Get the array of networks.
- * @return a WirelessNetwork[]
- */
- public WirelessNetwork[] getWirelessNetworksArray() {
- return networkList;
- }
- /**
- * Get the array of invalid records.
- * @return a String[]
- */
- public String[] getInvalidRecordsArray() {
- return invalidRecords;
- }
- /**
- * Add a network to the array.
- * @param networkIn for adding a network
- */
- public void addWirelessNetwork(WirelessNetwork networkIn) {
- networkList = Arrays.copyOf(networkList, networkList.length + 1);
- networkList[networkList.length - 1] = networkIn;
- }
- /**
- * Adds an invalid record to the array.
- * @param invRecIn for adding string
- */
- public void addInvalidRecord(String invRecIn) {
- invalidRecords = Arrays.copyOf(invalidRecords, invalidRecords.length + 1);
- invalidRecords[invalidRecords.length - 1] = invRecIn;
- }
- /**
- * Reads in file delimited by commas.
- * @param fileNameIn for file
- * @throws FileNotFoundException for Scanner on file
- */
- public void readFile(String fileNameIn) throws FileNotFoundException {
- Scanner file = new Scanner(new File(fileNameIn));
- String name;
- double bandwidth, mfc, time, modemcost, datalimit;
- while (file.hasNext()) {
- Scanner line = new Scanner(file.nextLine());
- line.useDelimiter(",");
- switch (line.next().charAt(0)) {
- case 'W':
- name = line.next();
- bandwidth = Double.parseDouble(line.next());
- mfc = Double.parseDouble(line.next());
- modemcost = Double.parseDouble(line.next());
- WiFi wifi = new WiFi(name, bandwidth, mfc, modemcost);
- addWirelessNetwork(wifi);
- break;
- case 'C':
- name = line.next();
- bandwidth = Double.parseDouble(line.next());
- mfc = Double.parseDouble(line.next());
- time = Double.parseDouble(line.next());
- datalimit = Double.parseDouble(line.next());
- Cellular cell = new Cellular(name, bandwidth, mfc,
- time, datalimit);
- addWirelessNetwork(cell);
- break;
- case 'L':
- name = line.next();
- bandwidth = Double.parseDouble(line.next());
- mfc = Double.parseDouble(line.next());
- time = Double.parseDouble(line.next());
- datalimit = Double.parseDouble(line.next());
- LTE lte = new LTE(name, bandwidth, mfc, time, datalimit);
- addWirelessNetwork(lte);
- break;
- case 'F':
- name = line.next();
- bandwidth = Double.parseDouble(line.next());
- mfc = Double.parseDouble(line.next());
- time = Double.parseDouble(line.next());
- datalimit = Double.parseDouble(line.next());
- FiveG g = new FiveG(name, bandwidth, mfc, time, datalimit);
- addWirelessNetwork(g);
- break;
- default:
- String badData = file.nextLine();
- addInvalidRecord(badData);
- break;
- }
- }
- }
- /**
- * Generates and returns report naturally ordered.
- * @return a String
- */
- public String generateReport() {
- String report = "-------------------------------\n"
- + "Monthly Wireless Network Report\n"
- + "-------------------------------\n";
- for (int i = 0; i < networkList.length; i++) {
- report += networkList[i].toString() + "\n\n";
- }
- return report;
- }
- /**
- * Generates alphabetized report.
- * @return a String
- */
- public String generateReportByName() {
- String report = "-----------------------------------------\n"
- + "Monthly Wireless Network Report (by Name)\n"
- + "-----------------------------------------\n";
- Arrays.sort(getWirelessNetworksArray());
- for (int i = 0; i < networkList.length; i++) {
- report += networkList[i].toString() + "\n\n";
- }
- return report;
- }
- /**
- * Generates report ordered by bandwidth (low to high).
- * @return a String
- */
- public String generateReportByBandwidth() {
- String report = "----------------------------------------------\n"
- + "Monthly Wireless Network Report (by Bandwidth)\n"
- + "----------------------------------------------\n";
- Arrays.sort(getWirelessNetworksArray(), new BandwidthComparator());
- for (int i = 0; i < networkList.length; i++) {
- report += networkList[i].toString() + "\n\n";
- }
- return report;
- }
- /**
- * Generate report ordered by monthly cost (high to low).
- * @return a String
- */
- public String generateReportByMonthlyCost() {
- String report = "-------------------------------------------------\n"
- + "Monthly Wireless Network Report (by Monthly Cost)\n"
- + "-------------------------------------------------\n";
- Arrays.sort(getWirelessNetworksArray(), new MonthlyCostComparator());
- for (int i = 0; i < networkList.length; i++) {
- report += networkList[i].toString() + "\n\n";
- }
- return report;
- }
- public String generateInvalidRecordsReport() {
- String report = "----------------------\n"
- + "Invalid Records Report\n"
- + "----------------------\n";
- for (int i = 0; i < invalidRecords.length; i++) {
- report += invalidRecords[i].toString() + "\n\n";
- }
- return report;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement