/* * Copyright 2015 the original author or authors. * @https://github.com/scouter-project/scouter * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package scouter.lang.value; public class ValueEnum { public final static byte NULL = 0; public final static byte BOOLEAN = 10; public final static byte DECIMAL = 20; public final static byte FLOAT = 30; public final static byte DOUBLE = 40; public final static byte DOUBLE_SUMMARY = 45; public final static byte LONG_SUMMARY = 46; public final static byte TEXT = 50; public final static byte TEXT_HASH = 51; public final static byte BLOB = 60; public final static byte IP4ADDR = 61; public final static byte LIST = 70; public final static byte ARRAY_INT = 71; public final static byte ARRAY_FLOAT = 72; public final static byte ARRAY_TEXT = 73; public final static byte ARRAY_LONG = 74; public final static byte MAP = 80; public static Value create(byte code) { switch (code) { case NULL: return new NullValue(); case BOOLEAN: return new BooleanValue(); case DECIMAL: return new DecimalValue(); case FLOAT: return new FloatValue(); case DOUBLE: return new DoubleValue(); case TEXT: return new TextValue(); case TEXT_HASH: return new TextHashValue(); case BLOB: return new BlobValue(); case IP4ADDR: return new IP4Value(); case LIST: return new ListValue(); case MAP: return new MapValue(); case LONG_SUMMARY: return new LongSummary(); case DOUBLE_SUMMARY: return new DoubleSummary(); case ARRAY_INT: return new IntArray(); case ARRAY_FLOAT: return new FloatArray(); case ARRAY_TEXT: return new TextArray(); case ARRAY_LONG: return new LongArray(); default: throw new RuntimeException("unknown value type=" + code); } } public Value toValue(Object o) { if (o == null) return new NullValue(); else if (o instanceof Value) return (Value) o; else if (o instanceof String) return new TextValue((String) o); else if (o instanceof Number) { Number n = (Number) o; if (n instanceof Double) return new DoubleValue((Double) o); if (n instanceof Float) return new FloatValue((Float) o); return new DecimalValue(n.longValue()); } else return new TextValue(o.toString()); } }