coolmap.utils.Config.java Source code

Java tutorial

Introduction

Here is the source code for coolmap.utils.Config.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package coolmap.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.io.IOUtils;
import org.json.JSONException;
import org.json.JSONObject;

/**
 *
 * @author sugang
 */
public class Config {

    public static final String COOLMAP_DIRECTORY = "coolmap-directory";
    public static final String PLUGIN_DIRECTORY = "plugin-directory";
    public static final String CONFIG_FILE = "config-file";
    public static final String WORKSPACE_DIRECTORY = "workspace-directory";
    public static final String VERSION = "version";

    private static JSONObject configObject = new JSONObject();
    private static HashMap<String, String> configHash = new HashMap<String, String>();

    private static boolean isInitialized = false;

    public static boolean isInitialized() {
        return isInitialized;
    }

    public static String getProperty(String key) {
        return configHash.get(key);
    }

    public static void saveConfig() {
        try {
            //            String workingDirectory;
            //            workingDirectory = System.getProperty("user.dir");
            //            configFile = workingDirectory + File.separator + "config.json";
            String savePath = getProperty(COOLMAP_DIRECTORY) + File.separator + "config.json";
            IOUtils.write(getJSONConfig().toString(), new FileOutputStream(new File(savePath)));
        } catch (Exception e) {
            System.err.println("Config can not be saved");
        }
    }

    public static void initialize() {

        String rscriptPath;
        String workingDirectory;
        String pluginDirectory;
        String configFile;
        String workspaceDirectory;

        try {

            workingDirectory = System.getProperty("user.dir");

            if (workingDirectory != null) {
                if (workingDirectory.endsWith("/") || workingDirectory.endsWith("\\")) {
                    workingDirectory = workingDirectory.substring(0, workingDirectory.length() - 1); //strip last separator
                }
                configFile = workingDirectory + File.separator + "config.json";
                configHash.put(COOLMAP_DIRECTORY, workingDirectory);
            } else {
                throw new Exception("The working directory is null");
            }

            BufferedReader reader = new BufferedReader(new FileReader(configFile));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                sb.append(line);
            }

            configObject = new JSONObject(sb.toString());

            //load pluginDirectory
            try {
                pluginDirectory = workingDirectory + File.separator
                        + configObject.getJSONObject("plugin").getString("directory");
            } catch (JSONException ejson) {
                pluginDirectory = workingDirectory + File.separator + "plugin";
            }
            configHash.put(PLUGIN_DIRECTORY, pluginDirectory);

            //load workspace directory
            try {
                workspaceDirectory = workingDirectory + File.separator
                        + configObject.getJSONObject("workspace").getString("directory");
            } catch (JSONException ejson) {
                workspaceDirectory = workingDirectory + File.separator + "workspace";
            }
            //            System.out.println(workspaceDirectory);
            configHash.put(WORKSPACE_DIRECTORY, workspaceDirectory);

            configHash.put(VERSION, configObject.optString(VERSION));

            //if successful intialized
            isInitialized = true;

        } catch (Exception e) {
            System.err.println("Config file initialization error");
            //set some defaults

            e.printStackTrace();
        }

    }

    public static JSONObject getJSONConfig() {
        return configObject;
    }

    public static void printAttributes() {
        //        System.out.println("Printing config attributes:");
        for (Map.Entry<String, String> entry : configHash.entrySet()) {
            System.out.println(entry.getKey() + ": " + entry.getValue());
        }
        //        System.out.println("");
    }

    public static void main(String[] args) {
        Config.initialize();
        printAttributes();
    }

}