diff --git a/labs/2/Main.java b/labs/2/Main.java index 97a3ca3..13a03d6 100644 --- a/labs/2/Main.java +++ b/labs/2/Main.java @@ -1,18 +1,19 @@ import java.util.Objects; +import java.lang.Exception; import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; -import java.io.FileWriter; import java.net.URL; import java.io.BufferedInputStream; +import java.io.FileOutputStream; public class Main { - private boolean disable_networking = false; - public void main(String[] args) { + public static void main(String[] args) { boolean help_enqueued = false; + boolean allow_networking = true; int verbosity = 1; int p = 0; @@ -20,13 +21,14 @@ public class Main { try { if (Objects.equals(args[p], "-h")) { help_enqueued = true; + p += 1; } else if (Objects.equals(args[p], "-v")) { verbosity = Integer.parseInt(args[p+1]); p += 2; } else if (Objects.equals(args[p], "--offline")) { - disable_networking = true; + allow_networking = false; p += 2; } else { @@ -42,48 +44,53 @@ public class Main { } if (help_enqueued) { - printHelp(); + printHelp(allow_networking); System.exit(0); } } - public fetchResource(String remote_url, String output_filename) { - BufferedInputStream in = new BufferedInputStream(new URL(remote_url).openStream()); - FileOutputStream fileOutputStream = new FileOutputStream() - - byte dataBuffer[] = new byte[1024]; - int bytesRead; - while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) { - fileOutputStream.write(dataBuffer, 0, bytesRead); + private static void fetchResource(String remote_url, String output_filename) { + try { + BufferedInputStream in = new BufferedInputStream(new URL(remote_url).openStream()); + FileOutputStream fileOutputStream = new FileOutputStream(output_filename); + + byte dataBuffer[] = new byte[1024]; + int bytesRead; + while ((bytesRead = in.read(dataBuffer, 0, 1024)) != -1) { + fileOutputStream.write(dataBuffer, 0, bytesRead); + } + } catch (Exception e) { + System.out.println("[ERROR] Failed to fetch resource " + output_filename + "from " + remote_url + " due to the following exception: " + e); } } - public printHelp() { - String help_text = ""; - + private static void printHelp(boolean allow_net) { try { File help_file = new File("src/help.txt"); - Scanner help_file_scanner = new Scanner(help_file); - } catch (FileNotFoundException e) { - System.err.println("[WARN] Help file missing."); - if (!disable_networking) { - System.err.println("[INFO] Trying to recover it from the git server"); - fetchResource("http://139.162.162.130:3000/", "src/help.txt"); - File help_file = new File("src/help.txt"); - Scanner help_file_scanner = new Scanner(help_file); - } else { - System.err.println("[INFO] --offline flag is set, not recovering"); - System.exit(1); + if (!help_file.exists()) { + System.err.println("[WARN] Help file is missing."); + if (allow_net) { + System.err.println("[INFO] Trying to recover it from the git server"); + fetchResource("http://139.162.162.130:3000/dymik739/oop-labs-collection/raw/branch/lab2-dev/labs/2/src/help.txt", "src/help.txt"); + } else { + System.err.println("[INFO] Networking is disabled, not recovering"); + System.exit(1); + } } + + Scanner help_file_scanner = new Scanner(help_file); + String help_text = ""; + + while (help_file_scanner.hasNextLine()) { + help_text += help_file_scanner.nextLine(); + } + + help_file_scanner.close(); + System.out.println(help_text); + } catch (Exception e) { + System.out.println("[ERROR] Failed to read help due to the following exception: " + e); + System.exit(1); } - - while (help_file_scanner.hasNextLine()) { - help_text += help_file_scanner.nextLine(); - } - - help_file_scanner.close(); - - System.out.println(help_text); } }