import java.util.Optional; public class ScanMaker { public static Optional createScan(String type, String accessString) { return switch (type) { case "HTTPGet" -> Optional.of(new HTTPGet(accessString)); case "HTTPHead" -> Optional.of(new HTTPHead(accessString)); case "Ping" -> Optional.of(new Ping(accessString)); case "PortConnect" -> Optional.of(new PortConnect(accessString)); default -> Optional.empty(); }; } public static Optional validateAndCreate(String label, String accessString) { return switch (label) { case "HTTP GET" -> HTTPGet.validateAccessString(accessString) ? Optional.of(new HTTPGet(accessString)) : Optional.empty(); case "HTTP HEAD" -> HTTPHead.validateAccessString(accessString) ? Optional.of(new HTTPHead(accessString)) : Optional.empty(); case "Ping" -> Ping.validateAccessString(accessString) ? Optional.of(new Ping(accessString)) : Optional.empty(); case "Port Connect" -> PortConnect.validateAccessString(accessString) ? Optional.of(new PortConnect(accessString)) : Optional.empty(); default -> Optional.empty(); }; } public static String getTypeName(ScanType scan) { return scan.getClass().getSimpleName(); } public static String getDisplayLabel(String typeName) { return switch (typeName) { case "HTTPGet" -> "HTTP GET"; case "HTTPHead" -> "HTTP HEAD"; case "Ping" -> "Ping"; case "PortConnect" -> "Port Connect"; default -> typeName; }; } public static String getInternalTypeName(String label) { return switch (label) { case "HTTP GET" -> "HTTPGet"; case "HTTP HEAD" -> "HTTPHead"; case "Ping" -> "Ping"; case "Port Connect" -> "PortConnect"; default -> label; }; } }