package com.siberika.idea.pascal.jps.sdk;
import com.google.common.collect.ImmutableMap;
import com.intellij.openapi.projectRoots.SdkAdditionalData;
import java.util.HashMap;
import java.util.Map;
/**
* Author: George Bakhtadze
* Date: 18/01/2013
*/
public class PascalSdkData implements SdkAdditionalData {
public static final PascalSdkData EMPTY = new PascalSdkData();
public static final String SDK_DATA_TRUE = "1";
private static final Map<String, Object> DEFAULTS_MAP = new ImmutableMap.Builder<String, Object>()
.put(PascalSdkData.Keys.DEBUGGER_REDIRECT_CONSOLE.getKey(), "1")
.put(PascalSdkData.Keys.DEBUGGER_RETRIEVE_CHILDS.getKey(), "1")
.put(PascalSdkData.Keys.DEBUGGER_USE_GDBINIT.getKey(), "0")
.put(PascalSdkData.Keys.DEBUGGER_RESOLVE_NAMES.getKey(), "1")
.build();
public enum Keys {
COMPILER_COMMAND("compilerCommand"),
COMPILER_FAMILY("compilerFamily"),
COMPILER_OPTIONS("compilerOptions"),
DECOMPILER_CACHE("decompilerCache"),
DECOMPILER_COMMAND("decompilerCommand"),
DEBUGGER_COMMAND("debuggerCommand"),
DEBUGGER_OPTIONS("debuggerOptions"),
DEBUGGER_REDIRECT_CONSOLE("debuggerRedirectConsole"),
DEBUGGER_RETRIEVE_CHILDS("debuggerRetrieveChilds"),
DEBUGGER_USE_GDBINIT("debuggerUseGdbinit"),
DEBUGGER_RESOLVE_NAMES("debuggerResolveNames"),
DEBUGGER_CALL_GETTERS("debuggerCallGetters"),
DEBUGGER_ASM_FORMAT("debuggerAsmFormat"),
DELPHI_IS_STARTER("delphiIsStarter")
;
private final String key;
Keys(String key) {
this.key = key;
}
public String getKey() {
return key;
}
}
private final Map<String, Object> data;
public PascalSdkData() {
this.data = new HashMap<String, Object>();
}
public PascalSdkData(Map<String, Object> data) {
this.data = data;
}
@Override
public Object clone() throws CloneNotSupportedException {
return new PascalSdkData(data);
};
public Object getValue(final String key) {
Object res = data.get(key);
if (res != null) {
return res;
} else {
return DEFAULTS_MAP.get(key);
}
}
public void setValue(final String key, final Object value) {
data.put(key, value);
}
public boolean getBoolean(final Keys key) {
return SDK_DATA_TRUE.equals(getValue(key.getKey()));
}
public String getString(final Keys key) {
return (String) getValue(key.getKey());
}
}