This is an automated email from the ASF dual-hosted git repository. nic pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/kylin.git
commit 1b71a6259411ac0d69ff460f5ee3c789498873a5 Author: nichunen <n...@apache.org> AuthorDate: Thu Sep 12 15:02:57 2019 +0800 KYLIN-4156 Code reivew --- .../java/org/apache/kylin/job/JoinedFlatTable.java | 2 +- .../java/org/apache/kylin/job/JoinedFormatter.java | 46 +++++++++++----------- .../org/apache/kylin/job/JoinedFormatterTest.java | 4 +- .../modelDesigner/conditions_settings.html | 1 + 4 files changed, 27 insertions(+), 26 deletions(-) diff --git a/core-job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java b/core-job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java index 5884421..2838d41 100644 --- a/core-job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java +++ b/core-job/src/main/java/org/apache/kylin/job/JoinedFlatTable.java @@ -226,7 +226,7 @@ public class JoinedFlatTable { DataModelDesc model = flatDesc.getDataModel(); if (StringUtils.isNotEmpty(model.getFilterCondition())) { JoinedFormatter formatter = new JoinedFormatter(flatDesc); - String fmtFilterCondition = formatter.formatSentense(model.getFilterCondition()); + String fmtFilterCondition = formatter.formatSentence(model.getFilterCondition()); String quotedFilterCondition = quoteIdentifierInSqlExpr(flatDesc, fmtFilterCondition); whereBuilder.append(" AND (").append(quotedFilterCondition).append(") "); // -> filter condition contains special character may cause bug } diff --git a/core-job/src/main/java/org/apache/kylin/job/JoinedFormatter.java b/core-job/src/main/java/org/apache/kylin/job/JoinedFormatter.java index aa7408c..901ee15 100644 --- a/core-job/src/main/java/org/apache/kylin/job/JoinedFormatter.java +++ b/core-job/src/main/java/org/apache/kylin/job/JoinedFormatter.java @@ -18,13 +18,6 @@ package org.apache.kylin.job; -import org.apache.commons.lang3.StringUtils; -import org.apache.kylin.common.util.DateFormat; -import org.apache.kylin.metadata.model.DataModelDesc; -import org.apache.kylin.metadata.model.IJoinedFlatTableDesc; -import org.apache.kylin.metadata.model.PartitionDesc; -import org.apache.kylin.metadata.model.SegmentRange; - import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -33,30 +26,37 @@ import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern; +import org.apache.commons.lang3.StringUtils; +import org.apache.kylin.common.util.DateFormat; +import org.apache.kylin.metadata.model.DataModelDesc; +import org.apache.kylin.metadata.model.IJoinedFlatTableDesc; +import org.apache.kylin.metadata.model.PartitionDesc; +import org.apache.kylin.metadata.model.SegmentRange; + /** * Joined Formatter for JoinedFlatTable */ public class JoinedFormatter { - private static String REG_SEPARATOR = "\\$\\{(?<KEY>.*?)\\}"; - private static Pattern REG_PATTERN = Pattern.compile(REG_SEPARATOR, + private static final String REG_SEPARATOR = "\\$\\{(?<KEY>.*?)\\}"; + private static final Pattern REG_PATTERN = Pattern.compile(REG_SEPARATOR, Pattern.CASE_INSENSITIVE | Pattern.DOTALL); // - public static String START_DATE = "START_DATE"; - public static String END_DATE = "END_DATE"; - public static String ENV_KEY = "KEY"; + private static final String START_DATE = "START_DATE"; + private static final String END_DATE = "END_DATE"; + private static final String ENV_KEY = "KEY"; // private Map<String, Object> mapEnv = new HashMap<>(); - public JoinedFormatter() { + JoinedFormatter() { } - public JoinedFormatter(IJoinedFlatTableDesc flatDesc) { + JoinedFormatter(IJoinedFlatTableDesc flatDesc) { setDateEnv(flatDesc); } - public void setDateEnv(IJoinedFlatTableDesc flatDesc) { + private void setDateEnv(IJoinedFlatTableDesc flatDesc) { DataModelDesc model = flatDesc.getDataModel(); PartitionDesc partDesc = model.getPartitionDesc(); SegmentRange segRange = flatDesc.getSegRange(); @@ -83,10 +83,10 @@ public class JoinedFormatter { return value == null ? "" : value; } - public String formatSentense(String sentense) { - String[] cArray = REG_PATTERN.split(sentense); + String formatSentence(String sentence) { + String[] cArray = REG_PATTERN.split(sentence); StringBuilder sbr = new StringBuilder(); - List<String> keys = getKeys(sentense); + List<String> keys = getKeys(sentence); int length = Math.max(cArray.length, keys.size()); for (int i = 0; i < length; i++) { if (i < cArray.length) { @@ -99,7 +99,7 @@ public class JoinedFormatter { return sbr.toString(); } - public List<String> getKeys(String condition) { + private List<String> getKeys(String condition) { List<String> keys = new ArrayList<>(); Matcher matcher = REG_PATTERN.matcher(condition); while (matcher.find()) { @@ -108,20 +108,20 @@ public class JoinedFormatter { return keys; } - public void setKeyValue(String key, Object value) { + private void setKeyValue(String key, Object value) { String fmtKey = StringUtils.trimToEmpty(key).toUpperCase(Locale.ROOT); mapEnv.put(fmtKey, value); } - public void setStartDate(String dateStr) { + void setStartDate(String dateStr) { setKeyValue(START_DATE, dateStr); } - public void setEndDate(String dateStr) { + void setEndDate(String dateStr) { setKeyValue(END_DATE, dateStr); } - public void printEnv() { + void printEnv() { System.out.println(mapEnv); } } diff --git a/core-job/src/test/java/org/apache/kylin/job/JoinedFormatterTest.java b/core-job/src/test/java/org/apache/kylin/job/JoinedFormatterTest.java index 6077011..a08a12b 100644 --- a/core-job/src/test/java/org/apache/kylin/job/JoinedFormatterTest.java +++ b/core-job/src/test/java/org/apache/kylin/job/JoinedFormatterTest.java @@ -48,7 +48,7 @@ public class JoinedFormatterTest extends LocalFileMetadataTestCase { public void testConditionFormat() { String expected = "date_str>='20190710' and date_str<'20190711'"; String condition = "date_str>='${start_date}' and date_str<'${end_date}'"; - String fmtCondition = formatter.formatSentense(condition); + String fmtCondition = formatter.formatSentence(condition); assertEquals(expected, fmtCondition); } @@ -56,7 +56,7 @@ public class JoinedFormatterTest extends LocalFileMetadataTestCase { public void testSqlFormat() { String expected = "select * from table where date_str>=20190710 and date_str<20190711"; String sql = "select * from table where date_str>=${start_date} and date_str<${end_date}"; - String fmtSql = formatter.formatSentense(sql); + String fmtSql = formatter.formatSentence(sql); assertEquals(expected, fmtSql); } } diff --git a/webapp/app/partials/modelDesigner/conditions_settings.html b/webapp/app/partials/modelDesigner/conditions_settings.html index 10aee84..becb327 100644 --- a/webapp/app/partials/modelDesigner/conditions_settings.html +++ b/webapp/app/partials/modelDesigner/conditions_settings.html @@ -192,6 +192,7 @@ <li>Where clause to filter data from source</li> <li>Do not include date column which will be used for incremental refresh</li> <li>Do not include "Where"</li> + <li>Use ${start_date} and ${end_date} as dynamic variables for segment's start time and end time which are determined after a building job triggered</li> </ol> </script> <script type="text/ng-template" id="separateTimeColumnTip.html">