|
|
@ -1,16 +1,42 @@ |
|
|
|
import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.io.OutputStream; |
|
|
|
import java.lang.reflect.Method; |
|
|
|
import java.lang.reflect.Modifier; |
|
|
|
import java.nio.charset.StandardCharsets; |
|
|
|
import java.util.ArrayList; |
|
|
|
import java.util.Scanner; |
|
|
|
|
|
|
|
public class PasswordManager implements PasswordManagerInterface { |
|
|
|
|
|
|
|
boolean running = true; |
|
|
|
InputStream inputStream = System.in; |
|
|
|
OutputStream outputStream = System.out; |
|
|
|
|
|
|
|
public static void main(String[] args) { |
|
|
|
PasswordManager pm = new PasswordManager(); |
|
|
|
|
|
|
|
while (pm.running) { |
|
|
|
pm.showMenu(); |
|
|
|
} |
|
|
|
System.exit(0); |
|
|
|
} |
|
|
|
|
|
|
|
public PasswordManager() { |
|
|
|
System.out.println("Hello World"); |
|
|
|
println("Hello World"); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public void listVaults() { |
|
|
|
println("Vaults:"); |
|
|
|
} |
|
|
|
|
|
|
|
private void println(String output) { |
|
|
|
try { |
|
|
|
outputStream.write((output + "\n").getBytes(StandardCharsets.UTF_8)); |
|
|
|
} catch (IOException e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
@ -20,6 +46,55 @@ public class PasswordManager implements PasswordManagerInterface { |
|
|
|
|
|
|
|
@Override |
|
|
|
public void showMenu() { |
|
|
|
StringBuilder sb = new StringBuilder(); |
|
|
|
Scanner scan = new Scanner(inputStream); |
|
|
|
running = true; |
|
|
|
|
|
|
|
sb.append("\nciip Gruppe 8 - Password Manager\n\n"); |
|
|
|
|
|
|
|
sb.append("Menu:\n"); |
|
|
|
sb.append("- list vaults: l:\n"); |
|
|
|
sb.append("- select vault: v x (replace x with vault id)\n"); |
|
|
|
sb.append("- exit: e\n"); |
|
|
|
|
|
|
|
println(sb.toString()); |
|
|
|
|
|
|
|
String input = scan.nextLine(); |
|
|
|
|
|
|
|
if (input.equals("e")) { |
|
|
|
running = false; |
|
|
|
} else if (input.equals("l")) { |
|
|
|
listVaults(); |
|
|
|
} else if (input.startsWith("v")) { |
|
|
|
String vaultAction = (input.replace('v', ' ')).trim(); |
|
|
|
int vaultId = -1; |
|
|
|
|
|
|
|
try { |
|
|
|
vaultId = Integer.parseInt(vaultAction); |
|
|
|
} catch (NumberFormatException e) { |
|
|
|
println("-- please enter a correct vault id"); |
|
|
|
} |
|
|
|
|
|
|
|
if (vaultId >= 0) { |
|
|
|
try { |
|
|
|
int internalOptionCounter = 0; |
|
|
|
ArrayList<String> options = new ArrayList<>(); |
|
|
|
|
|
|
|
for (Method m : Class.forName("Vault").getDeclaredMethods()) { // returns all declared methods including private or protected |
|
|
|
try { |
|
|
|
if (Modifier.isPublic(this.getClass().getDeclaredMethod(m.getName()).getModifiers())) { // filter out methods that are not public (using Modifier) or have arguments (using getDeclaredMethod) |
|
|
|
options.add(m.getName()); |
|
|
|
println(internalOptionCounter + " - " + m.getName()); |
|
|
|
internalOptionCounter++; |
|
|
|
} |
|
|
|
} catch (NoSuchMethodException ignore) { |
|
|
|
// println("No method with name " + m.getName() + " found"); |
|
|
|
} |
|
|
|
} |
|
|
|
} catch (ClassNotFoundException e) { |
|
|
|
println("-- vaults not implemented yet"); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |