package uk.me.parabola.mkgmap; import java.io.File; import uk.me.parabola.imgfmt.app.srt.Sort; import uk.me.parabola.util.EnhancedProperties; public class CommandArgs { public static final int DEFAULT_FAMILYID = 6324; public static final int DEFAULT_PRODUCTID = 1; private final EnhancedProperties currentOptions; private Sort sort; public CommandArgs(EnhancedProperties args) { currentOptions = new EnhancedProperties(args); } public EnhancedProperties getProperties() { return currentOptions; } public int get(String name, int def) { return currentOptions.getProperty(name, def); } public String get(String name, String def) { return currentOptions.getProperty(name, def); } public boolean get(String name, boolean def) { return currentOptions.getProperty(name, def); } public String getDescription() { return currentOptions.getProperty("description"); } // //// // There are a number of methods to get specific arguments that follow. // There are many more options in use however. New code should mostly // just use the get methods above. // //// public int getBlockSize() { return get("block-size", 512); } public String getMapname() { return currentOptions.getProperty("mapname"); } public String getCharset() { String charset = currentOptions.getProperty("charset"); if (charset != null) return charset; int cp = getCodePage(); if (cp != 0) return "cp" + cp; return "ascii"; } public int getCodePage() { int cp; String s = currentOptions.getProperty("code-page"); try { cp = Integer.parseInt(s); } catch (NumberFormatException e) { cp = 0; } return cp; } public String getOutputDir() { String DEFAULT_DIR = "."; String fileOutputDir = currentOptions.getProperty("output-dir", DEFAULT_DIR); // Test if directory exists File outputDir = new File(fileOutputDir); if (!outputDir.exists()) { System.out.println("Output directory not found. Creating directory '" + fileOutputDir + "'"); outputDir.mkdirs(); if (!outputDir.exists()) { System.err.println("Unable to create output directory! Using default directory instead"); fileOutputDir = DEFAULT_DIR; } } else if (!outputDir.isDirectory()) { System.err.println("The --output-dir parameter must specify a directory. The parameter is being ignored, writing to default directory instead."); fileOutputDir = DEFAULT_DIR; } return fileOutputDir; } public Sort getSort() { assert sort != null; return sort; } public void setSort(Sort sort) { this.sort = sort; } public boolean isForceUpper() { return currentOptions.getProperty("lower-case") == null; } /** * Test for the existence of an argument. */ public boolean exists(String name) { return currentOptions.containsKey(name); } }