package org.djunits.generator; import java.io.IOException; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; import java.time.Instant; import java.util.Collections; import java.util.List; /** * GenerateCliConverters.java.
*

* Copyright (c) 2003-2018 Delft University of Technology, Jaffalaan 5, 2628 BX Delft, the Netherlands. All rights reserved.
* BSD-style license. See DJUNITS License. *

* @author Alexander Verbraeck */ public class GenerateCliConverters { /** * @param args String[]; blank * @throws IOException on i/o error * @throws URISyntaxException on i/o error */ public static void main(String[] args) throws IOException, URISyntaxException { String generationTime = Instant.now().toString(); List types = Files.readAllLines(Paths.get(URLResource.getResource("/resources/TYPES_REL.txt").toURI())); List absRelTypes = Files.readAllLines(Paths.get(URLResource.getResource("/resources/TYPES_ABS_REL.txt").toURI())); for (String ar : absRelTypes) { String[] arParts = ar.split(","); types.add(arParts[0]); types.add(arParts[1]); } Collections.sort(types); // @formatter:off System.out.println(" /**\r\n" + " * Register all DJUNITS converters for a CommandLine.\n" + " * @param cmd String; the CommandLine for which the DJUNITS converters should be registered\n" + " */\n" + " @Generated(value = \"" + GenerateCliConverters.class.getName() + "\", date = \"" + generationTime + "\")\n" + " public static void registerAll(final CommandLine cmd)\n" + " {"); // @formatter:on for (String type : types) { System.out.println(" cmd.registerConverter(" + type + ".class, new " + type.toUpperCase() + "());"); } System.out.println(" }\n"); for (String type : types) { String an = type.startsWith("A") || type.startsWith("E") || type.startsWith("I") || type.startsWith("O") || type.startsWith("U") ? "an" : "a"; String spaced = ""; if (type.toLowerCase().equals("anglesolid")) { spaced = "Solid Angle"; } else { boolean first = true; for (char c : type.toCharArray()) { spaced += (Character.isUpperCase(c) && !first) ? " " + c : c; first = false; } } String an2 = spaced.startsWith("A") || spaced.startsWith("E") || spaced.startsWith("I") || spaced.startsWith("O") || spaced.startsWith("U") ? "an" : "a"; // @formatter:off System.out.println(" /**\n" + " * Convert " + an2 + " " + spaced.toLowerCase() + " String with unit on the command line to " + an + " " + type + " scalar.\n" + " */\n" + " public static class " + type.toUpperCase() + " implements ITypeConverter<" + type + ">\n" + " {\n" + " /** {@inheritDoc} */\n" + " @Override\n" + " @Generated(value = \"" + GenerateCliConverters.class.getName() + "\", date = \"" + generationTime + "\")\n" + " public " + type + " convert(final String value) throws Exception\n" + " {\n" + " return " + type + ".valueOf(value);\n" + " }\n" + " }\n"); // @formatter:on } } }