http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java
----------------------------------------------------------------------
diff --git a/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java 
b/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java
index ddc1c12..ec33c4c 100644
--- a/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java
+++ b/atopcalcite/src/main/java/org/apache/calcite/tools/Programs.java
@@ -84,285 +84,355 @@ import com.google.common.collect.Lists;
  */
 
 public class Programs {
-    private static final Function<RuleSet, Program> RULE_SET_TO_PROGRAM = new 
Function<RuleSet, Program>() {
+  private static final Function<RuleSet, Program> RULE_SET_TO_PROGRAM =
+      new Function<RuleSet, Program>() {
         public Program apply(RuleSet ruleSet) {
-            return of(ruleSet);
+          return of(ruleSet);
         }
-    };
-
-    public static final ImmutableList<RelOptRule> CALC_RULES = 
ImmutableList.of(NoneToBindableConverterRule.INSTANCE,
-            EnumerableRules.ENUMERABLE_CALC_RULE, 
EnumerableRules.ENUMERABLE_FILTER_TO_CALC_RULE,
-            EnumerableRules.ENUMERABLE_PROJECT_TO_CALC_RULE, 
CalcMergeRule.INSTANCE, FilterCalcMergeRule.INSTANCE,
-            ProjectCalcMergeRule.INSTANCE, FilterToCalcRule.INSTANCE, 
ProjectToCalcRule.INSTANCE,
-            CalcMergeRule.INSTANCE,
-
-            // REVIEW jvs 9-Apr-2006: Do we still need these two?  Doesn't the
-            // combination of CalcMergeRule, FilterToCalcRule, and
-            // ProjectToCalcRule have the same effect?
-            FilterCalcMergeRule.INSTANCE, ProjectCalcMergeRule.INSTANCE);
-
-    /** Program that converts filters and projects to {@link Calc}s. */
-    public static final Program CALC_PROGRAM = 
calc(DefaultRelMetadataProvider.INSTANCE);
-
-    /** Program that expands sub-queries. */
-    public static final Program SUB_QUERY_PROGRAM = 
subQuery(DefaultRelMetadataProvider.INSTANCE);
-
-    public static final ImmutableSet<RelOptRule> RULE_SET = 
ImmutableSet.of(EnumerableRules.ENUMERABLE_JOIN_RULE,
-            EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE, 
EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE,
-            EnumerableRules.ENUMERABLE_CORRELATE_RULE, 
EnumerableRules.ENUMERABLE_PROJECT_RULE,
-            EnumerableRules.ENUMERABLE_FILTER_RULE, 
EnumerableRules.ENUMERABLE_AGGREGATE_RULE,
-            EnumerableRules.ENUMERABLE_SORT_RULE, 
EnumerableRules.ENUMERABLE_LIMIT_RULE,
-            EnumerableRules.ENUMERABLE_UNION_RULE, 
EnumerableRules.ENUMERABLE_INTERSECT_RULE,
-            EnumerableRules.ENUMERABLE_MINUS_RULE, 
EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE,
-            EnumerableRules.ENUMERABLE_VALUES_RULE, 
EnumerableRules.ENUMERABLE_WINDOW_RULE, SemiJoinRule.PROJECT,
-            SemiJoinRule.JOIN, TableScanRule.INSTANCE,
-            CalcitePrepareImpl.COMMUTE ? JoinAssociateRule.INSTANCE : 
ProjectMergeRule.INSTANCE,
-            AggregateStarTableRule.INSTANCE, AggregateStarTableRule.INSTANCE2, 
FilterTableScanRule.INSTANCE,
-            FilterProjectTransposeRule.INSTANCE, FilterJoinRule.FILTER_ON_JOIN,
-            AggregateExpandDistinctAggregatesRule.INSTANCE, 
AggregateReduceFunctionsRule.INSTANCE,
-            FilterAggregateTransposeRule.INSTANCE, JoinCommuteRule.INSTANCE, 
JoinPushThroughJoinRule.RIGHT,
-            JoinPushThroughJoinRule.LEFT, SortProjectTransposeRule.INSTANCE);
-
-    // private constructor for utility class
-    private Programs() {
-    }
-
-    /** Creates a program that executes a rule set. */
-    public static Program of(RuleSet ruleSet) {
-        return new RuleSetProgram(ruleSet);
-    }
-
-    /** Creates a list of programs based on an array of rule sets. */
-    public static List<Program> listOf(RuleSet... ruleSets) {
-        return Lists.transform(Arrays.asList(ruleSets), RULE_SET_TO_PROGRAM);
-    }
-
-    /** Creates a list of programs based on a list of rule sets. */
-    public static List<Program> listOf(List<RuleSet> ruleSets) {
-        return Lists.transform(ruleSets, RULE_SET_TO_PROGRAM);
+      };
+
+  public static final ImmutableList<RelOptRule> CALC_RULES =
+      ImmutableList.of(
+          NoneToBindableConverterRule.INSTANCE,
+          EnumerableRules.ENUMERABLE_CALC_RULE,
+          EnumerableRules.ENUMERABLE_FILTER_TO_CALC_RULE,
+          EnumerableRules.ENUMERABLE_PROJECT_TO_CALC_RULE,
+          CalcMergeRule.INSTANCE,
+          FilterCalcMergeRule.INSTANCE,
+          ProjectCalcMergeRule.INSTANCE,
+          FilterToCalcRule.INSTANCE,
+          ProjectToCalcRule.INSTANCE,
+          CalcMergeRule.INSTANCE,
+
+          // REVIEW jvs 9-Apr-2006: Do we still need these two?  Doesn't the
+          // combination of CalcMergeRule, FilterToCalcRule, and
+          // ProjectToCalcRule have the same effect?
+          FilterCalcMergeRule.INSTANCE,
+          ProjectCalcMergeRule.INSTANCE);
+
+  /** Program that converts filters and projects to {@link Calc}s. */
+  public static final Program CALC_PROGRAM =
+      calc(DefaultRelMetadataProvider.INSTANCE);
+
+  /** Program that expands sub-queries. */
+  public static final Program SUB_QUERY_PROGRAM =
+      subQuery(DefaultRelMetadataProvider.INSTANCE);
+
+  public static final ImmutableSet<RelOptRule> RULE_SET =
+      ImmutableSet.of(
+          EnumerableRules.ENUMERABLE_JOIN_RULE,
+          EnumerableRules.ENUMERABLE_MERGE_JOIN_RULE,
+          EnumerableRules.ENUMERABLE_SEMI_JOIN_RULE,
+          EnumerableRules.ENUMERABLE_CORRELATE_RULE,
+          EnumerableRules.ENUMERABLE_PROJECT_RULE,
+          EnumerableRules.ENUMERABLE_FILTER_RULE,
+          EnumerableRules.ENUMERABLE_AGGREGATE_RULE,
+          EnumerableRules.ENUMERABLE_SORT_RULE,
+          EnumerableRules.ENUMERABLE_LIMIT_RULE,
+          EnumerableRules.ENUMERABLE_UNION_RULE,
+          EnumerableRules.ENUMERABLE_INTERSECT_RULE,
+          EnumerableRules.ENUMERABLE_MINUS_RULE,
+          EnumerableRules.ENUMERABLE_TABLE_MODIFICATION_RULE,
+          EnumerableRules.ENUMERABLE_VALUES_RULE,
+          EnumerableRules.ENUMERABLE_WINDOW_RULE,
+          SemiJoinRule.PROJECT,
+          SemiJoinRule.JOIN,
+          TableScanRule.INSTANCE,
+          CalcitePrepareImpl.COMMUTE
+              ? JoinAssociateRule.INSTANCE
+              : ProjectMergeRule.INSTANCE,
+          AggregateStarTableRule.INSTANCE,
+          AggregateStarTableRule.INSTANCE2,
+          FilterTableScanRule.INSTANCE,
+          FilterProjectTransposeRule.INSTANCE,
+          FilterJoinRule.FILTER_ON_JOIN,
+          AggregateExpandDistinctAggregatesRule.INSTANCE,
+          AggregateReduceFunctionsRule.INSTANCE,
+          FilterAggregateTransposeRule.INSTANCE,
+          JoinCommuteRule.INSTANCE,
+          JoinPushThroughJoinRule.RIGHT,
+          JoinPushThroughJoinRule.LEFT,
+          SortProjectTransposeRule.INSTANCE);
+
+  // private constructor for utility class
+  private Programs() {}
+
+  /** Creates a program that executes a rule set. */
+  public static Program of(RuleSet ruleSet) {
+    return new RuleSetProgram(ruleSet);
+  }
+
+  /** Creates a list of programs based on an array of rule sets. */
+  public static List<Program> listOf(RuleSet... ruleSets) {
+    return Lists.transform(Arrays.asList(ruleSets), RULE_SET_TO_PROGRAM);
+  }
+
+  /** Creates a list of programs based on a list of rule sets. */
+  public static List<Program> listOf(List<RuleSet> ruleSets) {
+    return Lists.transform(ruleSets, RULE_SET_TO_PROGRAM);
+  }
+
+  /** Creates a program from a list of rules. */
+  public static Program ofRules(RelOptRule... rules) {
+    return of(RuleSets.ofList(rules));
+  }
+
+  /** Creates a program from a list of rules. */
+  public static Program ofRules(Iterable<? extends RelOptRule> rules) {
+    return of(RuleSets.ofList(rules));
+  }
+
+  /** Creates a program that executes a sequence of programs. */
+  public static Program sequence(Program... programs) {
+    return new SequenceProgram(ImmutableList.copyOf(programs));
+  }
+
+  /** Creates a program that executes a list of rules in a HEP planner. */
+  public static Program hep(Iterable<? extends RelOptRule> rules,
+      boolean noDag, RelMetadataProvider metadataProvider) {
+    final HepProgramBuilder builder = HepProgram.builder();
+    for (RelOptRule rule : rules) {
+      builder.addRuleInstance(rule);
     }
-
-    /** Creates a program from a list of rules. */
-    public static Program ofRules(RelOptRule... rules) {
-        return of(RuleSets.ofList(rules));
-    }
-
-    /** Creates a program from a list of rules. */
-    public static Program ofRules(Iterable<? extends RelOptRule> rules) {
-        return of(RuleSets.ofList(rules));
-    }
-
-    /** Creates a program that executes a sequence of programs. */
-    public static Program sequence(Program... programs) {
-        return new SequenceProgram(ImmutableList.copyOf(programs));
-    }
-
-    /** Creates a program that executes a list of rules in a HEP planner. */
-    public static Program hep(Iterable<? extends RelOptRule> rules, boolean 
noDag,
-            RelMetadataProvider metadataProvider) {
-        final HepProgramBuilder builder = HepProgram.builder();
-        for (RelOptRule rule : rules) {
-            builder.addRuleInstance(rule);
+    return of(builder.build(), noDag, metadataProvider);
+  }
+
+  /** Creates a program that executes a {@link HepProgram}. */
+  public static Program of(final HepProgram hepProgram, final boolean noDag,
+      final RelMetadataProvider metadataProvider) {
+    return new Program() {
+      public RelNode run(RelOptPlanner planner, RelNode rel,
+          RelTraitSet requiredOutputTraits,
+          List<RelOptMaterialization> materializations,
+          List<RelOptLattice> lattices) {
+        final HepPlanner hepPlanner = new HepPlanner(hepProgram,
+            null, noDag, null, RelOptCostImpl.FACTORY);
+
+        List<RelMetadataProvider> list = Lists.newArrayList();
+        if (metadataProvider != null) {
+          list.add(metadataProvider);
         }
-        return of(builder.build(), noDag, metadataProvider);
-    }
+        hepPlanner.registerMetadataProviders(list);
+        RelMetadataProvider plannerChain =
+            ChainedRelMetadataProvider.of(list);
+        rel.getCluster().setMetadataProvider(plannerChain);
+
+        hepPlanner.setRoot(rel);
+        return hepPlanner.findBestExp();
+      }
+    };
+  }
+
+  /** Creates a program that invokes heuristic join-order optimization
+   * (via {@link org.apache.calcite.rel.rules.JoinToMultiJoinRule},
+   * {@link org.apache.calcite.rel.rules.MultiJoin} and
+   * {@link org.apache.calcite.rel.rules.LoptOptimizeJoinRule})
+   * if there are 6 or more joins (7 or more relations). */
+  public static Program heuristicJoinOrder(
+      final Iterable<? extends RelOptRule> rules,
+      final boolean bushy, final int minJoinCount) {
+    return new Program() {
+      public RelNode run(RelOptPlanner planner, RelNode rel,
+          RelTraitSet requiredOutputTraits,
+          List<RelOptMaterialization> materializations,
+          List<RelOptLattice> lattices) {
+        final int joinCount = RelOptUtil.countJoins(rel);
+        final Program program;
+        if (joinCount < minJoinCount) {
+          program = ofRules(rules);
+        } else {
+          // Create a program that gathers together joins as a MultiJoin.
+          final HepProgram hep = new HepProgramBuilder()
+              .addRuleInstance(FilterJoinRule.FILTER_ON_JOIN)
+              .addMatchOrder(HepMatchOrder.BOTTOM_UP)
+              .addRuleInstance(JoinToMultiJoinRule.INSTANCE)
+              .build();
+          final Program program1 =
+              of(hep, false, DefaultRelMetadataProvider.INSTANCE);
+
+          // Create a program that contains a rule to expand a MultiJoin
+          // into heuristically ordered joins.
+          // We use the rule set passed in, but remove JoinCommuteRule and
+          // JoinPushThroughJoinRule, because they cause exhaustive search.
+          final List<RelOptRule> list = Lists.newArrayList(rules);
+          list.removeAll(
+              ImmutableList.of(JoinCommuteRule.INSTANCE,
+                  JoinAssociateRule.INSTANCE,
+                  JoinPushThroughJoinRule.LEFT,
+                  JoinPushThroughJoinRule.RIGHT));
+          list.add(bushy
+              ? MultiJoinOptimizeBushyRule.INSTANCE
+              : LoptOptimizeJoinRule.INSTANCE);
+          final Program program2 = ofRules(list);
+
+          program = sequence(program1, program2);
+        }
+        return program.run(
+            planner, rel, requiredOutputTraits, materializations, lattices);
+      }
+    };
+  }
+
+  public static Program calc(RelMetadataProvider metadataProvider) {
+    return hep(CALC_RULES, true, metadataProvider);
+  }
+
+  @Deprecated // to be removed before 2.0
+  public static Program subquery(RelMetadataProvider metadataProvider) {
+    return subQuery(metadataProvider);
+  }
+
+  public static Program subQuery(RelMetadataProvider metadataProvider) {
+    return hep(
+        ImmutableList.of((RelOptRule) SubQueryRemoveRule.FILTER, 
+            SubQueryRemoveRule.PROJECT,
+            SubQueryRemoveRule.JOIN, OLAPJoinPushThroughJoinRule.INSTANCE,
+            OLAPJoinPushThroughJoinRule2.INSTANCE
+        ), true, metadataProvider);
+  }
+
+  public static Program getProgram() {
+    return new Program() {
+      public RelNode run(RelOptPlanner planner, RelNode rel,
+          RelTraitSet requiredOutputTraits,
+          List<RelOptMaterialization> materializations,
+          List<RelOptLattice> lattices) {
+        return null;
+      }
+    };
+  }
+
+  /** Returns the standard program used by Prepare. */
+  public static Program standard() {
+    return standard(DefaultRelMetadataProvider.INSTANCE);
+  }
+
+  /** Returns the standard program with user metadata provider. */
+  public static Program standard(RelMetadataProvider metadataProvider) {
+
+    final Program program1 =
+        new Program() {
+          public RelNode run(RelOptPlanner planner, RelNode rel,
+              RelTraitSet requiredOutputTraits,
+              List<RelOptMaterialization> materializations,
+              List<RelOptLattice> lattices) {
+            planner.setRoot(rel);
 
-    /** Creates a program that executes a {@link HepProgram}. */
-    public static Program of(final HepProgram hepProgram, final boolean noDag,
-            final RelMetadataProvider metadataProvider) {
-        return new Program() {
-            public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                    List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-                final HepPlanner hepPlanner = new HepPlanner(hepProgram, null, 
noDag, null, RelOptCostImpl.FACTORY);
-
-                List<RelMetadataProvider> list = Lists.newArrayList();
-                if (metadataProvider != null) {
-                    list.add(metadataProvider);
-                }
-                hepPlanner.registerMetadataProviders(list);
-                RelMetadataProvider plannerChain = 
ChainedRelMetadataProvider.of(list);
-                rel.getCluster().setMetadataProvider(plannerChain);
-
-                hepPlanner.setRoot(rel);
-                return hepPlanner.findBestExp();
+            for (RelOptMaterialization materialization : materializations) {
+              planner.addMaterialization(materialization);
             }
-        };
-    }
-
-    /** Creates a program that invokes heuristic join-order optimization
-     * (via {@link org.apache.calcite.rel.rules.JoinToMultiJoinRule},
-     * {@link org.apache.calcite.rel.rules.MultiJoin} and
-     * {@link org.apache.calcite.rel.rules.LoptOptimizeJoinRule})
-     * if there are 6 or more joins (7 or more relations). */
-    public static Program heuristicJoinOrder(final Iterable<? extends 
RelOptRule> rules, final boolean bushy,
-            final int minJoinCount) {
-        return new Program() {
-            public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                    List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-                final int joinCount = RelOptUtil.countJoins(rel);
-                final Program program;
-                if (joinCount < minJoinCount) {
-                    program = ofRules(rules);
-                } else {
-                    // Create a program that gathers together joins as a 
MultiJoin.
-                    final HepProgram hep = new 
HepProgramBuilder().addRuleInstance(FilterJoinRule.FILTER_ON_JOIN)
-                            
.addMatchOrder(HepMatchOrder.BOTTOM_UP).addRuleInstance(JoinToMultiJoinRule.INSTANCE)
-                            .build();
-                    final Program program1 = of(hep, false, 
DefaultRelMetadataProvider.INSTANCE);
-
-                    // Create a program that contains a rule to expand a 
MultiJoin
-                    // into heuristically ordered joins.
-                    // We use the rule set passed in, but remove 
JoinCommuteRule and
-                    // JoinPushThroughJoinRule, because they cause exhaustive 
search.
-                    final List<RelOptRule> list = Lists.newArrayList(rules);
-                    list.removeAll(ImmutableList.of(JoinCommuteRule.INSTANCE, 
JoinAssociateRule.INSTANCE,
-                            JoinPushThroughJoinRule.LEFT, 
JoinPushThroughJoinRule.RIGHT));
-                    list.add(bushy ? MultiJoinOptimizeBushyRule.INSTANCE : 
LoptOptimizeJoinRule.INSTANCE);
-                    final Program program2 = ofRules(list);
-
-                    program = sequence(program1, program2);
-                }
-                return program.run(planner, rel, requiredOutputTraits, 
materializations, lattices);
+            for (RelOptLattice lattice : lattices) {
+              planner.addLattice(lattice);
             }
-        };
-    }
-
-    public static Program calc(RelMetadataProvider metadataProvider) {
-        return hep(CALC_RULES, true, metadataProvider);
-    }
 
-    @Deprecated // to be removed before 2.0
-    public static Program subquery(RelMetadataProvider metadataProvider) {
-        return subQuery(metadataProvider);
-    }
-
-    public static Program subQuery(RelMetadataProvider metadataProvider) {
-        return hep(ImmutableList.of((RelOptRule) SubQueryRemoveRule.FILTER, 
SubQueryRemoveRule.PROJECT,
-                SubQueryRemoveRule.JOIN, OLAPJoinPushThroughJoinRule.INSTANCE, 
OLAPJoinPushThroughJoinRule2.INSTANCE),
-                true, metadataProvider);
-    }
-
-    public static Program getProgram() {
-        return new Program() {
-            public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                    List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-                return null;
-            }
+            final RelNode rootRel2 =
+                rel.getTraitSet().equals(requiredOutputTraits)
+                ? rel
+                : planner.changeTraits(rel, requiredOutputTraits);
+            assert rootRel2 != null;
+
+            planner.setRoot(rootRel2);
+            final RelOptPlanner planner2 = planner.chooseDelegate();
+            final RelNode rootRel3 = planner2.findBestExp();
+            assert rootRel3 != null : "could not implement exp";
+            return rootRel3;
+          }
         };
-    }
 
-    /** Returns the standard program used by Prepare. */
-    public static Program standard() {
-        return standard(DefaultRelMetadataProvider.INSTANCE);
-    }
+    return sequence(subQuery(metadataProvider),
+        new DecorrelateProgram(),
+        new TrimFieldsProgram(),
+        program1,
 
-    /** Returns the standard program with user metadata provider. */
-    public static Program standard(RelMetadataProvider metadataProvider) {
-
-        final Program program1 = new Program() {
-            public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                    List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-                planner.setRoot(rel);
-
-                for (RelOptMaterialization materialization : materializations) 
{
-                    planner.addMaterialization(materialization);
-                }
-                for (RelOptLattice lattice : lattices) {
-                    planner.addLattice(lattice);
-                }
-
-                final RelNode rootRel2 = 
rel.getTraitSet().equals(requiredOutputTraits) ? rel
-                        : planner.changeTraits(rel, requiredOutputTraits);
-                assert rootRel2 != null;
-
-                planner.setRoot(rootRel2);
-                final RelOptPlanner planner2 = planner.chooseDelegate();
-                final RelNode rootRel3 = planner2.findBestExp();
-                assert rootRel3 != null : "could not implement exp";
-                return rootRel3;
-            }
-        };
+        // Second planner pass to do physical "tweaks". This the first time 
that
+        // EnumerableCalcRel is introduced.
+        calc(metadataProvider));
+  }
 
-        return sequence(subQuery(metadataProvider), new DecorrelateProgram(), 
new TrimFieldsProgram(), program1,
+  /** Program backed by a {@link RuleSet}. */
+  static class RuleSetProgram implements Program {
+    final RuleSet ruleSet;
 
-                // Second planner pass to do physical "tweaks". This the first 
time that
-                // EnumerableCalcRel is introduced.
-                calc(metadataProvider));
+    private RuleSetProgram(RuleSet ruleSet) {
+      this.ruleSet = ruleSet;
     }
 
-    /** Program backed by a {@link RuleSet}. */
-    static class RuleSetProgram implements Program {
-        final RuleSet ruleSet;
-
-        private RuleSetProgram(RuleSet ruleSet) {
-            this.ruleSet = ruleSet;
-        }
+    public RelNode run(RelOptPlanner planner, RelNode rel,
+        RelTraitSet requiredOutputTraits,
+        List<RelOptMaterialization> materializations,
+        List<RelOptLattice> lattices) {
+      planner.clear();
+      for (RelOptRule rule : ruleSet) {
+        planner.addRule(rule);
+      }
+      for (RelOptMaterialization materialization : materializations) {
+        planner.addMaterialization(materialization);
+      }
+      for (RelOptLattice lattice : lattices) {
+        planner.addLattice(lattice);
+      }
+      if (!rel.getTraitSet().equals(requiredOutputTraits)) {
+        rel = planner.changeTraits(rel, requiredOutputTraits);
+      }
+      planner.setRoot(rel);
+      return planner.findBestExp();
 
-        public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-            planner.clear();
-            for (RelOptRule rule : ruleSet) {
-                planner.addRule(rule);
-            }
-            for (RelOptMaterialization materialization : materializations) {
-                planner.addMaterialization(materialization);
-            }
-            for (RelOptLattice lattice : lattices) {
-                planner.addLattice(lattice);
-            }
-            if (!rel.getTraitSet().equals(requiredOutputTraits)) {
-                rel = planner.changeTraits(rel, requiredOutputTraits);
-            }
-            planner.setRoot(rel);
-            return planner.findBestExp();
-
-        }
     }
+  }
 
-    /** Program that runs sub-programs, sending the output of the previous as
-     * input to the next. */
-    private static class SequenceProgram implements Program {
-        private final ImmutableList<Program> programs;
-
-        SequenceProgram(ImmutableList<Program> programs) {
-            this.programs = programs;
-        }
+  /** Program that runs sub-programs, sending the output of the previous as
+   * input to the next. */
+  private static class SequenceProgram implements Program {
+    private final ImmutableList<Program> programs;
 
-        public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-            for (Program program : programs) {
-                rel = program.run(planner, rel, requiredOutputTraits, 
materializations, lattices);
-            }
-            return rel;
-        }
+    SequenceProgram(ImmutableList<Program> programs) {
+      this.programs = programs;
     }
 
-    /** Program that de-correlates a query.
-     *
-     * <p>To work around
-     * <a 
href="https://issues.apache.org/jira/browse/CALCITE-842";>[CALCITE-842]
-     * Decorrelator gets field offsets confused if fields have been 
trimmed</a>,
-     * disable field-trimming in {@link SqlToRelConverter}, and run
-     * {@link TrimFieldsProgram} after this program. */
-    private static class DecorrelateProgram implements Program {
-        public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-            final CalciteConnectionConfig config = 
planner.getContext().unwrap(CalciteConnectionConfig.class);
-            if (config != null && config.forceDecorrelate()) {
-                return RelDecorrelator.decorrelateQuery(rel);
-            }
-            return rel;
-        }
+    public RelNode run(RelOptPlanner planner, RelNode rel,
+        RelTraitSet requiredOutputTraits,
+        List<RelOptMaterialization> materializations,
+        List<RelOptLattice> lattices) {
+      for (Program program : programs) {
+        rel = program.run(
+            planner, rel, requiredOutputTraits, materializations, lattices);
+      }
+      return rel;
     }
-
-    /** Program that trims fields. */
-    private static class TrimFieldsProgram implements Program {
-        public RelNode run(RelOptPlanner planner, RelNode rel, RelTraitSet 
requiredOutputTraits,
-                List<RelOptMaterialization> materializations, 
List<RelOptLattice> lattices) {
-            final RelBuilder relBuilder = 
RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null);
-            return new RelFieldTrimmer(null, relBuilder).trim(rel);
-        }
+  }
+
+  /** Program that de-correlates a query.
+   *
+   * <p>To work around
+   * <a href="https://issues.apache.org/jira/browse/CALCITE-842";>[CALCITE-842]
+   * Decorrelator gets field offsets confused if fields have been trimmed</a>,
+   * disable field-trimming in {@link SqlToRelConverter}, and run
+   * {@link TrimFieldsProgram} after this program. */
+  private static class DecorrelateProgram implements Program {
+    public RelNode run(RelOptPlanner planner, RelNode rel,
+        RelTraitSet requiredOutputTraits,
+        List<RelOptMaterialization> materializations,
+        List<RelOptLattice> lattices) {
+      final CalciteConnectionConfig config =
+          planner.getContext().unwrap(CalciteConnectionConfig.class);
+      if (config != null && config.forceDecorrelate()) {
+        return RelDecorrelator.decorrelateQuery(rel);
+      }
+      return rel;
+    }
+  }
+
+  /** Program that trims fields. */
+  private static class TrimFieldsProgram implements Program {
+    public RelNode run(RelOptPlanner planner, RelNode rel,
+        RelTraitSet requiredOutputTraits,
+        List<RelOptMaterialization> materializations,
+        List<RelOptLattice> lattices) {
+      final RelBuilder relBuilder =
+          RelFactories.LOGICAL_BUILDER.create(rel.getCluster(), null);
+      return new RelFieldTrimmer(null, relBuilder).trim(rel);
     }
+  }
 }
 
 // End Programs.java

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
 
b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
index f7fceec..426ebb9 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/BackwardCompatibilityConfig.java
@@ -73,14 +73,13 @@ public class BackwardCompatibilityConfig {
         for (Entry<Object, Object> kv : props.entrySet()) {
             String key = (String) kv.getKey();
             String value = (String) kv.getValue();
-
+            
             if (key.equals(value))
                 continue; // no change
-
+            
             if (value.contains(key))
-                throw new IllegalStateException("New key '" + value + "' 
contains old key '" + key
-                        + "' causes trouble to repeated find & replace");
-
+                throw new IllegalStateException("New key '" + value + "' 
contains old key '" + key + "' causes trouble to repeated find & replace");
+            
             if (value.endsWith("."))
                 old2newPrefix.put(key, value);
             else
@@ -123,7 +122,7 @@ public class BackwardCompatibilityConfig {
         return result;
     }
 
-    public OrderedProperties check(OrderedProperties props) {
+    public OrderedProperties check(OrderedProperties props){
         OrderedProperties result = new OrderedProperties();
         for (Entry<String, String> kv : props.entrySet()) {
             result.setProperty(check(kv.getKey()), kv.getValue());
@@ -181,7 +180,7 @@ public class BackwardCompatibilityConfig {
         } finally {
             IOUtils.closeQuietly(out);
         }
-
+        
         System.out.println("Files generated:");
         System.out.println(shFile);
         System.out.println(sedFile);
@@ -212,7 +211,6 @@ public class BackwardCompatibilityConfig {
         else if (name.endsWith("-site.xml"))
             return false;
         else
-            return name.endsWith(".java") || name.endsWith(".js") || 
name.endsWith(".sh")
-                    || name.endsWith(".properties") || name.endsWith(".xml");
+            return name.endsWith(".java") || name.endsWith(".js") || 
name.endsWith(".sh") || name.endsWith(".properties") || name.endsWith(".xml");
     }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index 5d08338..04af9f5 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -70,8 +70,7 @@ public class KylinConfig extends KylinConfigBase {
                     config = new KylinConfig();
                     config.reloadKylinConfig(getKylinProperties());
 
-                    logger.info("Initialized a new KylinConfig from 
getInstanceFromEnv : "
-                            + System.identityHashCode(config));
+                    logger.info("Initialized a new KylinConfig from 
getInstanceFromEnv : " + System.identityHashCode(config));
                     SYS_ENV_INSTANCE = config;
                 } catch (IllegalArgumentException e) {
                     throw new IllegalStateException("Failed to find 
KylinConfig ", e);
@@ -109,12 +108,10 @@ public class KylinConfig extends KylinConfigBase {
                     if 
(file.getName().equalsIgnoreCase(KYLIN_CONF_PROPERTIES_FILE)) {
                         return UriType.PROPERTIES_FILE;
                     } else {
-                        throw new IllegalStateException(
-                                "Metadata uri : " + metaUri + " is a local 
file but not kylin.properties");
+                        throw new IllegalStateException("Metadata uri : " + 
metaUri + " is a local file but not kylin.properties");
                     }
                 } else {
-                    throw new IllegalStateException(
-                            "Metadata uri : " + metaUri + " looks like a file 
but it's neither a file nor a directory");
+                    throw new IllegalStateException("Metadata uri : " + 
metaUri + " looks like a file but it's neither a file nor a directory");
                 }
             } else {
                 if (RestClient.matchFullRestPattern(metaUri))
@@ -261,8 +258,7 @@ public class KylinConfig extends KylinConfigBase {
         return conf;
     }
 
-    private static OrderedProperties getKylinOrderedProperties()
-            throws FileNotFoundException, UnsupportedEncodingException {
+    private static OrderedProperties getKylinOrderedProperties() throws 
FileNotFoundException, UnsupportedEncodingException {
         File propFile = getKylinPropertiesFile();
         if (propFile == null || !propFile.exists()) {
             logger.error("fail to locate " + KYLIN_CONF_PROPERTIES_FILE);

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index e495aaa..ad08108 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -198,8 +198,7 @@ abstract public class KylinConfigBase implements 
Serializable {
                 root = "hdfs://" + root;
         }
 
-        return new 
StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', 
'-')).append("/")
-                .toString();
+        return new 
StringBuffer(root).append(StringUtils.replaceChars(getMetadataUrlPrefix(), ':', 
'-')).append("/").toString();
     }
 
     // 
============================================================================
@@ -243,8 +242,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     }
 
     public DistributedLockFactory getDistributedLockFactory() {
-        String clsName = getOptional("kylin.metadata.distributed-lock-impl",
-                
"org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory");
+        String clsName = getOptional("kylin.metadata.distributed-lock-impl", 
"org.apache.kylin.storage.hbase.util.ZookeeperDistributedLock$Factory");
         return (DistributedLockFactory) ClassUtil.newInstance(clsName);
     }
 
@@ -348,8 +346,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     public CliCommandExecutor getCliCommandExecutor() throws IOException {
         CliCommandExecutor exec = new CliCommandExecutor();
         if (getRunAsRemoteCommand()) {
-            exec.setRunAtRemote(getRemoteHadoopCliHostname(), 
getRemoteHadoopCliPort(), getRemoteHadoopCliUsername(),
-                    getRemoteHadoopCliPassword());
+            exec.setRunAtRemote(getRemoteHadoopCliHostname(), 
getRemoteHadoopCliPort(), getRemoteHadoopCliUsername(), 
getRemoteHadoopCliPassword());
         }
         return exec;
     }
@@ -398,8 +395,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     }
 
     public String getHiveDependencyFilterList() {
-        return this.getOptional("kylin.job.dependency-filter-list", 
"[^,]*hive-exec[^,]*?\\.jar" + "|"
-                + "[^,]*hive-metastore[^,]*?\\.jar" + "|" + 
"[^,]*hive-hcatalog-core[^,]*?\\.jar");
+        return this.getOptional("kylin.job.dependency-filter-list", 
"[^,]*hive-exec[^,]*?\\.jar" + "|" + "[^,]*hive-metastore[^,]*?\\.jar" + "|" + 
"[^,]*hive-hcatalog-core[^,]*?\\.jar");
     }
 
     public boolean isMailEnabled() {
@@ -657,8 +653,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     }
 
     public long getPartitionMaxScanBytes() {
-        long value = Long.parseLong(
-                this.getOptional("kylin.storage.partition.max-scan-bytes", 
String.valueOf(3L * 1024 * 1024 * 1024)));
+        long value = 
Long.parseLong(this.getOptional("kylin.storage.partition.max-scan-bytes", 
String.valueOf(3L * 1024 * 1024 * 1024)));
         return value > 0 ? value : Long.MAX_VALUE;
     }
 
@@ -675,8 +670,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     }
 
     public String getDefaultIGTStorage() {
-        return getOptional("kylin.storage.hbase.gtstorage",
-                "org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC");
+        return getOptional("kylin.storage.hbase.gtstorage", 
"org.apache.kylin.storage.hbase.cube.v2.CubeHBaseEndpointRPC");
     }
 
     public int getHBaseScanCacheRows() {
@@ -950,7 +944,7 @@ abstract public class KylinConfigBase implements 
Serializable {
     }
 
     public boolean isAdhocEnabled() {
-        return StringUtils.isNotEmpty(getAdHocRunnerClassName());
+        return StringUtils.isNotEmpty(getAdHocRunnerClassName()); 
     }
 
     public String getAdHocRunnerClassName() {

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
index cd7b64e..6eba7c5 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinVersion.java
@@ -168,9 +168,7 @@ public class KylinVersion implements Comparable {
     public static String getKylinClientInformation() {
         StringBuilder buf = new StringBuilder();
 
-        buf.append("kylin.home: ").append(
-                KylinConfig.getKylinHome() == null ? "UNKNOWN" : new 
File(KylinConfig.getKylinHome()).getAbsolutePath())
-                .append("\n");
+        buf.append("kylin.home: ").append(KylinConfig.getKylinHome() == null ? 
"UNKNOWN" : new 
File(KylinConfig.getKylinHome()).getAbsolutePath()).append("\n");
         
buf.append("kylin.version:").append(KylinVersion.getCurrentVersion()).append("\n");
         buf.append("commit:").append(getGitCommitInfo()).append("\n");
         
buf.append("os.name:").append(System.getProperty("os.name")).append("\n");
@@ -201,4 +199,4 @@ public class KylinVersion implements Comparable {
         }
     }
 
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/QueryContext.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/QueryContext.java 
b/core-common/src/main/java/org/apache/kylin/common/QueryContext.java
index a2342f0..0b8d519 100644
--- a/core-common/src/main/java/org/apache/kylin/common/QueryContext.java
+++ b/core-common/src/main/java/org/apache/kylin/common/QueryContext.java
@@ -39,7 +39,7 @@ public class QueryContext {
 
     private QueryContext() {
         // use QueryContext.current() instead
-
+        
         queryId = UUID.randomUUID().toString();
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
index 91df47e..8f1fae0 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLock.java
@@ -32,14 +32,14 @@ public interface DistributedLock {
      * Returns the client that owns this instance.
      */
     String getClient();
-
+    
     /**
      * Acquire the lock at given path, non-blocking.
      * 
      * @return If the lock is acquired or not.
      */
     boolean lock(String lockPath);
-
+    
     /**
      * Acquire the lock at given path, block until given timeout.
      * 
@@ -51,12 +51,12 @@ public interface DistributedLock {
      * Returns if lock is available at given path.
      */
     boolean isLocked(String lockPath);
-
+    
     /**
      * Returns if lock is available at given path.
      */
     boolean isLockedByMe(String lockPath);
-
+    
     /**
      * Returns the owner of a lock path; returns null if the path is not 
locked by any one.
      */
@@ -73,7 +73,7 @@ public interface DistributedLock {
      * Purge all locks under given path. For clean up.
      */
     void purgeLocks(String lockPathRoot);
-
+    
     /**
      * Watch lock events under given path, notifies the watcher on all 
lock/unlock events under the given path root.
      * 
@@ -83,7 +83,6 @@ public interface DistributedLock {
 
     public interface Watcher {
         void onLock(String lockPath, String client);
-
         void onUnlock(String lockPath, String client);
     }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java
 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java
index c96c1be..cd1c2b1 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/lock/DistributedLockFactory.java
@@ -35,7 +35,7 @@ public abstract class DistributedLockFactory {
     private static String threadProcessAndHost() {
         return Thread.currentThread().getId() + "-" + processAndHost();
     }
-
+    
     private static String processAndHost() {
         byte[] bytes = 
ManagementFactory.getRuntimeMXBean().getName().getBytes();
         return new String(bytes);

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java
index a935702..82cf451 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/FileResourceStore.java
@@ -46,8 +46,7 @@ public class FileResourceStore extends ResourceStore {
         super(kylinConfig);
         root = new 
File(kylinConfig.getMetadataUrl().getIdentifier()).getAbsoluteFile();
         if (root.exists() == false)
-            throw new IllegalArgumentException(
-                    "File not exist by '" + kylinConfig.getMetadataUrl() + "': 
" + root.getAbsolutePath());
+            throw new IllegalArgumentException("File not exist by '" + 
kylinConfig.getMetadataUrl() + "': " + root.getAbsolutePath());
     }
 
     @Override
@@ -71,8 +70,7 @@ public class FileResourceStore extends ResourceStore {
     }
 
     @Override
-    synchronized protected List<RawResource> getAllResourcesImpl(String 
folderPath, long timeStart,
-            long timeEndExclusive) throws IOException {
+    synchronized protected List<RawResource> getAllResourcesImpl(String 
folderPath, long timeStart, long timeEndExclusive) throws IOException {
         NavigableSet<String> resources = listResources(folderPath);
         if (resources == null)
             return Collections.emptyList();
@@ -133,12 +131,10 @@ public class FileResourceStore extends ResourceStore {
     }
 
     @Override
-    synchronized protected long checkAndPutResourceImpl(String resPath, byte[] 
content, long oldTS, long newTS)
-            throws IOException, IllegalStateException {
+    synchronized protected long checkAndPutResourceImpl(String resPath, byte[] 
content, long oldTS, long newTS) throws IOException, IllegalStateException {
         File f = file(resPath);
         if ((f.exists() && f.lastModified() != oldTS) || (f.exists() == false 
&& oldTS != 0))
-            throw new IllegalStateException(
-                    "Overwriting conflict " + resPath + ", expect old TS " + 
oldTS + ", but found " + f.lastModified());
+            throw new IllegalStateException("Overwriting conflict " + resPath 
+ ", expect old TS " + oldTS + ", but found " + f.lastModified());
 
         putResourceImpl(resPath, new ByteArrayInputStream(content), newTS);
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
index 651a6d1..7fb93e7 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceStore.java
@@ -81,8 +81,7 @@ abstract public class ResourceStore {
             Class<? extends ResourceStore> cls = ClassUtil.forName(clsName, 
ResourceStore.class);
             ResourceStore store = 
cls.getConstructor(KylinConfig.class).newInstance(kylinConfig);
             if (!store.exists(METASTORE_UUID_TAG)) {
-                store.putResource(METASTORE_UUID_TAG, new 
StringEntity(store.createMetaStoreUUID()), 0,
-                        StringEntity.serializer);
+                store.putResource(METASTORE_UUID_TAG, new 
StringEntity(store.createMetaStoreUUID()), 0, StringEntity.serializer);
             }
             return store;
         } catch (Throwable e) {
@@ -128,11 +127,9 @@ abstract public class ResourceStore {
 
     public String getMetaStoreUUID() throws IOException {
         if (!exists(ResourceStore.METASTORE_UUID_TAG)) {
-            putResource(ResourceStore.METASTORE_UUID_TAG, new 
StringEntity(createMetaStoreUUID()), 0,
-                    StringEntity.serializer);
+            putResource(ResourceStore.METASTORE_UUID_TAG, new 
StringEntity(createMetaStoreUUID()), 0, StringEntity.serializer);
         }
-        StringEntity entity = getResource(ResourceStore.METASTORE_UUID_TAG, 
StringEntity.class,
-                StringEntity.serializer);
+        StringEntity entity = getResource(ResourceStore.METASTORE_UUID_TAG, 
StringEntity.class, StringEntity.serializer);
         return entity.toString();
     }
 
@@ -148,8 +145,7 @@ abstract public class ResourceStore {
     /**
      * Read a resource, return null in case of not found or is a folder
      */
-    final public <T extends RootPersistentEntity> T getResource(String 
resPath, Class<T> clz, Serializer<T> serializer)
-            throws IOException {
+    final public <T extends RootPersistentEntity> T getResource(String 
resPath, Class<T> clz, Serializer<T> serializer) throws IOException {
         resPath = norm(resPath);
         RawResource res = getResourceImpl(resPath);
         if (res == null)
@@ -177,16 +173,14 @@ abstract public class ResourceStore {
     /**
      * Read all resources under a folder. Return empty list if folder not 
exist.
      */
-    final public <T extends RootPersistentEntity> List<T> 
getAllResources(String folderPath, Class<T> clazz,
-            Serializer<T> serializer) throws IOException {
+    final public <T extends RootPersistentEntity> List<T> 
getAllResources(String folderPath, Class<T> clazz, Serializer<T> serializer) 
throws IOException {
         return getAllResources(folderPath, Long.MIN_VALUE, Long.MAX_VALUE, 
clazz, serializer);
     }
 
     /**
      * Read all resources under a folder having last modified time between 
given range. Return empty list if folder not exist.
      */
-    final public <T extends RootPersistentEntity> List<T> 
getAllResources(String folderPath, long timeStart,
-            long timeEndExclusive, Class<T> clazz, Serializer<T> serializer) 
throws IOException {
+    final public <T extends RootPersistentEntity> List<T> 
getAllResources(String folderPath, long timeStart, long timeEndExclusive, 
Class<T> clazz, Serializer<T> serializer) throws IOException {
         final List<RawResource> allResources = getAllResourcesImpl(folderPath, 
timeStart, timeEndExclusive);
         if (allResources == null || allResources.isEmpty()) {
             return Collections.emptyList();
@@ -207,8 +201,7 @@ abstract public class ResourceStore {
         }
     }
 
-    abstract protected List<RawResource> getAllResourcesImpl(String 
folderPath, long timeStart, long timeEndExclusive)
-            throws IOException;
+    abstract protected List<RawResource> getAllResourcesImpl(String 
folderPath, long timeStart, long timeEndExclusive) throws IOException;
 
     /**
      * returns null if not exists
@@ -239,16 +232,14 @@ abstract public class ResourceStore {
     /**
      * check & set, overwrite a resource
      */
-    final public <T extends RootPersistentEntity> long putResource(String 
resPath, T obj, Serializer<T> serializer)
-            throws IOException {
+    final public <T extends RootPersistentEntity> long putResource(String 
resPath, T obj, Serializer<T> serializer) throws IOException {
         return putResource(resPath, obj, System.currentTimeMillis(), 
serializer);
     }
 
     /**
      * check & set, overwrite a resource
      */
-    final public <T extends RootPersistentEntity> long putResource(String 
resPath, T obj, long newTS,
-            Serializer<T> serializer) throws IOException {
+    final public <T extends RootPersistentEntity> long putResource(String 
resPath, T obj, long newTS, Serializer<T> serializer) throws IOException {
         resPath = norm(resPath);
         //logger.debug("Saving resource " + resPath + " (Store " + 
kylinConfig.getMetadataUrl() + ")");
 
@@ -274,8 +265,7 @@ abstract public class ResourceStore {
         }
     }
 
-    private long checkAndPutResourceCheckpoint(String resPath, byte[] content, 
long oldTS, long newTS)
-            throws IOException {
+    private long checkAndPutResourceCheckpoint(String resPath, byte[] content, 
long oldTS, long newTS) throws IOException {
         beforeChange(resPath);
         return checkAndPutResourceImpl(resPath, content, oldTS, newTS);
     }
@@ -283,8 +273,7 @@ abstract public class ResourceStore {
     /**
      * checks old timestamp when overwriting existing
      */
-    abstract protected long checkAndPutResourceImpl(String resPath, byte[] 
content, long oldTS, long newTS)
-            throws IOException, IllegalStateException;
+    abstract protected long checkAndPutResourceImpl(String resPath, byte[] 
content, long oldTS, long newTS) throws IOException, IllegalStateException;
 
     /**
      * delete a resource, does nothing on a folder

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
index 4702f70..6ba68ae 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/ResourceTool.java
@@ -134,16 +134,16 @@ public class ResourceTool {
         ResourceStore dst = ResourceStore.getStore(dstConfig);
 
         logger.info("Copy from {} to {}", src, dst);
-
+        
         copyR(src, dst, path);
     }
 
     public static void copy(KylinConfig srcConfig, KylinConfig dstConfig, 
List<String> paths) throws IOException {
         ResourceStore src = ResourceStore.getStore(srcConfig);
         ResourceStore dst = ResourceStore.getStore(dstConfig);
-
+        
         logger.info("Copy from {} to {}", src, dst);
-
+        
         for (String path : paths) {
             copyR(src, dst, path);
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java
 
b/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java
index f25976f..84d7303 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/persistence/StringEntity.java
@@ -18,12 +18,12 @@
 
 package org.apache.kylin.common.persistence;
 
+import org.apache.commons.lang.StringUtils;
+
 import java.io.DataInputStream;
 import java.io.DataOutputStream;
 import java.io.IOException;
 
-import org.apache.commons.lang.StringUtils;
-
 public class StringEntity extends RootPersistentEntity {
 
     public static final Serializer<StringEntity> serializer = new 
Serializer<StringEntity>() {
@@ -66,4 +66,4 @@ public class StringEntity extends RootPersistentEntity {
     public String toString() {
         return str;
     }
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
index b0721d0..33a4e7a 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/restclient/RestClient.java
@@ -27,8 +27,7 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import javax.xml.bind.DatatypeConverter;
-
+import com.fasterxml.jackson.databind.ObjectMapper;
 import org.apache.commons.io.IOUtils;
 import org.apache.http.HttpResponse;
 import org.apache.http.auth.AuthScope;
@@ -47,7 +46,7 @@ import org.apache.http.params.HttpParams;
 import org.apache.http.util.EntityUtils;
 import org.apache.kylin.common.util.JsonUtil;
 
-import com.fasterxml.jackson.databind.ObjectMapper;
+import javax.xml.bind.DatatypeConverter;
 
 /**
  * @author yangli9
@@ -123,8 +122,7 @@ public class RestClient {
             String msg = EntityUtils.toString(response.getEntity());
 
             if (response.getStatusLine().getStatusCode() != 200)
-                throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode()
-                        + " with cache wipe url " + url + "\n" + msg);
+                throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode() + " with cache wipe url " + url + "\n" 
+ msg);
         } catch (Exception ex) {
             throw new IOException(ex);
         } finally {
@@ -142,8 +140,7 @@ public class RestClient {
             msg = map.get("config");
 
             if (response.getStatusLine().getStatusCode() != 200)
-                throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode()
-                        + " with cache wipe url " + url + "\n" + msg);
+                throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode() + " with cache wipe url " + url + "\n" 
+ msg);
             return msg;
         } finally {
             request.releaseConnection();
@@ -170,8 +167,7 @@ public class RestClient {
         HttpResponse response = client.execute(put);
         String result = getContent(response);
         if (response.getStatusLine().getStatusCode() != 200) {
-            throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode()
-                    + " with build cube url " + url + "\n" + jsonMsg);
+            throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode() + " with build cube url " + url + "\n" 
+ jsonMsg);
         } else {
             return true;
         }
@@ -205,8 +201,7 @@ public class RestClient {
         HttpResponse response = client.execute(put);
         String result = getContent(response);
         if (response.getStatusLine().getStatusCode() != 200) {
-            throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode() + " with url " + url
-                    + "\n" + jsonMsg);
+            throw new IOException("Invalid response " + 
response.getStatusLine().getStatusCode() + " with url " + url + "\n" + jsonMsg);
         } else {
             return true;
         }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java 
b/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java
index 50b8e62..fc501ea 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/Bytes.java
@@ -284,8 +284,7 @@ public class Bytes {
             len = b.length - off;
         for (int i = off; i < off + len; ++i) {
             int ch = b[i] & 0xFF;
-            if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 
'a' && ch <= 'z')
-                    || " `~!@#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0) {
+            if ((ch >= '0' && ch <= '9') || (ch >= 'A' && ch <= 'Z') || (ch >= 
'a' && ch <= 'z') || " `~!@#$%^&*()-_=+[]{}|;:'\",.<>/?".indexOf(ch) >= 0) {
                 result.append((char) ch);
             } else {
                 result.append(String.format("\\x%02X", ch));
@@ -442,14 +441,12 @@ public class Bytes {
         }
     }
 
-    private static IllegalArgumentException explainWrongLengthOrOffset(final 
byte[] bytes, final int offset,
-            final int length, final int expectedLength) {
+    private static IllegalArgumentException explainWrongLengthOrOffset(final 
byte[] bytes, final int offset, final int length, final int expectedLength) {
         String reason;
         if (length != expectedLength) {
             reason = "Wrong length: " + length + ", expected " + 
expectedLength;
         } else {
-            reason = "offset (" + offset + ") + length (" + length + ") exceed 
the" + " capacity of the array: "
-                    + bytes.length;
+            reason = "offset (" + offset + ") + length (" + length + ") exceed 
the" + " capacity of the array: " + bytes.length;
         }
         return new IllegalArgumentException(reason);
     }
@@ -466,8 +463,7 @@ public class Bytes {
      */
     public static int putLong(byte[] bytes, int offset, long val) {
         if (bytes.length - offset < SIZEOF_LONG) {
-            throw new IllegalArgumentException(
-                    "Not enough room to put a long at" + " offset " + offset + 
" in a " + bytes.length + " byte array");
+            throw new IllegalArgumentException("Not enough room to put a long 
at" + " offset " + offset + " in a " + bytes.length + " byte array");
         }
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable())
 {
             return putLongUnsafe(bytes, offset, val);
@@ -493,10 +489,7 @@ public class Bytes {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
             val = Long.reverseBytes(val);
         }
-        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putLong(bytes,
-                (long) offset
-                        + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
-                val);
+        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putLong(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
 val);
         return offset + SIZEOF_LONG;
     }
 
@@ -652,14 +645,9 @@ public class Bytes {
      */
     public static int toIntUnsafe(byte[] bytes, int offset) {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
-            return Integer.reverseBytes(
-                    
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                            .getInt(bytes, (long) offset
-                                    + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
+            return 
Integer.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getInt(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
         } else {
-            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                    .getInt(bytes, (long) offset
-                            + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
+            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getInt(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
         }
     }
 
@@ -672,14 +660,9 @@ public class Bytes {
      */
     public static short toShortUnsafe(byte[] bytes, int offset) {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
-            return Short.reverseBytes(
-                    
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                            .getShort(bytes, (long) offset
-                                    + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
+            return 
Short.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getShort(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
         } else {
-            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                    .getShort(bytes, (long) offset
-                            + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
+            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getShort(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
         }
     }
 
@@ -692,14 +675,9 @@ public class Bytes {
      */
     public static long toLongUnsafe(byte[] bytes, int offset) {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
-            return Long.reverseBytes(
-                    
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                            .getLong(bytes, (long) offset
-                                    + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
+            return 
Long.reverseBytes(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getLong(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET));
         } else {
-            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe
-                    .getLong(bytes, (long) offset
-                            + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
+            return 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.getLong(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET);
         }
     }
 
@@ -715,8 +693,7 @@ public class Bytes {
      */
     public static int readAsInt(byte[] bytes, int offset, final int length) {
         if (offset + length > bytes.length) {
-            throw new IllegalArgumentException("offset (" + offset + ") + 
length (" + length + ") exceed the"
-                    + " capacity of the array: " + bytes.length);
+            throw new IllegalArgumentException("offset (" + offset + ") + 
length (" + length + ") exceed the" + " capacity of the array: " + 
bytes.length);
         }
         int n = 0;
         for (int i = offset; i < (offset + length); i++) {
@@ -738,8 +715,7 @@ public class Bytes {
      */
     public static int putInt(byte[] bytes, int offset, int val) {
         if (bytes.length - offset < SIZEOF_INT) {
-            throw new IllegalArgumentException(
-                    "Not enough room to put an int at" + " offset " + offset + 
" in a " + bytes.length + " byte array");
+            throw new IllegalArgumentException("Not enough room to put an int 
at" + " offset " + offset + " in a " + bytes.length + " byte array");
         }
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable())
 {
             return putIntUnsafe(bytes, offset, val);
@@ -765,10 +741,7 @@ public class Bytes {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
             val = Integer.reverseBytes(val);
         }
-        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putInt(bytes,
-                (long) offset
-                        + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
-                val);
+        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putInt(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
 val);
         return offset + SIZEOF_INT;
     }
 
@@ -857,8 +830,7 @@ public class Bytes {
      */
     public static int putShort(byte[] bytes, int offset, short val) {
         if (bytes.length - offset < SIZEOF_SHORT) {
-            throw new IllegalArgumentException("Not enough room to put a short 
at" + " offset " + offset + " in a "
-                    + bytes.length + " byte array");
+            throw new IllegalArgumentException("Not enough room to put a short 
at" + " offset " + offset + " in a " + bytes.length + " byte array");
         }
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.isAvailable())
 {
             return putShortUnsafe(bytes, offset, val);
@@ -882,10 +854,7 @@ public class Bytes {
         if 
(org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.littleEndian)
 {
             val = Short.reverseBytes(val);
         }
-        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putShort(bytes,
-                (long) offset
-                        + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
-                val);
+        
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.theUnsafe.putShort(bytes,
 (long) offset + 
org.apache.kylin.common.util.Bytes.LexicographicalComparerHolder.UnsafeComparer.BYTE_ARRAY_BASE_OFFSET,
 val);
         return offset + SIZEOF_SHORT;
     }
 
@@ -904,8 +873,7 @@ public class Bytes {
      */
     public static int putAsShort(byte[] bytes, int offset, int val) {
         if (bytes.length - offset < SIZEOF_SHORT) {
-            throw new IllegalArgumentException("Not enough room to put a short 
at" + " offset " + offset + " in a "
-                    + bytes.length + " byte array");
+            throw new IllegalArgumentException("Not enough room to put a short 
at" + " offset " + offset + " in a " + bytes.length + " byte array");
         }
         bytes[offset + 1] = (byte) val;
         val >>= 8;
@@ -996,8 +964,7 @@ public class Bytes {
      * @return 0 if equal, < 0 if left is less than right, etc.
      */
     public static int compareTo(byte[] buffer1, int offset1, int length1, 
byte[] buffer2, int offset2, int length2) {
-        return LexicographicalComparerHolder.BEST_COMPARER.compareTo(buffer1, 
offset1, length1, buffer2, offset2,
-                length2);
+        return LexicographicalComparerHolder.BEST_COMPARER.compareTo(buffer1, 
offset1, length1, buffer2, offset2, length2);
     }
 
     interface Comparer<T> {
@@ -1151,8 +1118,8 @@ public class Bytes {
                 }
                 final int minLength = Math.min(length1, length2);
                 final int minWords = minLength / SIZEOF_LONG;
-                final long offset1Adj = offset1 + (long) 
BYTE_ARRAY_BASE_OFFSET;
-                final long offset2Adj = offset2 + (long) 
BYTE_ARRAY_BASE_OFFSET;
+                final long offset1Adj = offset1 + (long)BYTE_ARRAY_BASE_OFFSET;
+                final long offset2Adj = offset2 + (long)BYTE_ARRAY_BASE_OFFSET;
 
                 /*
                  * Compare 8 bytes at a time. Benchmarking shows comparing 8 
bytes at a
@@ -1235,8 +1202,7 @@ public class Bytes {
         return compareTo(left, right) == 0;
     }
 
-    public static boolean equals(final byte[] left, int leftOffset, int 
leftLen, final byte[] right, int rightOffset,
-            int rightLen) {
+    public static boolean equals(final byte[] left, int leftOffset, int 
leftLen, final byte[] right, int rightOffset, int rightLen) {
         // short circuit case
         if (left == right && leftOffset == rightOffset && leftLen == rightLen) 
{
             return true;
@@ -1255,8 +1221,7 @@ public class Bytes {
         if (left[leftOffset + leftLen - 1] != right[rightOffset + rightLen - 
1])
             return false;
 
-        return LexicographicalComparerHolder.BEST_COMPARER.compareTo(left, 
leftOffset, leftLen, right, rightOffset,
-                rightLen) == 0;
+        return LexicographicalComparerHolder.BEST_COMPARER.compareTo(left, 
leftOffset, leftLen, right, rightOffset, rightLen) == 0;
     }
 
     /**
@@ -1287,9 +1252,7 @@ public class Bytes {
      * array on the left.
      */
     public static boolean startsWith(byte[] bytes, byte[] prefix) {
-        return bytes != null && prefix != null && bytes.length >= prefix.length
-                && 
LexicographicalComparerHolder.BEST_COMPARER.compareTo(bytes, 0, prefix.length, 
prefix, 0,
-                        prefix.length) == 0;
+        return bytes != null && prefix != null && bytes.length >= 
prefix.length && LexicographicalComparerHolder.BEST_COMPARER.compareTo(bytes, 
0, prefix.length, prefix, 0, prefix.length) == 0;
     }
 
     /**
@@ -1677,8 +1640,7 @@ public class Bytes {
     public static void writeStringFixedSize(final DataOutput out, String s, 
int size) throws IOException {
         byte[] b = toBytes(s);
         if (b.length > size) {
-            throw new IOException("Trying to write " + b.length + " bytes (" + 
toStringBinary(b)
-                    + ") into a field of length " + size);
+            throw new IOException("Trying to write " + b.length + " bytes (" + 
toStringBinary(b) + ") into a field of length " + size);
         }
 
         out.writeBytes(s);
@@ -1980,8 +1942,7 @@ public class Bytes {
         hex = hex.toUpperCase();
         byte[] b = new byte[hex.length() / 2];
         for (int i = 0; i < b.length; i++) {
-            b[i] = (byte) ((toBinaryFromHex((byte) hex.charAt(2 * i)) << 4)
-                    + (toBinaryFromHex((byte) hex.charAt((2 * i + 1))) & 
0xff));
+            b[i] = (byte) ((toBinaryFromHex((byte) hex.charAt(2 * i)) << 4) + 
(toBinaryFromHex((byte) hex.charAt((2 * i + 1))) & 0xff));
         }
         return b;
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java 
b/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java
index 8502b9c..c644890 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/BytesSplitter.java
@@ -29,8 +29,7 @@ import org.slf4j.LoggerFactory;
 public class BytesSplitter {
     private static final Logger logger = 
LoggerFactory.getLogger(BytesSplitter.class);
 
-    private static final int[] COMMON_DELIMS = new int[] { 
"\177".codePointAt(0), "|".codePointAt(0),
-            "\t".codePointAt(0), ",".codePointAt(0) };
+    private static final int[] COMMON_DELIMS = new int[] { 
"\177".codePointAt(0), "|".codePointAt(0), "\t".codePointAt(0), 
",".codePointAt(0) };
 
     private SplittedBytes[] splitBuffers;
     private int bufferSize;

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java 
b/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
index dfca33c..0eb1af5 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/ClassUtil.java
@@ -58,23 +58,15 @@ public class ClassUtil {
     private static final Map<String, String> classRenameMap;
     static {
         classRenameMap = new HashMap<>();
-        classRenameMap.put("org.apache.kylin.job.common.HadoopShellExecutable",
-                "org.apache.kylin.engine.mr.common.HadoopShellExecutable");
-        classRenameMap.put("org.apache.kylin.job.common.MapReduceExecutable",
-                "org.apache.kylin.engine.mr.common.MapReduceExecutable");
+        
classRenameMap.put("org.apache.kylin.job.common.HadoopShellExecutable", 
"org.apache.kylin.engine.mr.common.HadoopShellExecutable");
+        classRenameMap.put("org.apache.kylin.job.common.MapReduceExecutable", 
"org.apache.kylin.engine.mr.common.MapReduceExecutable");
         classRenameMap.put("org.apache.kylin.job.cube.CubingJob", 
"org.apache.kylin.engine.mr.CubingJob");
-        classRenameMap.put("org.apache.kylin.job.cube.GarbageCollectionStep",
-                "org.apache.kylin.storage.hbase.steps.DeprecatedGCStep");
-        classRenameMap.put("org.apache.kylin.job.cube.MergeDictionaryStep",
-                "org.apache.kylin.engine.mr.steps.MergeDictionaryStep");
-        
classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterBuildStep",
-                
"org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterBuildStep");
-        
classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterMergeStep",
-                
"org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterMergeStep");
-        
classRenameMap.put("org.apache.kylin.rest.util.KeywordDefaultDirtyHack",
-                "org.apache.kylin.query.util.KeywordDefaultDirtyHack");
-        
classRenameMap.put("org.apache.kylin.rest.util.CognosParenthesesEscape",
-                "org.apache.kylin.query.util.CognosParenthesesEscape");
+        classRenameMap.put("org.apache.kylin.job.cube.GarbageCollectionStep", 
"org.apache.kylin.storage.hbase.steps.DeprecatedGCStep");
+        classRenameMap.put("org.apache.kylin.job.cube.MergeDictionaryStep", 
"org.apache.kylin.engine.mr.steps.MergeDictionaryStep");
+        
classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterBuildStep", 
"org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterBuildStep");
+        
classRenameMap.put("org.apache.kylin.job.cube.UpdateCubeInfoAfterMergeStep", 
"org.apache.kylin.engine.mr.steps.UpdateCubeInfoAfterMergeStep");
+        
classRenameMap.put("org.apache.kylin.rest.util.KeywordDefaultDirtyHack", 
"org.apache.kylin.query.util.KeywordDefaultDirtyHack");
+        
classRenameMap.put("org.apache.kylin.rest.util.CognosParenthesesEscape", 
"org.apache.kylin.query.util.CognosParenthesesEscape");
     }
 
     @SuppressWarnings("unchecked")

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java 
b/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java
index 2f7b9c5..365caa8 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/util/ClasspathScanner.java
@@ -40,9 +40,9 @@ public class ClasspathScanner {
             }
             System.exit(0);
         }
-
+        
         final int[] hitCount = new int[1];
-
+        
         scanner.scan("", new ResourceVisitor() {
             public void accept(File dir, String relativeFileName) {
                 check(dir.getAbsolutePath(), relativeFileName.replace('\\', 
'/'));
@@ -64,7 +64,7 @@ public class ClasspathScanner {
                 }
             }
         });
-
+        
         int exitCode = hitCount[0] > 0 ? 0 : 1;
         System.exit(exitCode);
     }
@@ -118,9 +118,9 @@ public class ClasspathScanner {
                 break;
             loader = loader.getParent();
         }
-
+        
         List<File> roots = new ArrayList();
-
+        
         // parent first
         for (int i = loaders.size() - 1; i >= 0; i--) {
             ClassLoader l = loaders.get(i);
@@ -336,4 +336,4 @@ public class ClasspathScanner {
         return j == slen;
     }
 
-}
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java 
b/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java
index 32c7104..7bd520c 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/util/CompressionUtils.java
@@ -46,8 +46,7 @@ public class CompressionUtils {
         outputStream.close();
         byte[] output = outputStream.toByteArray();
 
-        logger.debug("Original: " + data.length + " bytes. " + "Compressed: " 
+ output.length + " byte. Time: "
-                + (System.currentTimeMillis() - startTime));
+        logger.debug("Original: " + data.length + " bytes. " + "Compressed: " 
+ output.length + " byte. Time: " + (System.currentTimeMillis() - startTime));
         return output;
     }
 
@@ -65,8 +64,7 @@ public class CompressionUtils {
         outputStream.close();
         byte[] output = outputStream.toByteArray();
 
-        logger.debug("Original: " + data.length + " bytes. " + "Decompressed: 
" + output.length + " bytes. Time: "
-                + (System.currentTimeMillis() - startTime));
+        logger.debug("Original: " + data.length + " bytes. " + "Decompressed: 
" + output.length + " bytes. Time: " + (System.currentTimeMillis() - 
startTime));
         return output;
     }
 }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java 
b/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java
index 0265da4..9ecd3c3 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/DBUtils.java
@@ -28,7 +28,7 @@ import org.slf4j.LoggerFactory;
 public class DBUtils {
 
     private static final Logger logger = 
LoggerFactory.getLogger(DBUtils.class);
-
+    
     /**
      * Closes an <code>ResultSet</code> unconditionally.
      * <p>

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java 
b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
index eb4d570..29858f1 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/DateFormat.java
@@ -48,7 +48,7 @@ public class DateFormat {
         }
         return r;
     }
-
+    
     public static String formatToCompactDateStr(long millis) {
         return formatToDateStr(millis, COMPACT_DATE_PATTERN);
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java 
b/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java
index 70dfa30..f242515 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/HadoopUtil.java
@@ -68,21 +68,21 @@ public class HadoopUtil {
     public static FileSystem getWorkingFileSystem() throws IOException {
         return 
getFileSystem(KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory());
     }
-
+    
     public static FileSystem getWorkingFileSystem(Configuration conf) throws 
IOException {
         Path workingPath = new 
Path(KylinConfig.getInstanceFromEnv().getHdfsWorkingDirectory());
         return getFileSystem(workingPath, conf);
     }
-
+    
     public static FileSystem getFileSystem(String path) throws IOException {
         return getFileSystem(new Path(makeURI(path)));
     }
-
+    
     public static FileSystem getFileSystem(Path path) throws IOException {
         Configuration conf = getCurrentConfiguration();
         return getFileSystem(path, conf);
     }
-
+    
     public static FileSystem getFileSystem(Path path, Configuration conf) {
         try {
             return path.getFileSystem(conf);

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java
 
b/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java
index b349443..f14ac98 100644
--- 
a/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java
+++ 
b/core-common/src/main/java/org/apache/kylin/common/util/ImplementationSwitch.java
@@ -58,8 +58,7 @@ public class ImplementationSwitch<I> {
     public synchronized I get(int id) {
         String clzName = impls.get(id);
         if (clzName == null) {
-            throw new IllegalArgumentException(
-                    "Implementation class missing, ID " + id + ", interface " 
+ interfaceClz.getName());
+            throw new IllegalArgumentException("Implementation class missing, 
ID " + id + ", interface " + interfaceClz.getName());
         }
 
         @SuppressWarnings("unchecked")
@@ -75,8 +74,7 @@ public class ImplementationSwitch<I> {
         }
 
         if (result == null)
-            throw new IllegalArgumentException(
-                    "Implementations missing, ID " + id + ", interface " + 
interfaceClz.getName());
+            throw new IllegalArgumentException("Implementations missing, ID " 
+ id + ", interface " + interfaceClz.getName());
 
         return result;
     }

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java 
b/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java
index 23f0fbc..216abae 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/JsonUtil.java
@@ -46,28 +46,23 @@ public class JsonUtil {
         indentMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
     }
 
-    public static <T> T readValue(File src, Class<T> valueType)
-            throws IOException, JsonParseException, JsonMappingException {
+    public static <T> T readValue(File src, Class<T> valueType) throws 
IOException, JsonParseException, JsonMappingException {
         return mapper.readValue(src, valueType);
     }
 
-    public static <T> T readValue(String content, Class<T> valueType)
-            throws IOException, JsonParseException, JsonMappingException {
+    public static <T> T readValue(String content, Class<T> valueType) throws 
IOException, JsonParseException, JsonMappingException {
         return mapper.readValue(content, valueType);
     }
 
-    public static <T> T readValue(Reader src, Class<T> valueType)
-            throws IOException, JsonParseException, JsonMappingException {
+    public static <T> T readValue(Reader src, Class<T> valueType) throws 
IOException, JsonParseException, JsonMappingException {
         return mapper.readValue(src, valueType);
     }
 
-    public static <T> T readValue(InputStream src, Class<T> valueType)
-            throws IOException, JsonParseException, JsonMappingException {
+    public static <T> T readValue(InputStream src, Class<T> valueType) throws 
IOException, JsonParseException, JsonMappingException {
         return mapper.readValue(src, valueType);
     }
 
-    public static <T> T readValue(byte[] src, Class<T> valueType)
-            throws IOException, JsonParseException, JsonMappingException {
+    public static <T> T readValue(byte[] src, Class<T> valueType) throws 
IOException, JsonParseException, JsonMappingException {
         return mapper.readValue(src, valueType);
     }
 
@@ -77,13 +72,11 @@ public class JsonUtil {
         return mapper.readValue(content, typeRef);
     }
 
-    public static void writeValueIndent(OutputStream out, Object value)
-            throws IOException, JsonGenerationException, JsonMappingException {
+    public static void writeValueIndent(OutputStream out, Object value) throws 
IOException, JsonGenerationException, JsonMappingException {
         indentMapper.writeValue(out, value);
     }
 
-    public static void writeValue(OutputStream out, Object value)
-            throws IOException, JsonGenerationException, JsonMappingException {
+    public static void writeValue(OutputStream out, Object value) throws 
IOException, JsonGenerationException, JsonMappingException {
         mapper.writeValue(out, value);
     }
 

http://git-wip-us.apache.org/repos/asf/kylin/blob/19585846/core-common/src/main/java/org/apache/kylin/common/util/MailService.java
----------------------------------------------------------------------
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/MailService.java 
b/core-common/src/main/java/org/apache/kylin/common/util/MailService.java
index cee33aa..25bc03c 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/MailService.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/MailService.java
@@ -42,12 +42,10 @@ public class MailService {
     private String sender;
 
     public MailService(KylinConfig config) {
-        this(config.isMailEnabled(), config.isStarttlsEnabled(), 
config.getMailHost(), config.getSmtpPort(),
-                config.getMailUsername(), config.getMailPassword(), 
config.getMailSender());
+        this(config.isMailEnabled(), config.isStarttlsEnabled(), 
config.getMailHost(), config.getSmtpPort(), config.getMailUsername(), 
config.getMailPassword(), config.getMailSender());
     }
 
-    private MailService(boolean enabled, boolean starttlsEnabled, String host, 
String port, String username,
-            String password, String sender) {
+    private MailService(boolean enabled, boolean starttlsEnabled, String host, 
String port, String username, String password, String sender) {
         this.enabled = enabled;
         this.starttlsEnabled = starttlsEnabled;
         this.host = host;
@@ -97,7 +95,7 @@ public class MailService {
         } else {
             email.setSmtpPort(Integer.valueOf(port));
         }
-
+        
         if (username != null && username.trim().length() > 0) {
             email.setAuthentication(username, password);
         }

Reply via email to