Subversion Repositories mkgmap

Rev

Rev 2679 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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);
        }
}