From 772fa95e56b847166310c8a9957e7937f5ace2bc Mon Sep 17 00:00:00 2001 From: littlezhou Date: Thu, 3 May 2018 13:25:07 +0800 Subject: [PATCH] Solve #1722, Rename and refine implementation of top N access count (#1723) --- .../org/smartdata/server/engine/rule/RuleExecutor.java | 7 ++++--- .../main/java/org/smartdata/metastore/dao/GeneralDao.java | 3 +-- .../main/java/org/smartdata/rule/objects/FileObject.java | 4 ++-- .../smartdata/rule/parser/SmartRuleVisitTranslator.java | 6 +++--- .../java/org/smartdata/rule/TestSmartRuleStringParser.java | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/smart-engine/src/main/java/org/smartdata/server/engine/rule/RuleExecutor.java b/smart-engine/src/main/java/org/smartdata/server/engine/rule/RuleExecutor.java index e3cb6d609c5..832d8f3bbdb 100644 --- a/smart-engine/src/main/java/org/smartdata/server/engine/rule/RuleExecutor.java +++ b/smart-engine/src/main/java/org/smartdata/server/engine/rule/RuleExecutor.java @@ -112,7 +112,8 @@ public List executeFileRuleQuery() { if (index == tr.getRetSqlIndex()) { ret = adapter.executeFilesPathQuery(sql); } else { - if (sql != null && sql.length() > 3) { + sql = sql.trim(); + if (sql.length() > 5) { adapter.execute(sql); } } @@ -145,7 +146,7 @@ public String callFunction(String funcName, List parameters) { } } - public String genVirtualAccessCountTableMaxValue(List parameters) { + public String genVirtualAccessCountTableTopValue(List parameters) { List paraList = (List) parameters.get(0); String table = (String) parameters.get(1); String var = (String) parameters.get(2); @@ -156,7 +157,7 @@ public String genVirtualAccessCountTableMaxValue(List parameters) { try { count = adapter.queryForLong(sql0); } catch (MetaStoreException e) { - LOG.error("Get maximum access count from table '" + table + "' error.", e); + LOG.error("Get top access count from table '" + table + "' error.", e); } ctx.setProperty(var, count == null ? 0L : count); return null; diff --git a/smart-metastore/src/main/java/org/smartdata/metastore/dao/GeneralDao.java b/smart-metastore/src/main/java/org/smartdata/metastore/dao/GeneralDao.java index 662a7f7a460..2bc00710fc1 100644 --- a/smart-metastore/src/main/java/org/smartdata/metastore/dao/GeneralDao.java +++ b/smart-metastore/src/main/java/org/smartdata/metastore/dao/GeneralDao.java @@ -30,7 +30,6 @@ public GeneralDao(DataSource dataSource) { public Long queryForLong(String sql) { JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); - Long x = jdbcTemplate.queryForObject(sql, Long.class); - return x; + return jdbcTemplate.queryForObject(sql, Long.class); } } diff --git a/smart-rule/src/main/java/org/smartdata/rule/objects/FileObject.java b/smart-rule/src/main/java/org/smartdata/rule/objects/FileObject.java index 97daaf5a152..782a1dee173 100644 --- a/smart-rule/src/main/java/org/smartdata/rule/objects/FileObject.java +++ b/smart-rule/src/main/java/org/smartdata/rule/objects/FileObject.java @@ -39,8 +39,8 @@ public class FileObject extends SmartObject { new Property("accessCount", ValueType.LONG, Arrays.asList(ValueType.TIMEINTVAL), "VIRTUAL_ACCESS_COUNT_TABLE", "", false, "count")); - PROPERTIES.put("accessCountMax", - new Property("accessCountMax", ValueType.LONG, + PROPERTIES.put("accessCountTop", + new Property("accessCountTop", ValueType.LONG, Arrays.asList(ValueType.TIMEINTVAL, ValueType.LONG), "VIRTUAL_ACCESS_COUNT_TABLE", "", false, "count")); PROPERTIES.put("length", diff --git a/smart-rule/src/main/java/org/smartdata/rule/parser/SmartRuleVisitTranslator.java b/smart-rule/src/main/java/org/smartdata/rule/parser/SmartRuleVisitTranslator.java index e9053ca1348..566f2fda388 100644 --- a/smart-rule/src/main/java/org/smartdata/rule/parser/SmartRuleVisitTranslator.java +++ b/smart-rule/src/main/java/org/smartdata/rule/parser/SmartRuleVisitTranslator.java @@ -884,7 +884,7 @@ public NodeTransResult doGenerateSql(TreeNode root, String tableName) throws IOE return new NodeTransResult(virTab, realParas.formatParameters()); } - if (p.getPropertyName().equals("accessCountMax")) { + if (p.getPropertyName().equals("accessCountTop")) { String rid = ""; if (transCtx != null) { rid = transCtx.getRuleId() + "_"; @@ -897,9 +897,9 @@ public NodeTransResult doGenerateSql(TreeNode root, String tableName) throws IOE sqlStatements.add("$@genVirtualAccessCountTable(" + virTab + ")"); dynamicParameters.put(virTab, Arrays.asList(realParas.getValues(), virTab)); } - String mStr = virTab + "_max_" + realParas.getValues().get(1).toString(); + String mStr = virTab + "_top_" + realParas.getValues().get(1).toString(); String mStrValue = mStr + "_value"; - sqlStatements.add("$@genVirtualAccessCountTableMaxValue(" + mStr + ")"); + sqlStatements.add("$@genVirtualAccessCountTableTopValue(" + mStr + ")"); dynamicParameters.put(mStr, Arrays.asList(realParas.getValues(), virTab, mStrValue)); procAcc = true; return new NodeTransResult(null, "$" + mStrValue); diff --git a/smart-rule/src/test/java/org/smartdata/rule/TestSmartRuleStringParser.java b/smart-rule/src/test/java/org/smartdata/rule/TestSmartRuleStringParser.java index 82ebb8a4926..14a5a6960d0 100644 --- a/smart-rule/src/test/java/org/smartdata/rule/TestSmartRuleStringParser.java +++ b/smart-rule/src/test/java/org/smartdata/rule/TestSmartRuleStringParser.java @@ -31,7 +31,7 @@ public class TestSmartRuleStringParser { public void testRuleTranslate() throws Exception { List rules = new LinkedList<>(); rules.add("file : path matches \"/test/*\" | sync -dest \"hdfs://remotecluster:port/somedir\""); - rules.add("file : accessCount(10min) > accessCountMax(10min, 10) | sleep -ms 0"); + rules.add("file : accessCount(10min) > accessCountTop(10min, 10) | sleep -ms 0"); for (String rule : rules) { parseRule(rule);