package nbtool.util; import java.io.File; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.nio.file.Files; import java.nio.file.Path; import java.util.HashSet; import java.util.Set; import nbtool.data.json.Json; import nbtool.data.json.JsonNumber; import nbtool.data.json.JsonObject; import nbtool.data.json.JsonString; import nbtool.util.test.TestBase; import nbtool.util.test.Tests; public class SharedConstants { private static final String getObjectPath() throws Exception { final String suffix = "/src/share/logshare/LOGGING_CONSTANTS.json"; String nbdir = ToolSettings.NBITES_DIR; if (nbdir == null) { throw new NullPointerException("cannot load SharedConstants object without NBITES_DIR env variable!"); } return nbdir + suffix; } private static JsonObject getObject() { try { Path objectFile = (new File(getObjectPath())).toPath(); JsonObject obj = Json.parse(new String(Files.readAllBytes(objectFile))).<JsonObject>cast(); return obj; } catch (Exception e) { e.printStackTrace(); System.exit(1); } //never executed. return null; } private static JsonObject object = getObject(); public static String stringConstant(String key) { return object.get(key).<JsonString>cast().toString(); } public static int intConstant(String key) { return object.get(key).<JsonNumber>cast().intValue(); } public static String YUVImageType_DEFAULT() { return object.get("YUVImageType_DEFAULT").asString().toString(); } public static String YUVImageType_Y16() { return object.get("YUVImageType_Y16").asString().toString(); } public static String YUVImageType_Y8() { return object.get("YUVImageType_Y8").asString().toString(); } public static String SexprType_DEFAULT() { return object.get("SexprType_DEFAULT").asString().toString(); } public static String JsonType_DEFAULT() { return object.get("JsonType_DEFAULT").asString().toString(); } public static String LogType_DEFAULT() { return object.get("LogType_DEFAULT").asString().toString(); } public static String LogClass_Null() { return object.get("LogClass_Null").asString().toString(); } public static String LogClass_Flags() { return object.get("LogClass_Flags").asString().toString(); } public static String LogClass_Tripoint() { return object.get("LogClass_Tripoint").asString().toString(); } public static String LogClass_YUVImage() { return object.get("LogClass_YUVImage").asString().toString(); } public static String LogClass_String() { return object.get("LogClass_String").asString().toString(); } public static String LogClass_EdgeImage() { return object.get("LogClass_EdgeImage").asString().toString(); } public static String LogClass_RPC_Call() { return object.get("LogClass_RPC_Call").asString().toString(); } public static String LogClass_RPC_Return() { return object.get("LogClass_RPC_Return").asString().toString(); } public static String RPC_NAME() { return object.get("RPC_NAME").asString().toString(); } public static String RPC_KEY() { return object.get("RPC_KEY").asString().toString(); } public static int ROBOT_PORT() { return object.get("ROBOT_PORT").<JsonNumber>cast().intValue(); } public static int CROSS_PORT() { return object.get("CROSS_PORT").<JsonNumber>cast().intValue(); } public static int REMOTE_HOST_TIMEOUT() { return object.get("REMOTE_HOST_TIMEOUT").<JsonNumber>cast().intValue(); } public static String ROBOT_LOG_PATH_PREFIX() { return object.get("ROBOT_LOG_PATH_PREFIX").asString().toString(); } public static String ONLINE_CAMERA_OFFSET_PATH() { return object.get("ONLINE_CAMERA_OFFSET_PATH").asString().toString(); } public static String ONLINE_COLOR_PARAMS_PATH() { return object.get("ONLINE_COLOR_PARAMS_PATH").asString().toString(); } public static String OFFLINE_CAMERA_OFFSET_SUFFIX() { return object.get("OFFLINE_CAMERA_OFFSET_SUFFIX").asString().toString(); } public static String OFFLINE_COLOR_PARAMS_SUFFIX() { return object.get("OFFLINE_COLOR_PARAMS_SUFFIX").asString().toString(); } public static String LOG_TOPLEVEL_MAGIC_KEY() { return object.get("LOG_TOPLEVEL_MAGIC_KEY").asString().toString(); } public static String LOG_TOPLEVEL_BLOCKS() { return object.get("LOG_TOPLEVEL_BLOCKS").asString().toString(); } public static String LOG_TOPLEVEL_LOGCLASS() { return object.get("LOG_TOPLEVEL_LOGCLASS").asString().toString(); } public static String LOG_TOPLEVEL_CREATED_WHEN() { return object.get("LOG_TOPLEVEL_CREATED_WHEN").asString().toString(); } public static String LOG_TOPLEVEL_HOST_TYPE() { return object.get("LOG_TOPLEVEL_HOST_TYPE").asString().toString(); } public static String LOG_TOPLEVEL_HOST_NAME() { return object.get("LOG_TOPLEVEL_HOST_NAME").asString().toString(); } public static String LOG_TOPLEVEL_HOST_ADDR() { return object.get("LOG_TOPLEVEL_HOST_ADDR").asString().toString(); } public static String LOG_BLOCK_TYPE() { return object.get("LOG_BLOCK_TYPE").asString().toString(); } public static String LOG_BLOCK_WHERE_FROM() { return object.get("LOG_BLOCK_WHERE_FROM").asString().toString(); } public static String LOG_BLOCK_WHEN_MADE() { return object.get("LOG_BLOCK_WHEN_MADE").asString().toString(); } public static String LOG_BLOCK_IMAGE_INDEX() { return object.get("LOG_BLOCK_IMAGE_INDEX").asString().toString(); } public static String LOG_BLOCK_NUM_BYTES() { return object.get("LOG_BLOCK_NUM_BYTES").asString().toString(); } public static String LOG_BLOCK_IMAGE_WIDTH_PIXELS() { return object.get("LOG_BLOCK_IMAGE_WIDTH_PIXELS").asString().toString(); } public static String LOG_BLOCK_IMAGE_HEIGHT_PIXELS() { return object.get("LOG_BLOCK_IMAGE_HEIGHT_PIXELS").asString().toString(); } public static void _NBL_ADD_TESTS_() { Tests.add("SharedConstants", new TestBase("check all keys"){ @Override public boolean testBody() throws Exception { final Set<String> exclude = new HashSet<>(); exclude.add("stringConstant"); exclude.add("intConstant"); exclude.add("_NBL_ADD_TESTS_"); for (Method m : SharedConstants.class.getDeclaredMethods()) { if (Modifier.isStatic(m.getModifiers()) && Modifier.isPublic(m.getModifiers()) && !exclude.contains(m.getName())) { // Debug.print("%s", m.getName()); m.invoke(null); } } return true; } }); } }