You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@eagle.apache.org by ja...@apache.org on 2018/02/07 07:07:10 UTC
[03/10] eagle git commit: [EAGLE-1081] Checkstyle fixes for
eagle-entity-base module
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/HBaseLogReader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/HBaseLogReader.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/HBaseLogReader.java
index c75b94f..b8cbd20 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/HBaseLogReader.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/HBaseLogReader.java
@@ -45,203 +45,207 @@ import org.apache.eagle.common.ByteUtil;
import org.apache.eagle.common.EagleBase64Wrapper;
public class HBaseLogReader implements LogReader {
- private static Logger LOG = LoggerFactory.getLogger(HBaseLogReader.class);
-
- protected byte[][] qualifiers;
- private HTableInterface tbl;
- private byte[] startKey;
- private byte[] stopKey;
- protected Map<String, List<String>> searchTags;
-
- private ResultScanner rs;
- private boolean isOpen = false;
-
- private Schema schema;
-
- public HBaseLogReader(Schema schema, Date startTime, Date endTime,
- Map<String, List<String>> searchTags, String lastScanKey,
- byte[][] outputQualifier){
- this.schema = schema;
- this.qualifiers = outputQualifier;
- this.startKey = buildRowKey(schema.getPrefix(), startTime);
- if (lastScanKey == null) {
- this.stopKey = buildRowKey(schema.getPrefix(), endTime);
- } else {
- // build stop key
- this.stopKey = EagleBase64Wrapper.decode(lastScanKey);
- // concat byte 0 to exclude this stopKey
- this.stopKey = ByteUtil.concat(this.stopKey, new byte[] { 0 });
- }
- this.searchTags = searchTags;
- }
-
- /**
- * TODO If the required field is null for a row, then this row will not be fetched. That could be a problem for counting
- * Need another version of read to strictly get the number of rows which will return all the columns for a column family
- */
- public void open() throws IOException {
- if (isOpen)
- return; // silently return
- try {
- tbl = EagleConfigFactory.load().getHTable(schema.getTable());
- } catch (RuntimeException ex) {
- throw new IOException(ex);
- }
-
- String rowkeyRegex = buildRegex2(searchTags);
- RegexStringComparator regexStringComparator = new RegexStringComparator(
- rowkeyRegex);
- regexStringComparator.setCharset(Charset.forName("ISO-8859-1"));
- RowFilter filter = new RowFilter(CompareOp.EQUAL, regexStringComparator);
- FilterList filterList = new FilterList();
- filterList.addFilter(filter);
- Scan s1 = new Scan();
- // reverse timestamp, startRow is stopKey, and stopRow is startKey
- s1.setStartRow(stopKey);
- s1.setStopRow(startKey);
- s1.setFilter(filterList);
- // TODO the # of cached rows should be minimum of (pagesize and 100)
- s1.setCaching(100);
- // TODO not optimized for all applications
- s1.setCacheBlocks(true);
- // scan specified columnfamily and qualifiers
- for(byte[] qualifier : qualifiers){
- s1.addColumn(schema.getColumnFamily().getBytes(), qualifier);
- }
- rs = tbl.getScanner(s1);
- isOpen = true;
- }
-
- public void close() throws IOException {
- if(tbl != null){
- new HTableFactory().releaseHTableInterface(tbl);
- }
- if(rs != null){
- rs.close();
- }
- }
-
- public void flush() throws IOException {
- tbl.flushCommits();
- }
-
- private byte[] buildRowKey(String appName, Date t){
- byte[] key = new byte[4 + 8];
- byte[] b = ByteUtil.intToBytes(appName.hashCode());
- System.arraycopy(b, 0, key, 0, 4);
- // reverse timestamp
- long ts = Long.MAX_VALUE - t.getTime();
- System.arraycopy(ByteUtil.longToBytes(ts), 0, key, 4, 8);
- return key;
- }
-
- /**
- * one search tag may have multiple values which have OR relationship, and relationship between
- * different search tags is AND
- * the query is like "(TAG1=value11 OR TAG1=value12) AND TAG2=value2"
- * @param tags
- * @return
- */
- protected String buildRegex2(Map<String, List<String>> tags){
- // TODO need consider that \E could be part of tag, refer to https://github.com/OpenTSDB/opentsdb/blob/master/src/core/TsdbQuery.java
- SortedMap<Integer, List<Integer>> tagHash = new TreeMap<Integer, List<Integer>>();
-
- for(Map.Entry<String, List<String>> entry : tags.entrySet()){
- String tagName = entry.getKey();
- List<String> stringValues = entry.getValue();
- List<Integer> hashValues = new ArrayList<Integer>(1);
- for(String value : stringValues){
- hashValues.add(value.hashCode());
- }
- tagHash.put(tagName.hashCode(), hashValues);
- }
- // <tag1:3><value1:3> ... <tagn:3><valuen:3>
- StringBuilder sb = new StringBuilder();
- sb.append("(?s)");
- sb.append("^(?:.{12})");
- sb.append("(?:.{").append(8).append("})*"); // for any number of tags
- for (Map.Entry<Integer, List<Integer>> entry : tagHash.entrySet()) {
- try {
- sb.append("\\Q");
- sb.append(new String(ByteUtil.intToBytes(entry.getKey()), "ISO-8859-1")).append("\\E");
- List<Integer> hashValues = entry.getValue();
- sb.append("(?:");
- boolean first = true;
- for(Integer value : hashValues){
- if(!first){
- sb.append('|');
- }
- sb.append("\\Q");
- sb.append(new String(ByteUtil.intToBytes(value), "ISO-8859-1"));
- sb.append("\\E");
- first = false;
- }
- sb.append(")");
- sb.append("(?:.{").append(8).append("})*"); // for any number of tags
- } catch (Exception ex) {
- LOG.error("Constructing regex error", ex);
- }
- }
- sb.append("$");
- if (LOG.isDebugEnabled()) {
- LOG.debug("Pattern is " + sb.toString());
- }
- return sb.toString();
- }
-
- public InternalLog read() throws IOException {
- if (rs == null)
- throw new IllegalArgumentException(
- "ResultScanner must be initialized before reading");
-
- InternalLog t = null;
-
- Result r = rs.next();
- if (r != null) {
- byte[] row = r.getRow();
- // skip the first 4 bytes : prefix
- long timestamp = ByteUtil.bytesToLong(row, 4);
- // reverse timestamp
- timestamp = Long.MAX_VALUE - timestamp;
- int count = 0;
- if(qualifiers != null){
- count = qualifiers.length;
- }
- byte[][] values = new byte[count][];
- Map<String, byte[]> allQualifierValues = new HashMap<String, byte[]>();
- for (int i = 0; i < count; i++) {
- // TODO if returned value is null, it means no this column for this row, so why set null to the object?
- values[i] = r.getValue(schema.getColumnFamily().getBytes(), qualifiers[i]);
- allQualifierValues.put(new String(qualifiers[i]), values[i]);
- }
- t = buildObject(row, timestamp, allQualifierValues);
- }
-
- return t;
- }
-
- public InternalLog buildObject(byte[] row, long timestamp,
- Map<String, byte[]> allQualifierValues) {
- InternalLog alertDetail = new InternalLog();
- String myRow = EagleBase64Wrapper.encodeByteArray2URLSafeString(row);
- alertDetail.setEncodedRowkey(myRow);
- alertDetail.setPrefix(schema.getPrefix());
- alertDetail.setSearchTags(searchTags);
- alertDetail.setTimestamp(timestamp);
-
- Map<String, byte[]> logQualifierValues = new HashMap<String, byte[]>();
- Map<String, String> logTags = new HashMap<String, String>();
- for (Map.Entry<String, byte[]> entry : allQualifierValues.entrySet()) {
- if (schema.isTag(entry.getKey())) {
- if (entry.getValue() != null) {
- logTags.put(entry.getKey(), new String(entry.getValue()));
- }
- } else {
- logQualifierValues.put(entry.getKey(),entry.getValue());
- }
- }
- alertDetail.setQualifierValues(logQualifierValues);
- alertDetail.setTags(logTags);
- return alertDetail;
- }
+ private static Logger LOG = LoggerFactory.getLogger(HBaseLogReader.class);
+
+ protected byte[][] qualifiers;
+ private HTableInterface tbl;
+ private byte[] startKey;
+ private byte[] stopKey;
+ protected Map<String, List<String>> searchTags;
+
+ private ResultScanner rs;
+ private boolean isOpen = false;
+
+ private Schema schema;
+
+ public HBaseLogReader(Schema schema, Date startTime, Date endTime, Map<String, List<String>> searchTags,
+ String lastScanKey, byte[][] outputQualifier) {
+ this.schema = schema;
+ this.qualifiers = outputQualifier;
+ this.startKey = buildRowKey(schema.getPrefix(), startTime);
+ if (lastScanKey == null) {
+ this.stopKey = buildRowKey(schema.getPrefix(), endTime);
+ } else {
+ // build stop key
+ this.stopKey = EagleBase64Wrapper.decode(lastScanKey);
+ // concat byte 0 to exclude this stopKey
+ this.stopKey = ByteUtil.concat(this.stopKey, new byte[] { 0 });
+ }
+ this.searchTags = searchTags;
+ }
+
+ /**
+ * TODO If the required field is null for a row, then this row will not be fetched. That could be a
+ * problem for counting Need another version of read to strictly get the number of rows which will return
+ * all the columns for a column family
+ */
+ @Override
+ public void open() throws IOException {
+ if (isOpen) {
+ return; // silently return
+ }
+ try {
+ tbl = EagleConfigFactory.load().getHTable(schema.getTable());
+ } catch (RuntimeException ex) {
+ throw new IOException(ex);
+ }
+
+ String rowkeyRegex = buildRegex2(searchTags);
+ RegexStringComparator regexStringComparator = new RegexStringComparator(rowkeyRegex);
+ regexStringComparator.setCharset(Charset.forName("ISO-8859-1"));
+ RowFilter filter = new RowFilter(CompareOp.EQUAL, regexStringComparator);
+ FilterList filterList = new FilterList();
+ filterList.addFilter(filter);
+ Scan s1 = new Scan();
+ // reverse timestamp, startRow is stopKey, and stopRow is startKey
+ s1.setStartRow(stopKey);
+ s1.setStopRow(startKey);
+ s1.setFilter(filterList);
+ // TODO the # of cached rows should be minimum of (pagesize and 100)
+ s1.setCaching(100);
+ // TODO not optimized for all applications
+ s1.setCacheBlocks(true);
+ // scan specified columnfamily and qualifiers
+ for (byte[] qualifier : qualifiers) {
+ s1.addColumn(schema.getColumnFamily().getBytes(), qualifier);
+ }
+ rs = tbl.getScanner(s1);
+ isOpen = true;
+ }
+
+ @Override
+ public void close() throws IOException {
+ if (tbl != null) {
+ new HTableFactory().releaseHTableInterface(tbl);
+ }
+ if (rs != null) {
+ rs.close();
+ }
+ }
+
+ public void flush() throws IOException {
+ tbl.flushCommits();
+ }
+
+ private byte[] buildRowKey(String appName, Date t) {
+ byte[] key = new byte[4 + 8];
+ byte[] b = ByteUtil.intToBytes(appName.hashCode());
+ System.arraycopy(b, 0, key, 0, 4);
+ // reverse timestamp
+ long ts = Long.MAX_VALUE - t.getTime();
+ System.arraycopy(ByteUtil.longToBytes(ts), 0, key, 4, 8);
+ return key;
+ }
+
+ /**
+ * one search tag may have multiple values which have OR relationship, and relationship between different
+ * search tags is AND the query is like "(TAG1=value11 OR TAG1=value12) AND TAG2=value2".
+ *
+ * @param tags
+ * @return
+ */
+ protected String buildRegex2(Map<String, List<String>> tags) {
+ // TODO need consider that \E could be part of tag, refer to
+ // https://github.com/OpenTSDB/opentsdb/blob/master/src/core/TsdbQuery.java
+ SortedMap<Integer, List<Integer>> tagHash = new TreeMap<Integer, List<Integer>>();
+
+ for (Map.Entry<String, List<String>> entry : tags.entrySet()) {
+ String tagName = entry.getKey();
+ List<String> stringValues = entry.getValue();
+ List<Integer> hashValues = new ArrayList<Integer>(1);
+ for (String value : stringValues) {
+ hashValues.add(value.hashCode());
+ }
+ tagHash.put(tagName.hashCode(), hashValues);
+ }
+ // <tag1:3><value1:3> ... <tagn:3><valuen:3>
+ StringBuilder sb = new StringBuilder();
+ sb.append("(?s)");
+ sb.append("^(?:.{12})");
+ sb.append("(?:.{").append(8).append("})*"); // for any number of tags
+ for (Map.Entry<Integer, List<Integer>> entry : tagHash.entrySet()) {
+ try {
+ sb.append("\\Q");
+ sb.append(new String(ByteUtil.intToBytes(entry.getKey()), "ISO-8859-1")).append("\\E");
+ List<Integer> hashValues = entry.getValue();
+ sb.append("(?:");
+ boolean first = true;
+ for (Integer value : hashValues) {
+ if (!first) {
+ sb.append('|');
+ }
+ sb.append("\\Q");
+ sb.append(new String(ByteUtil.intToBytes(value), "ISO-8859-1"));
+ sb.append("\\E");
+ first = false;
+ }
+ sb.append(")");
+ sb.append("(?:.{").append(8).append("})*"); // for any number of tags
+ } catch (Exception ex) {
+ LOG.error("Constructing regex error", ex);
+ }
+ }
+ sb.append("$");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Pattern is " + sb.toString());
+ }
+ return sb.toString();
+ }
+
+ @Override
+ public InternalLog read() throws IOException {
+ if (rs == null) {
+ throw new IllegalArgumentException("ResultScanner must be initialized before reading");
+ }
+
+ InternalLog t = null;
+
+ Result r = rs.next();
+ if (r != null) {
+ byte[] row = r.getRow();
+ // skip the first 4 bytes : prefix
+ long timestamp = ByteUtil.bytesToLong(row, 4);
+ // reverse timestamp
+ timestamp = Long.MAX_VALUE - timestamp;
+ int count = 0;
+ if (qualifiers != null) {
+ count = qualifiers.length;
+ }
+ byte[][] values = new byte[count][];
+ Map<String, byte[]> allQualifierValues = new HashMap<String, byte[]>();
+ for (int i = 0; i < count; i++) {
+ // TODO if returned value is null, it means no this column for this row, so why set null to
+ // the object?
+ values[i] = r.getValue(schema.getColumnFamily().getBytes(), qualifiers[i]);
+ allQualifierValues.put(new String(qualifiers[i]), values[i]);
+ }
+ t = buildObject(row, timestamp, allQualifierValues);
+ }
+
+ return t;
+ }
+
+ public InternalLog buildObject(byte[] row, long timestamp, Map<String, byte[]> allQualifierValues) {
+ InternalLog alertDetail = new InternalLog();
+ String myRow = EagleBase64Wrapper.encodeByteArray2URLSafeString(row);
+ alertDetail.setEncodedRowkey(myRow);
+ alertDetail.setPrefix(schema.getPrefix());
+ alertDetail.setSearchTags(searchTags);
+ alertDetail.setTimestamp(timestamp);
+
+ Map<String, byte[]> logQualifierValues = new HashMap<String, byte[]>();
+ Map<String, String> logTags = new HashMap<String, String>();
+ for (Map.Entry<String, byte[]> entry : allQualifierValues.entrySet()) {
+ if (schema.isTag(entry.getKey())) {
+ if (entry.getValue() != null) {
+ logTags.put(entry.getKey(), new String(entry.getValue()));
+ }
+ } else {
+ logQualifierValues.put(entry.getKey(), entry.getValue());
+ }
+ }
+ alertDetail.setQualifierValues(logQualifierValues);
+ alertDetail.setTags(logTags);
+ return alertDetail;
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/LogDeleter.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/LogDeleter.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/LogDeleter.java
index c5087e7..022dfc0 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/LogDeleter.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/LogDeleter.java
@@ -21,14 +21,15 @@ import java.io.IOException;
import org.apache.eagle.log.entity.InternalLog;
-public interface LogDeleter extends Closeable{
- public void flush() throws IOException;
+public interface LogDeleter extends Closeable {
+ public void flush() throws IOException;
- public void open() throws IOException;
+ public void open() throws IOException;
- public void close() throws IOException;
+ @Override
+ public void close() throws IOException;
- public void delete(InternalLog log) throws IOException;
-
- public void deleteRowByRowkey(String encodedRowkey) throws IOException;
+ public void delete(InternalLog log) throws IOException;
+
+ public void deleteRowByRowkey(String encodedRowkey) throws IOException;
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/RowkeyHelper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/RowkeyHelper.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/RowkeyHelper.java
index f2bdd15..9d08cc1 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/RowkeyHelper.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/RowkeyHelper.java
@@ -28,58 +28,59 @@ import org.apache.eagle.common.EagleBase64Wrapper;
public final class RowkeyHelper {
- public static byte[] getRowkey(TaggedLogAPIEntity entity, EntityDefinition entityDef) throws Exception {
- byte[] rowkey = null;
- if(entity.getEncodedRowkey() != null && !(entity.getEncodedRowkey().isEmpty())){
- rowkey = EagleBase64Wrapper.decode(entity.getEncodedRowkey());
- }else{
- InternalLog log = HBaseInternalLogHelper.convertToInternalLog(entity, entityDef);
- rowkey = RowkeyBuilder.buildRowkey(log);
- }
- return rowkey;
- }
+ public static byte[] getRowkey(TaggedLogAPIEntity entity, EntityDefinition entityDef) throws Exception {
+ byte[] rowkey = null;
+ if (entity.getEncodedRowkey() != null && !(entity.getEncodedRowkey().isEmpty())) {
+ rowkey = EagleBase64Wrapper.decode(entity.getEncodedRowkey());
+ } else {
+ InternalLog log = HBaseInternalLogHelper.convertToInternalLog(entity, entityDef);
+ rowkey = RowkeyBuilder.buildRowkey(log);
+ }
+ return rowkey;
+ }
- public static List<byte[]> getRowkeysByEntities(List<? extends TaggedLogAPIEntity> entities, EntityDefinition entityDef) throws Exception {
- final List<byte[]> result = new ArrayList<byte[]>(entities.size());
- for (TaggedLogAPIEntity entity : entities) {
- final byte[] rowkey = getRowkey(entity, entityDef);
- result.add(rowkey);
- }
- return result;
- }
-
+ public static byte[] getRowkey(InternalLog log) {
+ byte[] rowkey = null;
+ if (log.getEncodedRowkey() != null && !(log.getEncodedRowkey().isEmpty())) {
+ rowkey = EagleBase64Wrapper.decode(log.getEncodedRowkey());
+ } else {
+ rowkey = RowkeyBuilder.buildRowkey(log);
+ }
+ return rowkey;
+ }
- public static byte[] getRowkey(InternalLog log) {
- byte[] rowkey = null;
- if(log.getEncodedRowkey() != null && !(log.getEncodedRowkey().isEmpty())){
- rowkey = EagleBase64Wrapper.decode(log.getEncodedRowkey());
- }else{
- rowkey = RowkeyBuilder.buildRowkey(log);
- }
- return rowkey;
- }
+ public static byte[] getRowkey(String encodedRowkey) {
+ byte[] rowkey = EagleBase64Wrapper.decode(encodedRowkey);
+ return rowkey;
+ }
- public static List<byte[]> getRowkeysByLogs(List<InternalLog> logs) {
- final List<byte[]> result = new ArrayList<byte[]>(logs.size());
- for (InternalLog log : logs) {
- final byte[] rowkey = getRowkey(log);
- result.add(rowkey);
- }
- return result;
- }
+ public static List<byte[]> getRowkeysByEntities(List<? extends TaggedLogAPIEntity> entities,
+ EntityDefinition entityDef)
+ throws Exception {
+ final List<byte[]> result = new ArrayList<byte[]>(entities.size());
+ for (TaggedLogAPIEntity entity : entities) {
+ final byte[] rowkey = getRowkey(entity, entityDef);
+ result.add(rowkey);
+ }
+ return result;
+ }
- public static byte[] getRowkey(String encodedRowkey) {
- byte[] rowkey = EagleBase64Wrapper.decode(encodedRowkey);
- return rowkey;
- }
+ public static List<byte[]> getRowkeysByLogs(List<InternalLog> logs) {
+ final List<byte[]> result = new ArrayList<byte[]>(logs.size());
+ for (InternalLog log : logs) {
+ final byte[] rowkey = getRowkey(log);
+ result.add(rowkey);
+ }
+ return result;
+ }
- public static List<byte[]> getRowkeysByEncodedRowkeys(List<String> encodedRowkeys) {
- final List<byte[]> result = new ArrayList<byte[]>(encodedRowkeys.size());
- for (String encodedRowkey : encodedRowkeys) {
- byte[] rowkey = EagleBase64Wrapper.decode(encodedRowkey);
- result.add(rowkey);
- }
- return result;
- }
+ public static List<byte[]> getRowkeysByEncodedRowkeys(List<String> encodedRowkeys) {
+ final List<byte[]> result = new ArrayList<byte[]>(encodedRowkeys.size());
+ for (String encodedRowkey : encodedRowkeys) {
+ byte[] rowkey = EagleBase64Wrapper.decode(encodedRowkey);
+ result.add(rowkey);
+ }
+ return result;
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/Schema.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/Schema.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/Schema.java
index 55556bd..2ab0773 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/Schema.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/old/Schema.java
@@ -17,8 +17,11 @@
package org.apache.eagle.log.entity.old;
public interface Schema {
- public boolean isTag(String qualifier);
- public String getTable();
- public String getColumnFamily();
- public String getPrefix();
+ public boolean isTag(String qualifier);
+
+ public String getTable();
+
+ public String getColumnFamily();
+
+ public String getPrefix();
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/DefaultEntityRepository.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/DefaultEntityRepository.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/DefaultEntityRepository.java
index 1d0d398..26ec328 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/DefaultEntityRepository.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/DefaultEntityRepository.java
@@ -22,13 +22,11 @@ import org.apache.eagle.log.entity.test.TestTimeSeriesAPIEntity;
/**
* Default Eagle framework entity repository class.
- *
- *
*/
public class DefaultEntityRepository extends EntityRepository {
- public DefaultEntityRepository() {
- entitySet.add(MetricMetadataEntity.class);
- entitySet.add(TestLogAPIEntity.class);
- entitySet.add(TestTimeSeriesAPIEntity.class);
- }
+ public DefaultEntityRepository() {
+ entitySet.add(MetricMetadataEntity.class);
+ entitySet.add(TestLogAPIEntity.class);
+ entitySet.add(TestTimeSeriesAPIEntity.class);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepository.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepository.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepository.java
index 0c24d30..ab50742 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepository.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepository.java
@@ -27,30 +27,29 @@ import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
import org.apache.eagle.log.entity.meta.EntitySerDeser;
/**
- * Entity repository is used to store entity definition class. Each domain should define its own entities. Eagle entity
- * framework will scan all derived class implementations to get all entity definitions, then register them to EntityDefinitionManager.
- *
- *
+ * Entity repository is used to store entity definition class. Each domain should define its own entities.
+ * Eagle entity framework will scan all derived class implementations to get all entity definitions, then
+ * register them to EntityDefinitionManager.
*/
public abstract class EntityRepository {
- protected Set<Class<? extends TaggedLogAPIEntity>> entitySet = new HashSet<Class<? extends TaggedLogAPIEntity>>();
- protected Map<Class<?>, EntitySerDeser<?>> serDeserMap = new HashMap<Class<?>, EntitySerDeser<?>>();
-
- public synchronized Collection<Class<? extends TaggedLogAPIEntity>> getEntitySet() {
- return new ArrayList<Class<? extends TaggedLogAPIEntity>>(entitySet);
- }
-
- public synchronized Map<Class<?>, EntitySerDeser<?>> getSerDeserMap() {
- return new HashMap<Class<?>, EntitySerDeser<?>>(serDeserMap);
- }
-
- public synchronized void registerEntity(Class<? extends TaggedLogAPIEntity> clazz) {
- entitySet.add(clazz);
- }
-
- public synchronized void registerSerDeser(Class<?> clazz, EntitySerDeser<?> serDeser) {
- serDeserMap.put(clazz, serDeser);
- }
-
+ protected Set<Class<? extends TaggedLogAPIEntity>> entitySet = new HashSet<Class<? extends TaggedLogAPIEntity>>();
+ protected Map<Class<?>, EntitySerDeser<?>> serDeserMap = new HashMap<Class<?>, EntitySerDeser<?>>();
+
+ public synchronized Collection<Class<? extends TaggedLogAPIEntity>> getEntitySet() {
+ return new ArrayList<Class<? extends TaggedLogAPIEntity>>(entitySet);
+ }
+
+ public synchronized Map<Class<?>, EntitySerDeser<?>> getSerDeserMap() {
+ return new HashMap<Class<?>, EntitySerDeser<?>>(serDeserMap);
+ }
+
+ public synchronized void registerEntity(Class<? extends TaggedLogAPIEntity> clazz) {
+ entitySet.add(clazz);
+ }
+
+ public synchronized void registerSerDeser(Class<?> clazz, EntitySerDeser<?> serDeser) {
+ serDeserMap.put(clazz, serDeser);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepositoryScanner.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepositoryScanner.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepositoryScanner.java
index 8ccee87..5c2a107 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepositoryScanner.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/repo/EntityRepositoryScanner.java
@@ -31,26 +31,28 @@ public final class EntityRepositoryScanner {
private static final Logger LOG = LoggerFactory.getLogger(EntityRepositoryScanner.class);
- // public static void scan() throws InstantiationException, IllegalAccessException {
- // // TODO currently extcos 0.3b doesn't support to search packages like "com.*.eagle.*", "org.*.eagle.*". However 0.4b depends on asm-all version 4.0, which is
- // // conflicted with jersey server 1.8. We should fix it later
- // LOG.info("Scanning all entity repositories with pattern \"org.apache.eagle.*\"");
- // final ComponentScanner scanner = new ComponentScanner();
- // final Set<Class<?>> classes = scanner.getClasses(new EntityRepoScanQuery() );
- // for (Class<?> entityClass : classes) {
- // LOG.info("Processing entity repository: " + entityClass.getName());
- // if (EntityRepository.class.isAssignableFrom(entityClass)) {
- // EntityRepository repo = (EntityRepository)entityClass.newInstance();
- // addRepo(repo);
- // }
- // }
- // }
+ // public static void scan() throws InstantiationException, IllegalAccessException {
+ // // TODO currently extcos 0.3b doesn't support to search packages like "com.*.eagle.*", "org.*.eagle.*".
+ // However 0.4b depends on asm-all version 4.0, which is
+ // // conflicted with jersey server 1.8. We should fix it later
+ // LOG.info("Scanning all entity repositories with pattern \"org.apache.eagle.*\"");
+ // final ComponentScanner scanner = new ComponentScanner();
+ // final Set<Class<?>> classes = scanner.getClasses(new EntityRepoScanQuery() );
+ // for (Class<?> entityClass : classes) {
+ // LOG.info("Processing entity repository: " + entityClass.getName());
+ // if (EntityRepository.class.isAssignableFrom(entityClass)) {
+ // EntityRepository repo = (EntityRepository)entityClass.newInstance();
+ // addRepo(repo);
+ // }
+ // }
+ // }
public static void scan() throws IllegalAccessException, InstantiationException {
LOG.info("Scanning all entity repositories");
StopWatch stopWatch = new StopWatch();
stopWatch.start();
- for (Class<? extends EntityRepository> entityRepoClass : ReflectionsHelper.getInstance().getSubTypesOf(EntityRepository.class)) {
+ for (Class<? extends EntityRepository> entityRepoClass : ReflectionsHelper.getInstance()
+ .getSubTypesOf(EntityRepository.class)) {
if (EntityRepository.class.isAssignableFrom(entityRepoClass)) {
EntityRepository repo = entityRepoClass.newInstance();
addRepo(repo);
@@ -71,12 +73,12 @@ public final class EntityRepositoryScanner {
}
}
- // public static class EntityRepoScanQuery extends ComponentQuery {
+ // public static class EntityRepoScanQuery extends ComponentQuery {
//
- // @Override
- // protected void query() {
- // select().from("org.apache.eagle").returning(
- // allExtending(EntityRepository.class));
- // }
- // }
-}
\ No newline at end of file
+ // @Override
+ // protected void query() {
+ // select().from("org.apache.eagle").returning(
+ // allExtending(EntityRepository.class));
+ // }
+ // }
+}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestEntity.java
index 7aeffa8..f606a2a 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestEntity.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestEntity.java
@@ -26,82 +26,81 @@ import org.apache.eagle.log.entity.meta.Prefix;
import org.apache.eagle.log.entity.meta.Table;
/**
- * this class is written by customer, but it has some contracts
- * 0. This class should conform to java bean conventions
- * 1. Annotate this class with hbase table name
- * 2. Annotate this class with hbase column family name
- * 3. Annotate those qualifier fields with column name
- * 4. Fire property change event for all fields' setter method, where field name is mandatory parameter
+ * this class is written by customer, but it has some contracts 0. This class should conform to java bean
+ * conventions 1. Annotate this class with hbase table name 2. Annotate this class with hbase column family
+ * name 3. Annotate those qualifier fields with column name 4. Fire property change event for all fields'
+ * setter method, where field name is mandatory parameter
*/
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Table("alertdetail")
@ColumnFamily("f")
@Prefix("hadoop")
@TimeSeries(true)
public class TestEntity extends TaggedLogAPIEntity {
- @Column("remediationID")
- private String remediationID;
- @Column("remediationStatus")
- private String remediationStatus;
- @Column("c")
- private long count;
- @Column("d")
- private int numHosts;
- @Column("e")
- private Long numClusters;
+ @Column("remediationID")
+ private String remediationID;
+ @Column("remediationStatus")
+ private String remediationStatus;
+ @Column("c")
+ private long count;
+ @Column("d")
+ private int numHosts;
+ @Column("e")
+ private Long numClusters;
- public Long getNumClusters() {
- return numClusters;
- }
+ public Long getNumClusters() {
+ return numClusters;
+ }
- public void setNumClusters(Long numClusters) {
- this.numClusters = numClusters;
- pcs.firePropertyChange("numClusters", null, null);
- }
+ public void setNumClusters(Long numClusters) {
+ this.numClusters = numClusters;
+ pcs.firePropertyChange("numClusters", null, null);
+ }
- public int getNumHosts() {
- return numHosts;
- }
+ public int getNumHosts() {
+ return numHosts;
+ }
- public void setNumHosts(int numHosts) {
- this.numHosts = numHosts;
- pcs.firePropertyChange("numHosts", null, null);
- }
+ public void setNumHosts(int numHosts) {
+ this.numHosts = numHosts;
+ pcs.firePropertyChange("numHosts", null, null);
+ }
- public long getCount() {
- return count;
- }
+ public long getCount() {
+ return count;
+ }
- public void setCount(long count) {
- this.count = count;
- pcs.firePropertyChange("count", null, null);
- }
+ public void setCount(long count) {
+ this.count = count;
+ pcs.firePropertyChange("count", null, null);
+ }
- public String getRemediationID() {
- return remediationID;
- }
+ public String getRemediationID() {
+ return remediationID;
+ }
- public void setRemediationID(String remediationID) {
- this.remediationID = remediationID;
- pcs.firePropertyChange("remediationID", null, null);
- }
+ public void setRemediationID(String remediationID) {
+ this.remediationID = remediationID;
+ pcs.firePropertyChange("remediationID", null, null);
+ }
- public String getRemediationStatus() {
- return remediationStatus;
- }
+ public String getRemediationStatus() {
+ return remediationStatus;
+ }
- public void setRemediationStatus(String remediationStatus) {
- this.remediationStatus = remediationStatus;
- pcs.firePropertyChange("remediationStatus", null, null);
- }
-
- public String toString(){
- StringBuffer sb = new StringBuffer();
- sb.append(super.toString());
- sb.append(", remediationID:");
- sb.append(remediationID);
- sb.append(", remediationStatus:");
- sb.append(remediationStatus);
- return sb.toString();
- }
-}
\ No newline at end of file
+ public void setRemediationStatus(String remediationStatus) {
+ this.remediationStatus = remediationStatus;
+ pcs.firePropertyChange("remediationStatus", null, null);
+ }
+
+ @Override
+ public String toString() {
+ StringBuffer sb = new StringBuffer();
+ sb.append(super.toString());
+ sb.append(", remediationID:");
+ sb.append(remediationID);
+ sb.append(", remediationStatus:");
+ sb.append(remediationStatus);
+ return sb.toString();
+ }
+}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestLogAPIEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestLogAPIEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestLogAPIEntity.java
index 99d6620..5d213b1 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestLogAPIEntity.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestLogAPIEntity.java
@@ -20,80 +20,96 @@ import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
import org.apache.eagle.log.entity.meta.*;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Table("unittest")
@ColumnFamily("f")
@Prefix("entityut")
@Service("TestLogAPIEntity")
@TimeSeries(false)
@Indexes({
- @Index(name="jobIdIndex1", columns = { "jobID" }, unique = true),
- @Index(name="jobIdNonIndex2", columns = { "hostname" }, unique = false)
- })
+ @Index(name = "jobIdIndex1", columns = {
+ "jobID"
+ }, unique = true), @Index(name = "jobIdNonIndex2", columns = {
+ "hostname"
+ }, unique = false)
+ })
public class TestLogAPIEntity extends TaggedLogAPIEntity {
- @Column("a")
- private int field1;
- @Column("b")
- private Integer field2;
- @Column("c")
- private long field3;
- @Column("d")
- private Long field4;
- @Column("e")
- private double field5;
- @Column("f")
- private Double field6;
- @Column("g")
- private String field7;
-
- public int getField1() {
- return field1;
- }
- public void setField1(int field1) {
- this.field1 = field1;
- pcs.firePropertyChange("field1", null, null);
- }
- public Integer getField2() {
- return field2;
- }
- public void setField2(Integer field2) {
- this.field2 = field2;
- pcs.firePropertyChange("field2", null, null);
- }
- public long getField3() {
- return field3;
- }
- public void setField3(long field3) {
- this.field3 = field3;
- pcs.firePropertyChange("field3", null, null);
- }
- public Long getField4() {
- return field4;
- }
- public void setField4(Long field4) {
- this.field4 = field4;
- pcs.firePropertyChange("field4", null, null);
- }
- public double getField5() {
- return field5;
- }
- public void setField5(double field5) {
- this.field5 = field5;
- pcs.firePropertyChange("field5", null, null);
- }
- public Double getField6() {
- return field6;
- }
- public void setField6(Double field6) {
- this.field6 = field6;
- pcs.firePropertyChange("field6", null, null);
- }
- public String getField7() {
- return field7;
- }
- public void setField7(String field7) {
- this.field7 = field7;
- pcs.firePropertyChange("field7", null, null);
- }
+ @Column("a")
+ private int field1;
+ @Column("b")
+ private Integer field2;
+ @Column("c")
+ private long field3;
+ @Column("d")
+ private Long field4;
+ @Column("e")
+ private double field5;
+ @Column("f")
+ private Double field6;
+ @Column("g")
+ private String field7;
+
+ public int getField1() {
+ return field1;
+ }
+
+ public void setField1(int field1) {
+ this.field1 = field1;
+ pcs.firePropertyChange("field1", null, null);
+ }
+
+ public Integer getField2() {
+ return field2;
+ }
+
+ public void setField2(Integer field2) {
+ this.field2 = field2;
+ pcs.firePropertyChange("field2", null, null);
+ }
+
+ public long getField3() {
+ return field3;
+ }
+
+ public void setField3(long field3) {
+ this.field3 = field3;
+ pcs.firePropertyChange("field3", null, null);
+ }
+
+ public Long getField4() {
+ return field4;
+ }
+
+ public void setField4(Long field4) {
+ this.field4 = field4;
+ pcs.firePropertyChange("field4", null, null);
+ }
+
+ public double getField5() {
+ return field5;
+ }
+
+ public void setField5(double field5) {
+ this.field5 = field5;
+ pcs.firePropertyChange("field5", null, null);
+ }
+
+ public Double getField6() {
+ return field6;
+ }
+
+ public void setField6(Double field6) {
+ this.field6 = field6;
+ pcs.firePropertyChange("field6", null, null);
+ }
+
+ public String getField7() {
+ return field7;
+ }
+
+ public void setField7(String field7) {
+ this.field7 = field7;
+ pcs.firePropertyChange("field7", null, null);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestTimeSeriesAPIEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestTimeSeriesAPIEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestTimeSeriesAPIEntity.java
index 72cf5a2..bca195f 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestTimeSeriesAPIEntity.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/entity/test/TestTimeSeriesAPIEntity.java
@@ -21,77 +21,92 @@ import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import org.apache.eagle.log.base.taggedlog.TaggedLogAPIEntity;
-@JsonSerialize(include=JsonSerialize.Inclusion.NON_NULL)
+@JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
@Table("unittest")
@ColumnFamily("f")
@Prefix("testTSEntity")
@Service("TestTimeSeriesAPIEntity")
@TimeSeries(true)
-@Tags({"cluster","datacenter","random"})
+@Tags({
+ "cluster", "datacenter", "random"
+ })
public class TestTimeSeriesAPIEntity extends TaggedLogAPIEntity {
- @Column("a")
- private int field1;
- @Column("b")
- private Integer field2;
- @Column("c")
- private long field3;
- @Column("d")
- private Long field4;
- @Column("e")
- private double field5;
- @Column("f")
- private Double field6;
- @Column("g")
- private String field7;
-
- public int getField1() {
- return field1;
- }
- public void setField1(int field1) {
- this.field1 = field1;
- pcs.firePropertyChange("field1", null, null);
- }
- public Integer getField2() {
- return field2;
- }
- public void setField2(Integer field2) {
- this.field2 = field2;
- pcs.firePropertyChange("field2", null, null);
- }
- public long getField3() {
- return field3;
- }
- public void setField3(long field3) {
- this.field3 = field3;
- pcs.firePropertyChange("field3", null, null);
- }
- public Long getField4() {
- return field4;
- }
- public void setField4(Long field4) {
- this.field4 = field4;
- pcs.firePropertyChange("field4", null, null);
- }
- public double getField5() {
- return field5;
- }
- public void setField5(double field5) {
- this.field5 = field5;
- pcs.firePropertyChange("field5", null, null);
- }
- public Double getField6() {
- return field6;
- }
- public void setField6(Double field6) {
- this.field6 = field6;
- pcs.firePropertyChange("field6", null, null);
- }
- public String getField7() {
- return field7;
- }
- public void setField7(String field7) {
- this.field7 = field7;
- pcs.firePropertyChange("field7", null, null);
- }
+ @Column("a")
+ private int field1;
+ @Column("b")
+ private Integer field2;
+ @Column("c")
+ private long field3;
+ @Column("d")
+ private Long field4;
+ @Column("e")
+ private double field5;
+ @Column("f")
+ private Double field6;
+ @Column("g")
+ private String field7;
+
+ public int getField1() {
+ return field1;
+ }
+
+ public void setField1(int field1) {
+ this.field1 = field1;
+ pcs.firePropertyChange("field1", null, null);
+ }
+
+ public Integer getField2() {
+ return field2;
+ }
+
+ public void setField2(Integer field2) {
+ this.field2 = field2;
+ pcs.firePropertyChange("field2", null, null);
+ }
+
+ public long getField3() {
+ return field3;
+ }
+
+ public void setField3(long field3) {
+ this.field3 = field3;
+ pcs.firePropertyChange("field3", null, null);
+ }
+
+ public Long getField4() {
+ return field4;
+ }
+
+ public void setField4(Long field4) {
+ this.field4 = field4;
+ pcs.firePropertyChange("field4", null, null);
+ }
+
+ public double getField5() {
+ return field5;
+ }
+
+ public void setField5(double field5) {
+ this.field5 = field5;
+ pcs.firePropertyChange("field5", null, null);
+ }
+
+ public Double getField6() {
+ return field6;
+ }
+
+ public void setField6(Double field6) {
+ this.field6 = field6;
+ pcs.firePropertyChange("field6", null, null);
+ }
+
+ public String getField7() {
+ return field7;
+ }
+
+ public void setField7(String field7) {
+ this.field7 = field7;
+ pcs.firePropertyChange("field7", null, null);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
index 4f74715..39dd34b 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ExpressionParser.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
/**
- *
+ *
*/
package org.apache.eagle.log.expression;
@@ -37,171 +37,169 @@ import java.util.Map;
import java.util.Map.Entry;
/**
- * <h1>Expression Evaluation</h1>
- *
- * Given expression in string and set context variables, return value in double
- *
+ * <h1>Expression Evaluation</h1> Given expression in string and set context variables, return value in double
* <br/>
* <br/>
- * For example:
- * <code>EXP{(max(a, b)* min(a, b)) / abs(a-b+c-d)} => 600.0</code>
- *
- * <br/>
- * <br/>
- * <b>NOTE:</b> Expression variable <b>must</b> be in format: <code>fieldName</code> instead of <code>@fieldName</code>
- *
+ * For example: <code>EXP{(max(a, b)* min(a, b)) / abs(a-b+c-d)} => 600.0</code> <br/>
* <br/>
+ * <b>NOTE:</b> Expression variable <b>must</b> be in format: <code>fieldName</code> instead of
+ * <code>@fieldName</code> <br/>
* <br/>
* <h2>Dependencies:</h2>
* <ul>
- * <li>
- * <a href="https://github.com/scireum/parsii">scireum/parsii</a>
- * <i>Super fast and simple evaluator for mathematical expressions written in Java</i>
- * </li>
+ * <li><a href="https://github.com/scireum/parsii">scireum/parsii</a> <i>Super fast and simple evaluator for
+ * mathematical expressions written in Java</i></li>
* </ul>
- *
*/
-public class ExpressionParser{
- private final static Logger LOG = LoggerFactory.getLogger(ExpressionParser.class);
-
- private String exprStr;
- private Expression expression;
- private Scope scope;
-
- @SuppressWarnings("unused")
- public Scope getScope() {
- return scope;
- }
-
- private List<String> dependentFields;
-
- /**
- * @param exprStr expression string in format like: <code>(max(a, b)* min(a, b)) / abs(a-b+c-d)</code>
- *
- * @throws ParseException
- * @throws ParsiiInvalidException
- */
- public ExpressionParser(String exprStr) throws ParseException, ParsiiInvalidException{
- this.exprStr = exprStr;
- scope = Scope.create();
- expression = Parser.parse(this.exprStr,scope);
- }
-
- @SuppressWarnings("unused")
- public ExpressionParser(String exprStr, Map<String, Double> context) throws ParsiiInvalidException, ParseException, ParsiiUnknowVariableException {
- this(exprStr);
- setVariables(context);
- }
-
- public ExpressionParser setVariables(Map<String, Double> tuple) throws ParsiiUnknowVariableException{
-// for(String valName : tuple.keySet()) {
-// Double value = tuple.get(valName);
- for(Map.Entry<String,Double> entry : tuple.entrySet()) {
+public class ExpressionParser {
+ private static final Logger LOG = LoggerFactory.getLogger(ExpressionParser.class);
+
+ private String exprStr;
+ private Expression expression;
+ private Scope scope;
+
+ private List<String> dependentFields;
+
+ /**
+ * @param exprStr expression string in format like: <code>(max(a, b)* min(a, b)) / abs(a-b+c-d)</code>
+ * @throws ParseException
+ * @throws ParsiiInvalidException
+ */
+ public ExpressionParser(String exprStr) throws ParseException, ParsiiInvalidException {
+ this.exprStr = exprStr;
+ scope = Scope.create();
+ expression = Parser.parse(this.exprStr, scope);
+ }
+
+ @SuppressWarnings("unused")
+ public ExpressionParser(String exprStr, Map<String, Double> context)
+ throws ParsiiInvalidException, ParseException, ParsiiUnknowVariableException {
+ this(exprStr);
+ setVariables(context);
+ }
+
+ public ExpressionParser setVariables(Map<String, Double> tuple) throws ParsiiUnknowVariableException {
+ // for(String valName : tuple.keySet()) {
+ // Double value = tuple.get(valName);
+ for (Map.Entry<String, Double> entry : tuple.entrySet()) {
String valName = entry.getKey();
Double value = entry.getValue();
- Variable variable = scope.getVariable(valName);
- if(variable!=null && value !=null) {
- variable.setValue(value);
- }else{
- if(LOG.isDebugEnabled()) LOG.warn("Variable for "+valName+" is null in scope of expression: "+this.exprStr);
- }
- }
- return this;
- }
-
- @SuppressWarnings("unused")
- public ExpressionParser setVariable(Entry<String, Double> tuple) throws ParsiiUnknowVariableException{
- if (getDependentFields().contains(tuple.getKey())) {
- scope.getVariable(tuple.getKey()).setValue(tuple.getValue());
- }
- else {
- throw new ParsiiUnknowVariableException("unknown variable: " + tuple.getKey());
- }
- return this;
- }
-
- public ExpressionParser setVariable(String key, Double value) throws ParsiiUnknowVariableException{
- scope.getVariable(key).setValue(value);
- return this;
- }
-
- public double eval() throws Exception{
- return expression.evaluate();
- }
-
- /**
- * Thread safe
- *
- * @param tuple
- * @return
- * @throws ParsiiUnknowVariableException
- */
- public double eval(Map<String, Double> tuple) throws Exception {
- synchronized (this){
- this.setVariables(tuple);
- return this.eval();
- }
- }
-
- public List<String> getDependentFields() {
- if (dependentFields == null) {
- dependentFields = new ArrayList<String>();
- for (String variable : scope.getNames()) {
- if (!variable.equals("pi") && !variable.equals("E") && !variable.equals("euler"))
- dependentFields.add(variable);
- }
- }
- return dependentFields;
- }
-
- private final static Map<String, ExpressionParser> _exprParserCache = new HashMap<String, ExpressionParser>();
-
- /**
- * Thread safe
- *
- * @param expr
- * @return
- * @throws ParsiiInvalidException
- * @throws ParseException
- */
- public static ExpressionParser parse(String expr) throws ParsiiInvalidException, ParseException {
- if(expr == null) throw new IllegalStateException("Expression to parse is null");
- synchronized (_exprParserCache) {
- ExpressionParser parser = _exprParserCache.get(expr);
- if (parser == null) {
- parser = new ExpressionParser(expr);
- _exprParserCache.put(expr, parser);
- }
- return parser;
- }
- }
- public static double eval(String expression,Map<String,Double> context) throws Exception {
- ExpressionParser parser = parse(expression);
- return parser.eval(context);
- }
-
- private static final Map<String,Method> _entityMethodCache = new HashMap<String, Method>();
- public static double eval(String expression,TaggedLogAPIEntity entity) throws Exception {
- ExpressionParser parser = parse(expression);
- List<String> dependencies = parser.getDependentFields();
- Map<String,Double> context = new HashMap<String,Double>();
- for(String field:dependencies){
- String methodName = "get"+field.substring(0, 1).toUpperCase() + field.substring(1);
- String methodUID = entity.getClass().getName()+"."+methodName;
-
- Method m;
- synchronized (_entityMethodCache) {
- m = _entityMethodCache.get(methodUID);
- if (m == null) {
- m = entity.getClass().getMethod(methodName);
- _entityMethodCache.put(methodUID, m);
- }
- }
- Object obj = m.invoke(entity);
- Double doubleValue = EntityQualifierUtils.convertObjToDouble(obj);
- // if(doubleValue == Double.NaN) throw new IllegalArgumentException("Field "+field+": "+obj+" in expression "+expression+" is not number");
- context.put(field,doubleValue);
- }
- return parser.eval(context);
- }
+ Variable variable = scope.getVariable(valName);
+ if (variable != null && value != null) {
+ variable.setValue(value);
+ } else {
+ if (LOG.isDebugEnabled()) {
+ LOG.warn("Variable for " + valName + " is null in scope of expression: " + this.exprStr);
+ }
+ }
+ }
+ return this;
+ }
+
+ @SuppressWarnings("unused")
+ public ExpressionParser setVariable(Entry<String, Double> tuple) throws ParsiiUnknowVariableException {
+ if (getDependentFields().contains(tuple.getKey())) {
+ scope.getVariable(tuple.getKey()).setValue(tuple.getValue());
+ } else {
+ throw new ParsiiUnknowVariableException("unknown variable: " + tuple.getKey());
+ }
+ return this;
+ }
+
+ public ExpressionParser setVariable(String key, Double value) throws ParsiiUnknowVariableException {
+ scope.getVariable(key).setValue(value);
+ return this;
+ }
+
+ public double eval() throws Exception {
+ return expression.evaluate();
+ }
+
+ public static double eval(String expression, TaggedLogAPIEntity entity) throws Exception {
+ ExpressionParser parser = parse(expression);
+ List<String> dependencies = parser.getDependentFields();
+ Map<String, Double> context = new HashMap<String, Double>();
+ for (String field : dependencies) {
+ String methodName = "get" + field.substring(0, 1).toUpperCase() + field.substring(1);
+ String methodUID = entity.getClass().getName() + "." + methodName;
+
+ Method m;
+ synchronized (_entityMethodCache) {
+ m = _entityMethodCache.get(methodUID);
+ if (m == null) {
+ m = entity.getClass().getMethod(methodName);
+ _entityMethodCache.put(methodUID, m);
+ }
+ }
+ Object obj = m.invoke(entity);
+ Double doubleValue = EntityQualifierUtils.convertObjToDouble(obj);
+ // if(doubleValue == Double.NaN) throw new IllegalArgumentException("Field "+field+": "+obj+" in
+ // expression "+expression+" is not number");
+ context.put(field, doubleValue);
+ }
+ return parser.eval(context);
+ }
+
+ /**
+ * Thread safe
+ *
+ * @param tuple
+ * @return
+ * @throws ParsiiUnknowVariableException
+ */
+ public double eval(Map<String, Double> tuple) throws Exception {
+ synchronized (this) {
+ this.setVariables(tuple);
+ return this.eval();
+ }
+ }
+
+ public static double eval(String expression, Map<String, Double> context) throws Exception {
+ ExpressionParser parser = parse(expression);
+ return parser.eval(context);
+ }
+
+ @SuppressWarnings("unused")
+ public Scope getScope() {
+ return scope;
+ }
+
+ public List<String> getDependentFields() {
+ if (dependentFields == null) {
+ dependentFields = new ArrayList<String>();
+ for (String variable : scope.getNames()) {
+ if (!variable.equals("pi") && !variable.equals("E") && !variable.equals("euler")) {
+ dependentFields.add(variable);
+ }
+ }
+ }
+ return dependentFields;
+ }
+
+ private static final Map<String, ExpressionParser> _exprParserCache = new HashMap<String, ExpressionParser>();
+
+ /**
+ * Thread safe
+ *
+ * @param expr
+ * @return
+ * @throws ParsiiInvalidException
+ * @throws ParseException
+ */
+ public static ExpressionParser parse(String expr) throws ParsiiInvalidException, ParseException {
+ if (expr == null) {
+ throw new IllegalStateException("Expression to parse is null");
+ }
+ synchronized (_exprParserCache) {
+ ExpressionParser parser = _exprParserCache.get(expr);
+ if (parser == null) {
+ parser = new ExpressionParser(expr);
+ _exprParserCache.put(expr, parser);
+ }
+ return parser;
+ }
+ }
+
+ private static final Map<String, Method> _entityMethodCache = new HashMap<String, Method>();
+
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
index 22301f8..b53d947 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiInvalidException.java
@@ -22,36 +22,36 @@ package org.apache.eagle.log.expression;
/**
* @since Nov 7, 2014
*/
-public class ParsiiInvalidException extends Exception{
-
- private static final long serialVersionUID = 1L;
+public class ParsiiInvalidException extends Exception {
- /**
- * Default constructor
- */
- public ParsiiInvalidException() {
- super();
- }
+ private static final long serialVersionUID = 1L;
- /**
- * @param message
- * @param cause
- */
- public ParsiiInvalidException(String message, Throwable cause) {
- super(message, cause);
- }
+ /**
+ * Default constructor
+ */
+ public ParsiiInvalidException() {
+ super();
+ }
- /**
- * @param message
- */
- public ParsiiInvalidException(String message) {
- super(message);
- }
+ /**
+ * @param message
+ * @param cause
+ */
+ public ParsiiInvalidException(String message, Throwable cause) {
+ super(message, cause);
+ }
- /**
- * @param cause
- */
- public ParsiiInvalidException(Throwable cause) {
- super(cause);
- }
+ /**
+ * @param message
+ */
+ public ParsiiInvalidException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public ParsiiInvalidException(Throwable cause) {
+ super(cause);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
index 1573a08..bfe5a81 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/main/java/org/apache/eagle/log/expression/ParsiiUnknowVariableException.java
@@ -22,36 +22,36 @@ package org.apache.eagle.log.expression;
/**
* @since Nov 7, 2014
*/
-public class ParsiiUnknowVariableException extends Exception{
-
- private static final long serialVersionUID = 1L;
+public class ParsiiUnknowVariableException extends Exception {
- /**
- * Default constructor
- */
- public ParsiiUnknowVariableException() {
- super();
- }
+ private static final long serialVersionUID = 1L;
- /**
- * @param message
- * @param cause
- */
- public ParsiiUnknowVariableException(String message, Throwable cause) {
- super(message, cause);
- }
+ /**
+ * Default constructor
+ */
+ public ParsiiUnknowVariableException() {
+ super();
+ }
- /**
- * @param message
- */
- public ParsiiUnknowVariableException(String message) {
- super(message);
- }
+ /**
+ * @param message
+ * @param cause
+ */
+ public ParsiiUnknowVariableException(String message, Throwable cause) {
+ super(message, cause);
+ }
- /**
- * @param cause
- */
- public ParsiiUnknowVariableException(Throwable cause) {
- super(cause);
- }
+ /**
+ * @param message
+ */
+ public ParsiiUnknowVariableException(String message) {
+ super(message);
+ }
+
+ /**
+ * @param cause
+ */
+ public ParsiiUnknowVariableException(Throwable cause) {
+ super(cause);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/TestGenericServiceAPIResponseEntity.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/TestGenericServiceAPIResponseEntity.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/TestGenericServiceAPIResponseEntity.java
index 092ef75..8d1bf22 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/TestGenericServiceAPIResponseEntity.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/TestGenericServiceAPIResponseEntity.java
@@ -34,34 +34,40 @@ import java.util.LinkedList;
* @since 3/18/15
*/
public class TestGenericServiceAPIResponseEntity {
- final static Logger LOG = LoggerFactory.getLogger(TestGenericServiceAPIResponseEntity.class);
+ static final Logger LOG = LoggerFactory.getLogger(TestGenericServiceAPIResponseEntity.class);
ObjectMapper objectMapper;
@Before
- public void setUp(){
+ public void setUp() {
objectMapper = new ObjectMapper();
}
@JsonSerialize
- public static class Item{
- public Item(){}
- public Item(String name,Double value){
+ public static class Item {
+ public Item() {
+ }
+
+ public Item(String name, Double value) {
this.name = name;
this.value = value;
}
+
private String name;
private Double value;
public String getName() {
return name;
}
+
public void setName(String name) {
this.name = name;
}
+
public Double getValue() {
return value;
}
+
public void setValue(Double value) {
this.value = value;
}
@@ -71,22 +77,25 @@ public class TestGenericServiceAPIResponseEntity {
public void testSerDeserialize() throws IOException {
// mock up service side to serialize
GenericServiceAPIResponseEntity<Item> entity = new GenericServiceAPIResponseEntity<Item>(Item.class);
- entity.setObj(Arrays.asList(new Item("a",1.2),new Item("b",1.3),new Item("c",1.4)));
- entity.setMeta(new HashMap<String, Object>(){{
- put("tag1","val1");
- put("tag2","val2");
- }});
+ entity.setObj(Arrays.asList(new Item("a", 1.2), new Item("b", 1.3), new Item("c", 1.4)));
+ entity.setMeta(new HashMap<String, Object>() {
+ {
+ put("tag1", "val1");
+ put("tag2", "val2");
+ }
+ });
-// entity.setTypeByObj();
+ // entity.setTypeByObj();
entity.setSuccess(true);
String json = objectMapper.writeValueAsString(entity);
LOG.info(json);
// mock up client side to deserialize
- GenericServiceAPIResponseEntity deserEntity = objectMapper.readValue(json,GenericServiceAPIResponseEntity.class);
- Assert.assertEquals(json,objectMapper.writeValueAsString(deserEntity));
+ GenericServiceAPIResponseEntity deserEntity = objectMapper
+ .readValue(json, GenericServiceAPIResponseEntity.class);
+ Assert.assertEquals(json, objectMapper.writeValueAsString(deserEntity));
Assert.assertEquals(3, deserEntity.getObj().size());
- Assert.assertEquals(LinkedList.class,deserEntity.getObj().getClass());
- Assert.assertEquals(Item.class,deserEntity.getObj().get(0).getClass());
+ Assert.assertEquals(LinkedList.class, deserEntity.getObj().getClass());
+ Assert.assertEquals(Item.class, deserEntity.getObj().get(0).getClass());
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDouble2DArraySerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDouble2DArraySerDeser.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDouble2DArraySerDeser.java
index 12fba59..85ce8a5 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDouble2DArraySerDeser.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDouble2DArraySerDeser.java
@@ -26,23 +26,25 @@ public class TestDouble2DArraySerDeser {
private Double2DArraySerDeser double2DArraySerDeser = new Double2DArraySerDeser();
@Test
- public void testSerDeser(){
- double[][] data = new double[][]{
- {0,1,2,4},
- {4,2,1,0},
- {4},
- null,
- {}
+ public void testSerDeser() {
+ double[][] data = new double[][] {
+ {
+ 0, 1, 2, 4
+ }, {
+ 4, 2, 1, 0
+ }, {
+ 4
+ }, null, {}
};
byte[] bytes = double2DArraySerDeser.serialize(data);
double[][] data2 = double2DArraySerDeser.deserialize(bytes);
- assert data.length == data2.length;
+ assert data.length == data2.length;
assert data[0].length == data2[0].length;
assert data[1].length == data2[1].length;
assert data[2].length == data2[2].length;
assert data[3] == data2[3] && data2[3] == null;
assert data[4].length == data2[4].length;
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDoubleSerDeser.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDoubleSerDeser.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDoubleSerDeser.java
index 2432e47..641f128 100644
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDoubleSerDeser.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestDoubleSerDeser.java
@@ -24,35 +24,46 @@ import org.junit.Test;
public class TestDoubleSerDeser {
- @Test
- public void test() {
- DoubleSerDeser dsd = new DoubleSerDeser();
- //byte[] t = {'N', 'a', 'N'};
- byte [] t = dsd.serialize(Double.NaN);
-
- Double d = dsd.deserialize(t);
- System.out.println(d);
- //Double d = dsd.deserialize(t);
- }
+ @Test
+ public void test() {
+ DoubleSerDeser dsd = new DoubleSerDeser();
+ // byte[] t = {'N', 'a', 'N'};
+ byte[] t = dsd.serialize(Double.NaN);
- /**
- * @link http://en.wikipedia.org/wiki/Double-precision_floating-point_format
- */
- @Test
- public void testIEEE754_Binary64_DoublePrecisionFloatingPointFormat(){
- for(Double last = null,i=Math.pow(-2.0,33);i< Math.pow(2.0,33);i+=Math.pow(2.0,10)){
- if(last != null){
- Assert.assertTrue(i > last);
- if(last < 0 && i <0){
- Assert.assertTrue("Negative double value and its serialization Binary array have negative correlation", new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) < 0);
- }else if(last < 0 && i >=0){
- Assert.assertTrue("Binary array for negative double is always greater than any positive doubles' ",new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) < 0);
- }else if(last >= 0){
- Assert.assertTrue("Positive double value and its serialization Binary array have positive correlation",new BinaryComparator(ByteUtil.doubleToBytes(i)).compareTo(ByteUtil.doubleToBytes(last)) > 0);
- }
- }
- last = i;
- }
- Assert.assertTrue("Binary array for negative double is always greater than any positive doubles'",new BinaryComparator(ByteUtil.doubleToBytes(-1.0)).compareTo(ByteUtil.doubleToBytes(Math.pow(2.0,32)))>0) ;
- }
+ Double d = dsd.deserialize(t);
+ System.out.println(d);
+ // Double d = dsd.deserialize(t);
+ }
+
+ /**
+ * @link http://en.wikipedia.org/wiki/Double-precision_floating-point_format
+ */
+ @Test
+ public void testIEEE754_Binary64_DoublePrecisionFloatingPointFormat() {
+ for (Double last = null, i = Math.pow(-2.0, 33); i < Math.pow(2.0, 33); i += Math.pow(2.0, 10)) {
+ if (last != null) {
+ Assert.assertTrue(i > last);
+ if (last < 0 && i < 0) {
+ Assert
+ .assertTrue("Negative double value and its serialization Binary array have negative correlation",
+ new BinaryComparator(ByteUtil.doubleToBytes(i))
+ .compareTo(ByteUtil.doubleToBytes(last)) < 0);
+ } else if (last < 0 && i >= 0) {
+ Assert
+ .assertTrue("Binary array for negative double is always greater than any positive doubles' ",
+ new BinaryComparator(ByteUtil.doubleToBytes(i))
+ .compareTo(ByteUtil.doubleToBytes(last)) < 0);
+ } else if (last >= 0) {
+ Assert
+ .assertTrue("Positive double value and its serialization Binary array have positive correlation",
+ new BinaryComparator(ByteUtil.doubleToBytes(i))
+ .compareTo(ByteUtil.doubleToBytes(last)) > 0);
+ }
+ }
+ last = i;
+ }
+ Assert.assertTrue("Binary array for negative double is always greater than any positive doubles'",
+ new BinaryComparator(ByteUtil.doubleToBytes(-1.0))
+ .compareTo(ByteUtil.doubleToBytes(Math.pow(2.0, 32))) > 0);
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestGenericEntityIndexStreamReader.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestGenericEntityIndexStreamReader.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestGenericEntityIndexStreamReader.java
index 33aee32..cb1534c 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestGenericEntityIndexStreamReader.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestGenericEntityIndexStreamReader.java
@@ -38,15 +38,17 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
@BeforeClass
public static void createTable() throws IOException, IllegalAccessException, InstantiationException {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+ EntityDefinition entityDefinition = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
}
@Test
public void testUniqueIndexRead() throws Exception {
EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- final EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-
+ final EntityDefinition ed = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+
final List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
TestLogAPIEntity e = new TestLogAPIEntity();
e.setField1(1);
@@ -64,7 +66,7 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
List<String> result = writer.write(list);
Assert.assertNotNull(result);
-
+
final IndexDefinition indexDef = ed.getIndexes()[0];
SearchCondition condition = new SearchCondition();
condition.setOutputFields(new ArrayList<String>());
@@ -82,7 +84,7 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
UniqueIndexStreamReader indexReader = new UniqueIndexStreamReader(indexDef, condition);
GenericEntityBatchReader batchReader = new GenericEntityBatchReader(indexReader);
- List<TestLogAPIEntity> entities = batchReader.read();
+ List<TestLogAPIEntity> entities = batchReader.read();
Assert.assertNotNull(entities);
Assert.assertTrue(entities.size() >= 1);
TestLogAPIEntity e1 = entities.get(0);
@@ -93,25 +95,27 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
Assert.assertEquals(e.getField5(), e1.getField5(), 0.001);
Assert.assertEquals(e.getField6(), e1.getField6());
Assert.assertEquals(e.getField7(), e1.getField7());
-
+
GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
deleter.delete(list);
-
+
indexReader = new UniqueIndexStreamReader(indexDef, condition);
batchReader = new GenericEntityBatchReader(indexReader);
- entities = batchReader.read();
+ entities = batchReader.read();
Assert.assertNotNull(entities);
Assert.assertTrue(entities.isEmpty());
}
@Test
public void testNonClusterIndexRead() throws Exception {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+ EntityDefinition entityDefinition = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
// hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
- final EntityDefinition ed = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
-
+ final EntityDefinition ed = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+
final List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
TestLogAPIEntity e = new TestLogAPIEntity();
e.setField1(1);
@@ -129,7 +133,7 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
GenericEntityWriter writer = new GenericEntityWriter(ed.getService());
List<String> result = writer.write(list);
Assert.assertNotNull(result);
-
+
final IndexDefinition indexDef = ed.getIndexes()[1];
SearchCondition condition = new SearchCondition();
condition.setOutputFields(new ArrayList<String>());
@@ -147,7 +151,7 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
NonClusteredIndexStreamReader indexReader = new NonClusteredIndexStreamReader(indexDef, condition);
GenericEntityBatchReader batchReader = new GenericEntityBatchReader(indexReader);
- List<TestLogAPIEntity> entities = batchReader.read();
+ List<TestLogAPIEntity> entities = batchReader.read();
Assert.assertNotNull(entities);
Assert.assertTrue(entities.size() >= 1);
TestLogAPIEntity e1 = entities.get(0);
@@ -159,13 +163,12 @@ public class TestGenericEntityIndexStreamReader extends TestHBaseBase {
Assert.assertEquals(e.getField6(), e1.getField6());
Assert.assertEquals(e.getField7(), e1.getField7());
-
GenericDeleter deleter = new GenericDeleter(ed.getTable(), ed.getColumnFamily());
deleter.delete(list);
-
+
indexReader = new NonClusteredIndexStreamReader(indexDef, condition);
batchReader = new GenericEntityBatchReader(indexReader);
- entities = batchReader.read();
+ entities = batchReader.read();
// hbase.deleteTable(entityDefinition.getTable());
Assert.assertNotNull(entities);
Assert.assertTrue(entities.isEmpty());
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseIntegerLogHelper.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseIntegerLogHelper.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseIntegerLogHelper.java
index a755668..2b9e915 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseIntegerLogHelper.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseIntegerLogHelper.java
@@ -31,37 +31,37 @@ import java.util.Map;
* @since : 11/10/14,2014
*/
public class TestHBaseIntegerLogHelper {
- @Test
- public void testTimeSeriesAPIEntity(){
- InternalLog internalLog = new InternalLog();
- Map<String,byte[]> map = new HashMap<String,byte[]>();
- TestTimeSeriesAPIEntity apiEntity = new TestTimeSeriesAPIEntity();
- EntityDefinition ed = null;
- try {
- ed = EntityDefinitionManager.getEntityByServiceName("TestTimeSeriesAPIEntity");
- } catch (InstantiationException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- map.put("a", ByteUtil.intToBytes(12));
- map.put("c", ByteUtil.longToBytes(123432432l));
- map.put("cluster", new String("cluster4ut").getBytes());
- map.put("datacenter", new String("datacenter4ut").getBytes());
+ @Test
+ public void testTimeSeriesAPIEntity() {
+ InternalLog internalLog = new InternalLog();
+ Map<String, byte[]> map = new HashMap<String, byte[]>();
+ TestTimeSeriesAPIEntity apiEntity = new TestTimeSeriesAPIEntity();
+ EntityDefinition ed = null;
+ try {
+ ed = EntityDefinitionManager.getEntityByServiceName("TestTimeSeriesAPIEntity");
+ } catch (InstantiationException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ map.put("a", ByteUtil.intToBytes(12));
+ map.put("c", ByteUtil.longToBytes(123432432l));
+ map.put("cluster", new String("cluster4ut").getBytes());
+ map.put("datacenter", new String("datacenter4ut").getBytes());
- internalLog.setQualifierValues(map);
- internalLog.setTimestamp(System.currentTimeMillis());
+ internalLog.setQualifierValues(map);
+ internalLog.setTimestamp(System.currentTimeMillis());
- try {
- TaggedLogAPIEntity entity = HBaseInternalLogHelper.buildEntity(internalLog, ed);
- Assert.assertTrue(entity instanceof TestTimeSeriesAPIEntity);
- TestTimeSeriesAPIEntity tsentity = (TestTimeSeriesAPIEntity) entity;
- Assert.assertEquals("cluster4ut",tsentity.getTags().get("cluster"));
- Assert.assertEquals("datacenter4ut",tsentity.getTags().get("datacenter"));
- Assert.assertEquals(12,tsentity.getField1());
- Assert.assertEquals(123432432l,tsentity.getField3());
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
+ try {
+ TaggedLogAPIEntity entity = HBaseInternalLogHelper.buildEntity(internalLog, ed);
+ Assert.assertTrue(entity instanceof TestTimeSeriesAPIEntity);
+ TestTimeSeriesAPIEntity tsentity = (TestTimeSeriesAPIEntity)entity;
+ Assert.assertEquals("cluster4ut", tsentity.getTags().get("cluster"));
+ Assert.assertEquals("datacenter4ut", tsentity.getTags().get("datacenter"));
+ Assert.assertEquals(12, tsentity.getField1());
+ Assert.assertEquals(123432432l, tsentity.getField3());
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/eagle/blob/6e919c2e/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
----------------------------------------------------------------------
diff --git a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
index 4324b73..04a1336 100755
--- a/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
+++ b/eagle-core/eagle-query/eagle-entity-base/src/test/java/org/apache/eagle/log/entity/TestHBaseWriteEntitiesPerformance.java
@@ -38,7 +38,8 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
@Before
public void setUp() throws IllegalAccessException, InstantiationException, IOException {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+ EntityDefinition entityDefinition = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
hbase.createTable(entityDefinition.getTable(), entityDefinition.getColumnFamily());
EntityDefinitionManager.registerEntity(TestLogAPIEntity.class);
@@ -52,7 +53,8 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
@After
public void cleanUp() throws IllegalAccessException, InstantiationException, IOException {
- EntityDefinition entityDefinition = EntityDefinitionManager.getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
+ EntityDefinition entityDefinition = EntityDefinitionManager
+ .getEntityDefinitionByEntityClass(TestLogAPIEntity.class);
hbase.deleteTable(entityDefinition.getTable());
}
@@ -70,15 +72,15 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
int wroteCount = 0;
List<String> rowkeys = new ArrayList<String>();
List<TestLogAPIEntity> list = new ArrayList<TestLogAPIEntity>();
- for (int i = 0 ; i <= count;i++) {
+ for (int i = 0; i <= count; i++) {
TestLogAPIEntity e = new TestLogAPIEntity();
e.setTimestamp(new Date().getTime());
e.setField1(i);
e.setField2(i);
e.setField3(i);
- e.setField4((long) i);
- e.setField5((double) i);
- e.setField6((double) i);
+ e.setField4((long)i);
+ e.setField5(i);
+ e.setField6((double)i);
e.setField7(String.valueOf(i));
e.setTags(new HashMap<String, String>());
e.getTags().put("jobID", "index_test_job_id");
@@ -87,14 +89,17 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
e.getTags().put("class", e.toString());
list.add(e);
- if ( list.size() >= 1000) {
+ if (list.size() >= 1000) {
try {
StopWatch watch = new StopWatch();
watch.start();
rowkeys.addAll(writer.write(list));
watch.stop();
wroteCount += list.size();
- if (LOG.isDebugEnabled()) LOG.debug("Wrote "+wroteCount+" / "+count+" entities"+" in "+watch.getTime()+" ms");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("Wrote " + wroteCount + " / " + count + " entities" + " in "
+ + watch.getTime() + " ms");
+ }
list.clear();
} catch (Exception e1) {
Assert.fail(e1.getMessage());
@@ -105,11 +110,15 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
try {
rowkeys.addAll(writer.write(list));
wroteCount += list.size();
- if (LOG.isDebugEnabled()) LOG.debug("wrote "+wroteCount+" / "+count+" entities");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("wrote " + wroteCount + " / " + count + " entities");
+ }
} catch (Exception e) {
Assert.fail(e.getMessage());
}
- if (LOG.isDebugEnabled()) LOG.debug("done "+count+" entities");
+ if (LOG.isDebugEnabled()) {
+ LOG.debug("done " + count + " entities");
+ }
return rowkeys;
}
@@ -127,4 +136,4 @@ public class TestHBaseWriteEntitiesPerformance extends TestHBaseBase {
LOG.info("End time: " + endTime);
LOG.info("Totally take " + watch.getTime() * 1.0 / 1000 + " s");
}
-}
\ No newline at end of file
+}