diff options
Diffstat (limited to 'src/main/ui/JCA.java')
-rw-r--r-- | src/main/ui/JCA.java | 68 |
1 files changed, 37 insertions, 31 deletions
diff --git a/src/main/ui/JCA.java b/src/main/ui/JCA.java index f9467ea..7892850 100644 --- a/src/main/ui/JCA.java +++ b/src/main/ui/JCA.java @@ -8,18 +8,16 @@ import model.ca.Template; import java.nio.charset.StandardCharsets; import java.security.NoSuchAlgorithmException; import java.time.ZonedDateTime; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; +import java.util.Scanner; /** * Main program */ public class JCA { /** - * The current screen. - */ - private UIHandler screen; - - /** * Instances of the five screens; */ private final UIHandler mainScreen; @@ -27,30 +25,30 @@ public class JCA { private final UIHandler issueScreen; private final UIHandler templatesScreen; private final UIHandler templateSetScreen; - /** * Templates */ private final List<Template> templates; - /** * The CA */ private final CACertificate ca; - /** * Audit logs */ private final List<AuditLogEntry> logs; - /** * Current user */ private final String user; + /** + * The current screen. + */ + private UIHandler screen; /** * EFFECTS: Init with main screen, empty templates, logs, user 'yuuta', and generate a private key with no CA cert. - * Throws {@link NoSuchAlgorithmException} when crypto issue happens. + * Throws {@link NoSuchAlgorithmException} when crypto issue happens. */ public JCA() throws NoSuchAlgorithmException { this.mainScreen = new MainScreen(this); @@ -86,7 +84,7 @@ public class JCA { /** * EFFECTS: Read PEM from stdin, matched the given tag. - * Throws {@link ParseException} if the input is incorrect. + * Throws {@link ParseException} if the input is incorrect. */ public Byte[] handleInputPEM(String desiredTag) throws ParseException { final Scanner scanner = new Scanner(System.in); @@ -144,24 +142,27 @@ public class JCA { } private void handleLine(String... args) { - if (!args[0].isBlank()) { - switch (args[0]) { - case "help": - screen.help(); - break; - case "show": - screen.show(); - break; - case "commit": - screen.commit(); - break; - case "exit": - setScreen(screen.exit()); - break; - default: - screen.command(args); - break; - } + if (args[0].equals("log")) { + getLogs().forEach(System.out::println); + return; + } + switch (args[0]) { + case "help": + screen.help(); + System.out.println("log\tView audit logs"); + break; + case "show": + screen.show(); + break; + case "commit": + screen.commit(); + break; + case "exit": + setScreen(screen.exit()); + break; + default: + screen.command(args); + break; } printPS1(); } @@ -185,7 +186,12 @@ public class JCA { printPS1(); final Scanner scanner = new Scanner(System.in); while (true) { - handleLine(scanner.nextLine().split(" ")); + String[] args = scanner.nextLine().split(" "); + if (args.length <= 0 || args[0].isBlank()) { + printPS1(); + continue; + } + handleLine(args); } } |