You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2015/07/22 06:12:53 UTC
[03/47] incubator-kylin git commit: KYLIN-875 rename modules:
core-common, core-cube, core-dictionary, core-cube
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
deleted file mode 100644
index c3c9352..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/DataModelDesc.java
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import java.util.*;
-
-import org.apache.commons.lang.ArrayUtils;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.collect.Sets;
-import org.apache.kylin.common.persistence.ResourceStore;
-import org.apache.kylin.common.persistence.RootPersistentEntity;
-import org.apache.kylin.common.util.StringUtil;
-import org.apache.kylin.metadata.MetadataConstants;
-
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class DataModelDesc extends RootPersistentEntity {
-
- public static enum RealizationCapacity {
- SMALL, MEDIUM, LARGE
- }
-
- @JsonProperty("name")
- private String name;
-
- @JsonProperty("description")
- private String description;
-
- @JsonProperty("fact_table")
- private String factTable;
-
- @JsonProperty("lookups")
- private LookupDesc[] lookups;
-
- @JsonProperty("dimensions")
- private List<DimensionDesc> dimensions;
-
- @JsonProperty("metrics")
- private String[] metrics;
-
- @JsonProperty("filter_condition")
- private String filterCondition;
- @JsonProperty("partition_desc")
- PartitionDesc partitionDesc;
-
- @JsonProperty("capacity")
- private RealizationCapacity capacity = RealizationCapacity.MEDIUM;
-
-
- /**
- * Error messages during resolving json metadata
- */
- private List<String> errors = new ArrayList<String>();
-
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public Collection<String> getAllTables() {
- HashSet<String> ret = Sets.newHashSet();
- ret.add(factTable);
- for (LookupDesc lookupDesc : lookups)
- ret.add(lookupDesc.getTable());
- return ret;
- }
-
- public String getFactTable() {
- return factTable;
- }
-
- public void setFactTable(String factTable) {
- this.factTable = factTable.toUpperCase();
- }
-
- public LookupDesc[] getLookups() {
- return lookups;
- }
-
- public void setLookups(LookupDesc[] lookups) {
- this.lookups = lookups;
- }
-
- public boolean isFactTable(String factTable) {
- return this.factTable.equalsIgnoreCase(factTable);
- }
-
- public String getFilterCondition() {
- return filterCondition;
- }
-
- public void setFilterCondition(String filterCondition) {
- this.filterCondition = filterCondition;
- }
-
- public PartitionDesc getPartitionDesc() {
- return partitionDesc;
- }
-
- public void setPartitionDesc(PartitionDesc partitionDesc) {
- this.partitionDesc = partitionDesc;
- }
-
- public RealizationCapacity getCapacity() {
- return capacity;
- }
-
- public void setCapacity(RealizationCapacity capacity) {
- this.capacity = capacity;
- }
-
- public TblColRef findPKByFK(TblColRef fk, String joinType) {
- assert isFactTable(fk.getTable());
-
- TblColRef candidate = null;
-
- for (LookupDesc dim : lookups) {
- JoinDesc join = dim.getJoin();
- if (join == null)
- continue;
-
- if(joinType != null && !joinType.equals(join.getType()))
- continue;
-
- int find = ArrayUtils.indexOf(join.getForeignKeyColumns(), fk);
- if (find >= 0) {
- candidate = join.getPrimaryKeyColumns()[find];
- if (join.getForeignKeyColumns().length == 1) { // is single
- // column join?
- break;
- }
- }
- }
- return candidate;
- }
-
- public void init(Map<String, TableDesc> tables) {
- initJoinColumns(tables);
- DimensionDesc.capicalizeStrings(dimensions);
- initPartitionDesc(tables);
- }
-
- private void initPartitionDesc(Map<String, TableDesc> tables) {
- if (this.partitionDesc != null)
- this.partitionDesc.init(tables);
- }
-
- private void initJoinColumns(Map<String, TableDesc> tables) {
- // join columns may or may not present in cube;
- // here we don't modify 'allColumns' and 'dimensionColumns';
- // initDimensionColumns() will do the update
- for (LookupDesc lookup : this.lookups) {
- lookup.setTable(lookup.getTable().toUpperCase());
- TableDesc dimTable = tables.get(lookup.getTable());
- if (dimTable == null) {
- throw new IllegalStateException("Table " + lookup.getTable() + " does not exist for " + this);
- }
-
- JoinDesc join = lookup.getJoin();
- if (join == null)
- continue;
-
- StringUtil.toUpperCaseArray(join.getForeignKey(), join.getForeignKey());
- StringUtil.toUpperCaseArray(join.getPrimaryKey(), join.getPrimaryKey());
- // primary key
- String[] pks = join.getPrimaryKey();
- TblColRef[] pkCols = new TblColRef[pks.length];
- for (int i = 0; i < pks.length; i++) {
- ColumnDesc col = dimTable.findColumnByName(pks[i]);
- if (col == null) {
- throw new IllegalStateException("Can't find column " + pks[i] + " in table " + dimTable.getIdentity());
- }
- TblColRef colRef = new TblColRef(col);
- pks[i] = colRef.getName();
- pkCols[i] = colRef;
- }
- join.setPrimaryKeyColumns(pkCols);
- // foreign key
- TableDesc factTable = tables.get(this.factTable.toUpperCase());
- if (factTable == null) {
- throw new IllegalStateException("Fact table does not exist:" + this.getFactTable());
- }
- String[] fks = join.getForeignKey();
- TblColRef[] fkCols = new TblColRef[fks.length];
- for (int i = 0; i < fks.length; i++) {
- ColumnDesc col = factTable.findColumnByName(fks[i]);
- if (col == null) {
- throw new IllegalStateException("Can't find column " + fks[i] + " in table " + this.getFactTable());
- }
- TblColRef colRef = new TblColRef(col);
- fks[i] = colRef.getName();
- fkCols[i] = colRef;
- }
- join.setForeignKeyColumns(fkCols);
- // Validate join in dimension
- if (pkCols.length != fkCols.length) {
- throw new IllegalStateException("Primary keys(" + lookup.getTable() + ")" + Arrays.toString(pks) + " are not consistent with Foreign keys(" + this.getFactTable() + ") " + Arrays.toString(fks));
- }
- for (int i = 0; i < fkCols.length; i++) {
- if (!fkCols[i].getDatatype().equals(pkCols[i].getDatatype())) {
- throw new IllegalStateException("Primary key " + lookup.getTable() + "." + pkCols[i].getName() + "." + pkCols[i].getDatatype() + " are not consistent with Foreign key " + this.getFactTable() + "." + fkCols[i].getName() + "." + fkCols[i].getDatatype());
- }
- }
-
- }
- }
-
- /**
- * Add error info and thrown exception out
- *
- * @param message
- */
- public void addError(String message) {
- addError(message, false);
- }
-
- /**
- * @param message
- * error message
- * @param silent
- * if throw exception
- */
- public void addError(String message, boolean silent) {
- if (!silent) {
- throw new IllegalStateException(message);
- } else {
- this.errors.add(message);
- }
- }
-
- public List<String> getError() {
- return this.errors;
- }
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- DataModelDesc modelDesc = (DataModelDesc) o;
-
- if (!name.equals(modelDesc.name))
- return false;
- if (!getFactTable().equals(modelDesc.getFactTable()))
- return false;
-
- return true;
- }
-
-
- @Override
- public int hashCode() {
- int result = 0;
- result = 31 * result + name.hashCode();
- result = 31 * result + getFactTable().hashCode();
- return result;
- }
-
- @Override
- public String toString() {
- return "DataModelDesc [name=" + name + "]";
- }
-
- public String getResourcePath() {
- return concatResourcePath(name);
- }
-
- public static String concatResourcePath(String descName) {
- return ResourceStore.DATA_MODEL_DESC_RESOURCE_ROOT + "/" + descName + MetadataConstants.FILE_SURFIX;
- }
-
- public List<DimensionDesc> getDimensions() {
- return dimensions;
- }
-
- public String[] getMetrics() {
- return metrics;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/DataType.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/DataType.java b/metadata/src/main/java/org/apache/kylin/metadata/model/DataType.java
deleted file mode 100644
index c1b1d23..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/DataType.java
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * @author yangli9
- *
- */
-public class DataType {
-
- public static final String VALID_TYPES_STRING = "any|char|varchar|boolean|binary" //
- + "|integer|tinyint|smallint|bigint|decimal|numeric|float|real|double" //
- + "|date|time|datetime|timestamp|byte|int|short|long|string|hllc" //
- + "|" + TblColRef.InnerDataTypeEnum.LITERAL.getDataType() //
- + "|" + TblColRef.InnerDataTypeEnum.DERIVED.getDataType();
-
- private static final Pattern TYPE_PATTERN = Pattern.compile(
- // standard sql types, ref:
- // http://www.w3schools.com/sql/sql_datatypes_general.asp
- "(" + VALID_TYPES_STRING + ")" + "\\s*" //
- + "(?:" + "[(]" + "([\\d\\s,]+)" + "[)]" + ")?", Pattern.CASE_INSENSITIVE);
-
- public static final Set<String> INTEGER_FAMILY = new HashSet<String>();
- public static final Set<String> NUMBER_FAMILY = new HashSet<String>();
- public static final Set<String> DATETIME_FAMILY = new HashSet<String>();
- public static final Set<String> STRING_FAMILY = new HashSet<String>();
- private static final Set<Integer> HLLC_PRECISIONS = new HashSet<Integer>();
- private static final Map<String, String> LEGACY_TYPE_MAP = new HashMap<String, String>();
- static {
- INTEGER_FAMILY.add("tinyint");
- INTEGER_FAMILY.add("smallint");
- INTEGER_FAMILY.add("integer");
- INTEGER_FAMILY.add("bigint");
-
- NUMBER_FAMILY.addAll(INTEGER_FAMILY);
- NUMBER_FAMILY.add("float");
- NUMBER_FAMILY.add("double");
- NUMBER_FAMILY.add("decimal");
- NUMBER_FAMILY.add("real");
- NUMBER_FAMILY.add("numeric");
-
- DATETIME_FAMILY.add("date");
- DATETIME_FAMILY.add("time");
- DATETIME_FAMILY.add("datetime");
- DATETIME_FAMILY.add("timestamp");
-
- STRING_FAMILY.add("varchar");
- STRING_FAMILY.add("char");
-
- LEGACY_TYPE_MAP.put("byte", "tinyint");
- LEGACY_TYPE_MAP.put("int", "integer");
- LEGACY_TYPE_MAP.put("short", "smallint");
- LEGACY_TYPE_MAP.put("long", "bigint");
- LEGACY_TYPE_MAP.put("string", "varchar");
- LEGACY_TYPE_MAP.put("hllc10", "hllc(10)");
- LEGACY_TYPE_MAP.put("hllc12", "hllc(12)");
- LEGACY_TYPE_MAP.put("hllc14", "hllc(14)");
- LEGACY_TYPE_MAP.put("hllc15", "hllc(15)");
- LEGACY_TYPE_MAP.put("hllc16", "hllc(16)");
-
- for (int i = 10; i <= 16; i++)
- HLLC_PRECISIONS.add(i);
- }
-
- private static final ConcurrentMap<DataType, DataType> CACHE = new ConcurrentHashMap<DataType, DataType>();
-
- public static final DataType ANY = DataType.getInstance("any");
-
- public static DataType getInstance(String type) {
- if (type == null)
- return null;
-
- DataType dataType = new DataType(type);
- DataType cached = CACHE.get(dataType);
- if (cached == null) {
- CACHE.put(dataType, dataType);
- cached = dataType;
- }
- return cached;
- }
-
- // ============================================================================
-
- private String name;
- private int precision;
- private int scale;
-
- DataType(String datatype) {
- parseDataType(datatype);
- }
-
- private void parseDataType(String datatype) {
- datatype = datatype.trim().toLowerCase();
- datatype = replaceLegacy(datatype);
-
- Matcher m = TYPE_PATTERN.matcher(datatype);
- if (m.matches() == false)
- throw new IllegalArgumentException("bad data type -- " + datatype + ", does not match " + TYPE_PATTERN);
-
- name = replaceLegacy(m.group(1));
- precision = -1;
- scale = -1;
-
- String leftover = m.group(2);
- if (leftover != null) {
- String[] parts = leftover.split("\\s*,\\s*");
- for (int i = 0; i < parts.length; i++) {
- int n;
- try {
- n = Integer.parseInt(parts[i]);
- } catch (NumberFormatException e) {
- throw new IllegalArgumentException("bad data type -- " + datatype + ", precision/scale not numeric");
- }
- if (i == 0)
- precision = n;
- else if (i == 1)
- scale = n;
- else
- throw new IllegalArgumentException("bad data type -- " + datatype + ", too many precision/scale parts");
- }
- }
-
- // FIXME 256 for unknown string precision
- if ((name.equals("char") || name.equals("varchar")) && precision == -1) {
- precision = 256; // to save memory at frontend, e.g. tableau will
- // allocate memory according to this
- }
-
- // FIXME (19,4) for unknown decimal precision
- if ((name.equals("decimal") || name.equals("numeric")) && precision == -1) {
- precision = 19;
- scale = 4;
- }
-
- if (isHLLC() && HLLC_PRECISIONS.contains(precision) == false)
- throw new IllegalArgumentException("HLLC precision must be one of " + HLLC_PRECISIONS);
- }
-
- private String replaceLegacy(String str) {
- String replace = LEGACY_TYPE_MAP.get(str);
- return replace == null ? str : replace;
- }
-
- public int getSpaceEstimate() {
- if (isTinyInt()) {
- return 1;
- } else if (isSmallInt()) {
- return 2;
- } else if (isInt()) {
- return 4;
- } else if (isBigInt()) {
- return 8;
- } else if (isFloat()) {
- return 4;
- } else if (isDouble()) {
- return 8;
- } else if (isDecimal()) {
- return 8;
- } else if (isHLLC()) {
- return 1 << precision;
- }
- throw new IllegalStateException("The return type : " + name + " is not recognized;");
- }
-
- public boolean isStringFamily() {
- return STRING_FAMILY.contains(name);
- }
-
- public boolean isIntegerFamily() {
- return INTEGER_FAMILY.contains(name);
- }
-
- public boolean isNumberFamily() {
- return NUMBER_FAMILY.contains(name);
- }
-
- public boolean isDateTimeFamily() {
- return DATETIME_FAMILY.contains(name);
- }
-
- public boolean isDate() {
- return name.equals("date");
- }
-
- public boolean isTime() {
- return name.equals("time");
- }
-
- public boolean isTimestamp() {
- return name.equals("timestamp");
- }
-
- public boolean isDatetime() {
- return name.equals("datetime");
- }
-
- public boolean isTinyInt() {
- return name.equals("tinyint");
- }
-
- public boolean isSmallInt() {
- return name.equals("smallint");
- }
-
- public boolean isInt() {
- return name.equals("integer");
- }
-
- public boolean isBigInt() {
- return name.equals("bigint");
- }
-
- public boolean isFloat() {
- return name.equals("float");
- }
-
- public boolean isDouble() {
- return name.equals("double");
- }
-
- public boolean isDecimal() {
- return name.equals("decimal");
- }
-
- public boolean isHLLC() {
- return name.equals("hllc");
- }
-
- public String getName() {
- return name;
- }
-
- public int getPrecision() {
- return precision;
- }
-
- public int getScale() {
- return scale;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((name == null) ? 0 : name.hashCode());
- result = prime * result + precision;
- result = prime * result + scale;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- DataType other = (DataType) obj;
- if (name == null) {
- if (other.name != null)
- return false;
- } else if (!name.equals(other.name))
- return false;
- if (precision != other.precision)
- return false;
- if (scale != other.scale)
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- if (precision < 0 && scale < 0)
- return name;
- else if (scale < 0)
- return name + "(" + precision + ")";
- else
- return name + "(" + precision + "," + scale + ")";
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/DatabaseDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/DatabaseDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/DatabaseDesc.java
deleted file mode 100644
index 3269e43..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/DatabaseDesc.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-/**
- * @author xjiang
- */
-public class DatabaseDesc {
- private String name;
-
- /**
- * @return the name
- */
- public String getName() {
- return name == null ? "null" : name.toUpperCase();
- }
-
- /**
- * @param name
- * the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see java.lang.Object#toString()
- */
- @Override
- public String toString() {
-
- return "DatabaseDesc [name=" + name + "]";
- }
-
- public static HashMap<String, Integer> extractDatabaseOccurenceCounts(Set<TableDesc> tables) {
- HashMap<String, Integer> databaseCounts = new HashMap<String, Integer>();
- for (TableDesc tableDesc : tables) {
- String databaseName = tableDesc.getDatabase();
- Integer counter = databaseCounts.get(databaseName);
- if (counter != null)
- databaseCounts.put(databaseName, counter + 1);
- else
- databaseCounts.put(databaseName, 1);
- }
- return databaseCounts;
- }
-
- public static HashSet<String> extractDatabaseNames(List<TableDesc> tables) {
- HashSet<String> databaseNames = new HashSet<String>();
- for (TableDesc tableDesc : tables) {
- databaseNames.add(tableDesc.getDatabase());
- }
- return databaseNames;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/DimensionDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/DimensionDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/DimensionDesc.java
deleted file mode 100644
index 73e71b6..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/DimensionDesc.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.kylin.common.util.StringUtil;
-
-import java.util.List;
-
-/**
- */
-@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.NONE, getterVisibility = JsonAutoDetect.Visibility.NONE, isGetterVisibility = JsonAutoDetect.Visibility.NONE, setterVisibility = JsonAutoDetect.Visibility.NONE)
-public class DimensionDesc {
- @JsonProperty("table")
- private String table;
- @JsonProperty("columns")
- private String[] columns;
-
- public String getTable() {
- return table;
- }
-
- public void setTable(String table) {
- this.table = table;
- }
-
- public String[] getColumns() {
- return columns;
- }
-
- public void setColumns(String[] columns) {
- this.columns = columns;
- }
-
- public static void capicalizeStrings(List<DimensionDesc> dimensions) {
- if (dimensions != null) {
- for (DimensionDesc dimensionDesc : dimensions) {
- dimensionDesc.setTable(dimensionDesc.getTable().toUpperCase());
- if (dimensionDesc.getColumns() != null) {
- StringUtil.toUpperCaseArray(dimensionDesc.getColumns(), dimensionDesc.getColumns());
- }
- }
- }
- }
-
- public static int getColumnCount(List<DimensionDesc> dimensionDescs) {
- int count = 0;
- for (DimensionDesc dimensionDesc : dimensionDescs) {
- if (dimensionDesc.getColumns() != null) {
- count += dimensionDesc.getColumns().length;
- }
- }
- return count;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
deleted file mode 100644
index af125e2..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/FunctionDesc.java
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.util.Collection;
-
-/**
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class FunctionDesc {
-
- public static final String FUNC_SUM = "SUM";
- public static final String FUNC_MIN = "MIN";
- public static final String FUNC_MAX = "MAX";
- public static final String FUNC_COUNT = "COUNT";
- public static final String FUNC_COUNT_DISTINCT = "COUNT_DISTINCT";
-
- public static final String PARAMTER_TYPE_CONSTANT = "constant";
- public static final String PARAMETER_TYPE_COLUMN = "column";
-
- @JsonProperty("expression")
- private String expression;
- @JsonProperty("parameter")
- private ParameterDesc parameter;
- @JsonProperty("returntype")
- private String returnType;
-
- private DataType returnDataType;
- private boolean isDimensionAsMetric = false;
-
- public String getRewriteFieldName() {
- if (isSum()) {
- return getParameter().getValue();
- } else if (isCount()) {
- return "COUNT__"; // ignores parameter, count(*), count(1), count(col) are all the same
- } else {
- return getFullExpression().replaceAll("[(), ]", "_");
- }
- }
-
- public boolean needRewrite() {
- return !isSum() && !isDimensionAsMetric();
- }
-
- public ColumnDesc newFakeRewriteColumn(TableDesc sourceTable) {
- ColumnDesc fakeCol = new ColumnDesc();
- fakeCol.setName(getRewriteFieldName());
- fakeCol.setDatatype(getSQLType().toString());
- if (isCount())
- fakeCol.setNullable(false);
- fakeCol.init(sourceTable);
- return fakeCol;
- }
-
- public boolean isMin() {
- return FUNC_MIN.equalsIgnoreCase(expression);
- }
-
- public boolean isMax() {
- return FUNC_MAX.equalsIgnoreCase(expression);
- }
-
- public boolean isSum() {
- return FUNC_SUM.equalsIgnoreCase(expression);
- }
-
- public boolean isCount() {
- return FUNC_COUNT.equalsIgnoreCase(expression);
- }
-
- public boolean isCountDistinct() {
- return FUNC_COUNT_DISTINCT.equalsIgnoreCase(expression);
- }
-
- public boolean isHolisticCountDistinct() {
- if (isCountDistinct() && returnDataType != null && returnDataType.isBigInt()) {
- return true;
- } else {
- return false;
- }
- }
-
- /**
- * Get Full Expression such as sum(amount), count(1), count(*)...
- */
- public String getFullExpression() {
- StringBuilder sb = new StringBuilder(expression);
- sb.append("(");
- if (parameter != null) {
- sb.append(parameter.getValue());
- }
- sb.append(")");
- return sb.toString();
- }
-
- public boolean isDimensionAsMetric() {
- return isDimensionAsMetric;
- }
-
- public void setDimensionAsMetric(boolean isDimensionAsMetric) {
- this.isDimensionAsMetric = isDimensionAsMetric;
- }
-
- public String getExpression() {
- return expression;
- }
-
- public void setExpression(String expression) {
- this.expression = expression;
- }
-
- public ParameterDesc getParameter() {
- return parameter;
- }
-
- public void setParameter(ParameterDesc parameter) {
- this.parameter = parameter;
- }
-
- public DataType getSQLType() {
- if (isCountDistinct())
- return DataType.ANY;
- else if (isSum() || isMax() || isMin())
- return parameter.getColRefs().get(0).getType();
- else
- return returnDataType;
- }
-
- public String getReturnType() {
- return returnType;
- }
-
- public DataType getReturnDataType() {
- return returnDataType;
- }
-
- public void setReturnType(String returnType) {
- this.returnType = returnType;
- this.initReturnDataType();
- }
-
- // Jackson does not provide object post-processing currently
- public void initReturnDataType() {
- this.returnDataType = DataType.getInstance(returnType);
- }
-
- public TblColRef selectTblColRef(Collection<TblColRef> metricColumns, String factTableName) {
- if (this.isCount())
- return null; // count is not about any column but the whole row
-
- ParameterDesc parameter = this.getParameter();
- if (parameter == null)
- return null;
-
- String columnName = parameter.getValue();
- for (TblColRef col : metricColumns) {
- if (col.isSameAs(factTableName, columnName)) {
- return col;
- }
- }
- return null;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((expression == null) ? 0 : expression.hashCode());
- result = prime * result + ((isCount() || parameter == null) ? 0 : parameter.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- FunctionDesc other = (FunctionDesc) obj;
- if (expression == null) {
- if (other.expression != null)
- return false;
- } else if (!expression.equals(other.expression))
- return false;
- // NOTE: don't check the parameter of count()
- if (isCount() == false) {
- if (parameter == null) {
- if (other.parameter != null)
- return false;
- } else if (!parameter.equals(other.parameter))
- return false;
- }
- return true;
- }
-
- @Override
- public String toString() {
- return "FunctionDesc [expression=" + expression + ", parameter=" + parameter + ", returnType=" + returnType + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/IBuildable.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/IBuildable.java b/metadata/src/main/java/org/apache/kylin/metadata/model/IBuildable.java
deleted file mode 100644
index e6175fd..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/IBuildable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-public interface IBuildable {
-
- public int getSourceType();
-
- public int getEngineType();
-
- public int getStorageType();
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
deleted file mode 100644
index 0124b9b..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/IJoinedFlatTableDesc.java
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import java.util.List;
-
-/**
- */
-public interface IJoinedFlatTableDesc {
-
- public String getTableName();
-
- public List<IntermediateColumnDesc> getColumnList();
-
- public DataModelDesc getDataModel();
-
- public DataModelDesc.RealizationCapacity getCapacity();
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
deleted file mode 100644
index 9dbe63e..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/IntermediateColumnDesc.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import org.apache.kylin.metadata.model.TblColRef;
-
-/**
- */
-public class IntermediateColumnDesc {
- private String id;
- private TblColRef colRef;
-
- public IntermediateColumnDesc(String id, TblColRef colRef) {
- this.id = id;
- this.colRef = colRef;
- }
-
- public String getId() {
- return id;
- }
-
- public TblColRef getColRef() {
- return this.colRef;
- }
-
- public String getColumnName() {
- return colRef.getName();
- }
-
- public String getDataType() {
- return colRef.getDatatype();
- }
-
- public String getTableName() {
- return colRef.getTable();
- }
-
- public boolean isSameAs(String tableName, String columnName) {
- return colRef.isSameAs(tableName, columnName);
- }
-
- public String getCanonicalName() {
- return colRef.getCanonicalName();
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
deleted file mode 100644
index da907b9..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/JoinDesc.java
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-import java.util.Arrays;
-
-/**
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class JoinDesc {
-
- // inner, left, right, outer...
- @JsonProperty("type")
- private String type;
- @JsonProperty("primary_key")
- private String[] primaryKey;
- @JsonProperty("foreign_key")
- private String[] foreignKey;
-
- private TblColRef[] primaryKeyColumns;
- private TblColRef[] foreignKeyColumns;
-
- public void swapPKFK() {
- String[] t = primaryKey;
- primaryKey = foreignKey;
- foreignKey = t;
-
- TblColRef[] tt = primaryKeyColumns;
- primaryKeyColumns = foreignKeyColumns;
- foreignKeyColumns = tt;
- }
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public String[] getPrimaryKey() {
- return primaryKey;
- }
-
- public void setPrimaryKey(String[] primaryKey) {
- this.primaryKey = primaryKey;
- }
-
- public String[] getForeignKey() {
- return foreignKey;
- }
-
- public void setForeignKey(String[] foreignKey) {
- this.foreignKey = foreignKey;
- }
-
- public TblColRef[] getPrimaryKeyColumns() {
- return primaryKeyColumns;
- }
-
- public void setPrimaryKeyColumns(TblColRef[] primaryKeyColumns) {
- this.primaryKeyColumns = primaryKeyColumns;
- }
-
- public TblColRef[] getForeignKeyColumns() {
- return foreignKeyColumns;
- }
-
- public void setForeignKeyColumns(TblColRef[] foreignKeyColumns) {
- this.foreignKeyColumns = foreignKeyColumns;
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + Arrays.hashCode(primaryKeyColumns);
- result = prime * result + Arrays.hashCode(foreignKeyColumns);
- result = prime * result + this.type.hashCode();
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- JoinDesc other = (JoinDesc) obj;
-
- if (!this.columnsEqualIgnoringOrder(foreignKeyColumns, other.foreignKeyColumns))
- return false;
- if (!this.columnsEqualIgnoringOrder(primaryKeyColumns, other.primaryKeyColumns))
- return false;
-
- if (!this.type.equalsIgnoreCase(other.getType()))
- return false;
- return true;
- }
-
- private boolean columnsEqualIgnoringOrder(TblColRef[] a, TblColRef[] b) {
- if (a.length != b.length)
- return false;
-
- return Arrays.asList(a).containsAll(Arrays.asList(b));
- }
-
- @Override
- public String toString() {
- return "JoinDesc [type=" + type + ", primary_key=" + Arrays.toString(primaryKey) + ", foreign_key=" + Arrays.toString(foreignKey) + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/LookupDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/LookupDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/LookupDesc.java
deleted file mode 100644
index 1904c0a..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/LookupDesc.java
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class LookupDesc {
-
- @JsonProperty("table")
- private String table;
-
- @JsonProperty("join")
- private JoinDesc join;
-
- public String getTable() {
- return table;
- }
-
- public void setTable(String table) {
- this.table = table;
- }
-
- public JoinDesc getJoin() {
- return join;
- }
-
- public void setJoin(JoinDesc join) {
- this.join = join;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/MeasureDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/MeasureDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/MeasureDesc.java
deleted file mode 100644
index 7237588..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/MeasureDesc.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- */
-
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class MeasureDesc {
-
- @JsonProperty("id")
- private int id;
- @JsonProperty("name")
- private String name;
- @JsonProperty("function")
- private FunctionDesc function;
- @JsonProperty("dependent_measure_ref")
- private String dependentMeasureRef;
-
- public int getId() {
- return id;
- }
-
- public void setId(int id) {
- this.id = id;
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public FunctionDesc getFunction() {
- return function;
- }
-
- public void setFunction(FunctionDesc function) {
- this.function = function;
- }
-
- public String getDependentMeasureRef() {
- return dependentMeasureRef;
- }
-
- public void setDependentMeasureRef(String dependentMeasureRef) {
- this.dependentMeasureRef = dependentMeasureRef;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
-
- MeasureDesc that = (MeasureDesc) o;
-
- if (!function.equals(that.getFunction()))
- return false;
-
- if (dependentMeasureRef != null && that.getDependentMeasureRef() == null
- || dependentMeasureRef == null && that.getDependentMeasureRef() != null)
- return false;
-
- if (dependentMeasureRef == null && that.getDependentMeasureRef() == null)
- return true;
-
- return dependentMeasureRef.equalsIgnoreCase(that.getDependentMeasureRef());
- }
-
- @Override
- public int hashCode() {
- return id;
- }
-
- @Override
- public String toString() {
- return "MeasureDesc [name=" + name + ", function=" + function + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
deleted file mode 100644
index 14a073f..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/ParameterDesc.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.hadoop.util.StringUtils;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class ParameterDesc {
-
- public static final String COLUMN_TYPE = "column";
-
- @JsonProperty("type")
- private String type;
- @JsonProperty("value")
- private String value;
-
- private List<TblColRef> colRefs;
-
- public String getType() {
- return type;
- }
-
- public void setType(String type) {
- this.type = type;
- }
-
- public byte[] getBytes() throws UnsupportedEncodingException {
- return value.getBytes("UTF-8");
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- public List<TblColRef> getColRefs() {
- return colRefs;
- }
-
- public void setColRefs(List<TblColRef> colRefs) {
- this.colRefs = colRefs;
- }
-
- public boolean isColumnType() {
- return COLUMN_TYPE.equals(type);
- }
-
- public void normalizeColumnValue() {
- if (isColumnType()) {
- String values[] = value.split("\\s*,\\s*");
- for (int i = 0; i < values.length; i++)
- values[i] = values[i].toUpperCase();
- Arrays.sort(values);
- value = StringUtils.join(",", values);
- }
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
- result = prime * result + ((type == null) ? 0 : type.hashCode());
- result = prime * result + ((value == null) ? 0 : value.hashCode());
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- ParameterDesc other = (ParameterDesc) obj;
- if (type == null) {
- if (other.type != null)
- return false;
- } else if (!type.equals(other.type))
- return false;
- if (value == null) {
- if (other.value != null)
- return false;
- } else if (!value.equals(other.value))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- return "ParameterDesc [type=" + type + ", value=" + value + "]";
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
deleted file mode 100644
index 7ae234c..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/PartitionDesc.java
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import java.util.Map;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.kylin.common.util.ClassUtil;
-import org.apache.kylin.common.util.DateFormat;
-import org.apache.kylin.common.util.StringSplitter;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-/**
- * @author xduo
- *
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class PartitionDesc {
-
- public static enum PartitionType {
- APPEND, //
- UPDATE_INSERT // not used since 0.7.1
- }
-
- @JsonProperty("partition_date_column")
- private String partitionDateColumn;
- @JsonProperty("partition_date_start")
- private long partitionDateStart = 0L;
- @JsonProperty("partition_type")
- private PartitionType partitionType = PartitionType.APPEND;
- @JsonProperty("partition_condition_builder")
- private String partitionConditionBuilderClz = DefaultPartitionConditionBuilder.class.getName();
-
- private TblColRef partitionDateColumnRef;
- private IPartitionConditionBuilder partitionConditionBuilder;
-
- public void init(Map<String, TableDesc> tables) {
- if (StringUtils.isEmpty(partitionDateColumn))
- return;
-
- partitionDateColumn = partitionDateColumn.toUpperCase();
-
- String[] columns = StringSplitter.split(partitionDateColumn, ".");
-
- if (null != columns && columns.length == 3) {
- String tableName = columns[0].toUpperCase() + "." + columns[1].toUpperCase();
-
- TableDesc table = tables.get(tableName);
- ColumnDesc col = table.findColumnByName(columns[2]);
- if (col != null) {
- partitionDateColumnRef = new TblColRef(col);
- } else {
- throw new IllegalStateException("The column '" + partitionDateColumn + "' provided in 'partition_date_column' doesn't exist.");
- }
- } else {
- throw new IllegalStateException("The 'partition_date_column' format is invalid: " + partitionDateColumn + ", it should be {db}.{table}.{column}.");
- }
-
- partitionConditionBuilder = (IPartitionConditionBuilder) ClassUtil.newInstance(partitionConditionBuilderClz);
- }
-
- public boolean isPartitioned() {
- return partitionDateColumnRef != null;
- }
-
- public String getPartitionDateColumn() {
- return partitionDateColumn;
- }
-
- public void setPartitionDateColumn(String partitionDateColumn) {
- this.partitionDateColumn = partitionDateColumn;
- }
-
- public long getPartitionDateStart() {
- return partitionDateStart;
- }
-
- public void setPartitionDateStart(long partitionDateStart) {
- this.partitionDateStart = partitionDateStart;
- }
-
- public PartitionType getCubePartitionType() {
- return partitionType;
- }
-
- public void setCubePartitionType(PartitionType partitionType) {
- this.partitionType = partitionType;
- }
-
- public IPartitionConditionBuilder getPartitionConditionBuilder() {
- return partitionConditionBuilder;
- }
-
- public TblColRef getPartitionDateColumnRef() {
- return partitionDateColumnRef;
- }
-
- // ============================================================================
-
- public static interface IPartitionConditionBuilder {
- String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map<String, String> tableAlias);
- }
-
- public static class DefaultPartitionConditionBuilder implements IPartitionConditionBuilder {
-
- @Override
- public String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map<String, String> tableAlias) {
- String partitionColumnName = partDesc.getPartitionDateColumn();
-
- // convert to use table alias
- int indexOfDot = partitionColumnName.lastIndexOf(".");
- if (indexOfDot > 0) {
- String partitionTableName = partitionColumnName.substring(0, indexOfDot);
- if (tableAlias != null && tableAlias.containsKey(partitionTableName))
- partitionColumnName = tableAlias.get(partitionTableName) + partitionColumnName.substring(indexOfDot);
- }
-
- StringBuilder builder = new StringBuilder();
-
- if (startInclusive > 0) {
- builder.append(partitionColumnName + " >= '" + DateFormat.formatToDateStr(startInclusive) + "' ");
- builder.append("AND ");
- }
- builder.append(partitionColumnName + " < '" + DateFormat.formatToDateStr(endExclusive) + "'");
-
- return builder.toString();
- }
-
- }
-
-
- /**
- * Another implementation of IPartitionConditionBuilder, for the fact tables which have three partition columns "YEAR", "MONTH", and "DAY"; This
- * class will concat the three columns into yyyy-MM-dd format for query hive;
- */
- public static class YearMonthDayPartitionConditionBuilder implements PartitionDesc.IPartitionConditionBuilder {
-
- @Override
- public String buildDateRangeCondition(PartitionDesc partDesc, long startInclusive, long endExclusive, Map<String, String> tableAlias) {
-
- String partitionColumnName = partDesc.getPartitionDateColumn();
- String partitionTableName;
-
- // convert to use table alias
- int indexOfDot = partitionColumnName.lastIndexOf(".");
- if (indexOfDot > 0) {
- partitionTableName = partitionColumnName.substring(0, indexOfDot).toUpperCase();
- } else {
- throw new IllegalStateException("The partitionColumnName is invalid: " + partitionColumnName);
- }
-
- if (tableAlias.containsKey(partitionTableName)) {
- partitionTableName = tableAlias.get(partitionTableName);
- }
-
- String concatField = String.format("CONCAT(%s.YEAR,'-',%s.MONTH,'-',%s.DAY)", partitionTableName, partitionTableName, partitionTableName);
- StringBuilder builder = new StringBuilder();
-
- if (startInclusive > 0) {
- builder.append(concatField + " >= '" + DateFormat.formatToDateStr(startInclusive) + "' ");
- builder.append("AND ");
- }
- builder.append(concatField + " < '" + DateFormat.formatToDateStr(endExclusive) + "'");
-
-
- return builder.toString();
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/SegmentStatusEnum.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/SegmentStatusEnum.java b/metadata/src/main/java/org/apache/kylin/metadata/model/SegmentStatusEnum.java
deleted file mode 100644
index 65c44df..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/SegmentStatusEnum.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-/**
- * @author xduo
- *
- */
-public enum SegmentStatusEnum {
- NEW, READY, READY_PENDING
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/TableDesc.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/TableDesc.java b/metadata/src/main/java/org/apache/kylin/metadata/model/TableDesc.java
deleted file mode 100644
index 4bc9df3..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/TableDesc.java
+++ /dev/null
@@ -1,173 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import org.apache.kylin.common.persistence.ResourceStore;
-import org.apache.kylin.common.persistence.RootPersistentEntity;
-import org.apache.kylin.common.util.StringSplitter;
-
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * Table Metadata from Source. All name should be uppercase.
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class TableDesc extends RootPersistentEntity {
- @JsonProperty("name")
- private String name;
- @JsonProperty("columns")
- private ColumnDesc[] columns;
-
- private DatabaseDesc database = new DatabaseDesc();
-
- private String identity = null;
-
- public ColumnDesc findColumnByName(String name) {
- //ignore the db name and table name if exists
- int lastIndexOfDot = name.lastIndexOf(".");
- if (lastIndexOfDot >= 0) {
- name = name.substring(lastIndexOfDot + 1);
- }
-
- for (ColumnDesc c : columns) {
- // return first matched column
- if (name.equalsIgnoreCase(c.getName())) {
- return c;
- }
- }
- return null;
- }
-
- public String getResourcePath() {
- return concatResourcePath(getIdentity());
- }
-
- /**
- * @deprecated this is for compatible with data model v1;
- * @return
- */
- public String getResourcePathV1() {
- return concatResourcePath(name);
- }
-
- public String getIdentity() {
- if (identity == null) {
- identity = String.format("%s.%s", this.getDatabase().toUpperCase(), this.getName()).toUpperCase();
- }
- return identity;
- }
-
- public static String concatResourcePath(String tableIdentity) {
- return ResourceStore.TABLE_RESOURCE_ROOT + "/" + tableIdentity + ".json";
- }
-
- public static String concatExdResourcePath(String tableIdentity) {
- return ResourceStore.TABLE_EXD_RESOURCE_ROOT + "/" + tableIdentity + ".json";
- }
-
- // ============================================================================
-
- public String getName() {
- return this.name;
- }
-
- public void setName(String name) {
- if (name != null) {
- String[] splits = StringSplitter.split(name, ".");
- if (splits.length == 2) {
- this.setDatabase(splits[0]);
- this.name = splits[1];
- } else if (splits.length == 1) {
- this.name = splits[0];
- }
- } else {
- this.name = name;
- }
- }
-
- @JsonProperty("database")
- public String getDatabase() {
- return database.getName();
- }
-
- @JsonProperty("database")
- public void setDatabase(String database) {
- this.database.setName(database);
- }
-
- public ColumnDesc[] getColumns() {
- return columns;
- }
-
- public void setColumns(ColumnDesc[] columns) {
- this.columns = columns;
- }
-
- public int getMaxColumnIndex() {
- int max = -1;
- for (ColumnDesc col : columns) {
- int idx = col.getZeroBasedIndex();
- max = Math.max(max, idx);
- }
- return max;
- }
-
- public int getColumnCount() {
- return getMaxColumnIndex() + 1;
- }
-
- public void init() {
- if (name != null)
- name = name.toUpperCase();
-
- if (getDatabase() != null)
- setDatabase(getDatabase().toUpperCase());
-
- if (columns != null) {
- Arrays.sort(columns, new Comparator<ColumnDesc>() {
- @Override
- public int compare(ColumnDesc col1, ColumnDesc col2) {
- Integer id1 = Integer.parseInt(col1.getId());
- Integer id2 = Integer.parseInt(col2.getId());
- return id1.compareTo(id2);
- }
- });
-
- for (ColumnDesc col : columns) {
- col.init(this);
- }
- }
- }
-
- @Override
- public String toString() {
- return "TableDesc [database=" + getDatabase() + " name=" + name + "]";
- }
-
- /** create a mockup table for unit test */
- public static TableDesc mockup(String tableName) {
- TableDesc mockup = new TableDesc();
- mockup.setName(tableName);
- return mockup;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java b/metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
deleted file mode 100644
index caac52a..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/model/TblColRef.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.model;
-
-import org.apache.commons.lang.StringUtils;
-
-/**
- */
-public class TblColRef {
-
- private static final String INNER_TABLE_NAME = "_kylin_table";
-
- // used by projection rewrite, see OLAPProjectRel
- public enum InnerDataTypeEnum {
-
- LITERAL("_literal_type"), DERIVED("_derived_type");
-
- private final String dateType;
-
- private InnerDataTypeEnum(String name) {
- this.dateType = name;
- }
-
- public String getDataType() {
- return dateType;
- }
-
- public static boolean contains(String name) {
- return LITERAL.getDataType().equals(name) || DERIVED.getDataType().equals(name);
- }
- }
-
- // used by projection rewrite, see OLAPProjectRel
- public static TblColRef newInnerColumn(String columnName, InnerDataTypeEnum dataType) {
- ColumnDesc column = new ColumnDesc();
- column.setName(columnName);
- TableDesc table = new TableDesc();
- column.setTable(table);
- TblColRef colRef = new TblColRef(column);
- colRef.markInnerColumn(dataType);
- return colRef;
- }
-
- // ============================================================================
-
- private ColumnDesc column;
-
- public TblColRef(ColumnDesc column) {
- this.column = column;
- }
-
- public ColumnDesc getColumnDesc() {
- return column;
- }
-
- public void setColumn(ColumnDesc column) {
- this.column = column;
- }
-
- public String getName() {
- return column.getName();
- }
-
- public String getTable() {
- if (column.getTable() == null) {
- return null;
- }
- return column.getTable().getIdentity();
- }
-
- public String getCanonicalName() {
- return getTable() + "." + getName();
- }
-
- public String getDatatype() {
- return column.getDatatype();
- }
-
- public DataType getType() {
- return column.getType();
- }
-
- public void markInnerColumn(InnerDataTypeEnum dataType) {
- this.column.setDatatype(dataType.getDataType());
- this.column.getTable().setName(INNER_TABLE_NAME);
- this.column.getTable().setDatabase("DEFAULT");
- }
-
- public boolean isInnerColumn() {
- return InnerDataTypeEnum.contains(getDatatype());
- }
-
- public boolean isDerivedDataType() {
- return InnerDataTypeEnum.DERIVED.getDataType().equals(getDatatype());
- }
-
- /**
- *
- * @param tableName full name : db.table
- * @param columnName columnname
- * @return
- */
- public boolean isSameAs(String tableName, String columnName) {
- return column.isSameAs(tableName, columnName);
- }
-
- @Override
- public int hashCode() {
- final int prime = 31;
- int result = 1;
-
- result = prime * result + column.getTable().getIdentity().hashCode();
- result = prime * result + column.getName().hashCode();
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
- TblColRef other = (TblColRef) obj;
- if (!StringUtils.equals(column.getTable().getIdentity(), other.column.getTable().getIdentity()))
- return false;
- if (!StringUtils.equals(column.getName(), other.column.getName()))
- return false;
- return true;
- }
-
- @Override
- public String toString() {
- return (column.getTable() == null ? null : column.getTable().getIdentity()) + "." + column.getName();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-kylin/blob/7e8896ac/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java
----------------------------------------------------------------------
diff --git a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java b/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java
deleted file mode 100644
index d6cbfcc..0000000
--- a/metadata/src/main/java/org/apache/kylin/metadata/project/ProjectInstance.java
+++ /dev/null
@@ -1,284 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
-*/
-
-package org.apache.kylin.metadata.project;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.JsonProperty;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.kylin.common.persistence.ResourceStore;
-import org.apache.kylin.common.persistence.RootPersistentEntity;
-import org.apache.kylin.metadata.realization.RealizationType;
-
-import javax.annotation.Nullable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-import java.util.TreeSet;
-
-/**
- * Project is a concept in Kylin similar to schema in DBMS
- */
-@JsonAutoDetect(fieldVisibility = Visibility.NONE, getterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE, setterVisibility = Visibility.NONE)
-public class ProjectInstance extends RootPersistentEntity {
-
- public static final String DEFAULT_PROJECT_NAME = "DEFAULT";
-
- @JsonProperty("name")
- private String name;
-
- @JsonProperty("tables")
- private Set<String> tables = new TreeSet<String>();
-
- @JsonProperty("owner")
- private String owner;
-
- @JsonProperty("status")
- private ProjectStatusEnum status;
-
- @JsonProperty("create_time_utc")
- private long createTimeUTC;
-
- @JsonProperty("last_update_time")
- // FIXME why not RootPersistentEntity.lastModified??
- private String lastUpdateTime;
-
- @JsonProperty("description")
- private String description;
-
- @JsonProperty("realizations")
- private List<RealizationEntry> realizationEntries;
-
- @JsonProperty("models")
- private List<String> models;
-
- public String getResourcePath() {
- return concatResourcePath(name);
- }
-
- public static String concatResourcePath(String projectName) {
- return ResourceStore.PROJECT_RESOURCE_ROOT + "/" + projectName + ".json";
- }
-
- public static String getNormalizedProjectName(String project) {
- if (project == null)
- throw new IllegalStateException("Trying to normalized a project name which is null");
-
- return project.toUpperCase();
- }
-
- public static ProjectInstance create(String name, String owner, String description, List<RealizationEntry> realizationEntries,List<String> models) {
- ProjectInstance projectInstance = new ProjectInstance();
-
- projectInstance.updateRandomUuid();
- projectInstance.setName(name);
- projectInstance.setOwner(owner);
- projectInstance.setDescription(description);
- projectInstance.setStatus(ProjectStatusEnum.ENABLED);
- projectInstance.setCreateTimeUTC(System.currentTimeMillis());
- if (realizationEntries != null)
- projectInstance.setRealizationEntries(realizationEntries);
- else
- projectInstance.setRealizationEntries(Lists.<RealizationEntry> newArrayList());
- if (models != null)
- projectInstance.setModels(models);
- else
- projectInstance.setModels(new ArrayList<String>());
- return projectInstance;
- }
-
- // ============================================================================
-
- public ProjectInstance() {
- }
-
- public String getDescription() {
- return description;
- }
-
- public void setDescription(String description) {
- this.description = description;
- }
-
- public ProjectStatusEnum getStatus() {
- return status;
- }
-
- public void setStatus(ProjectStatusEnum status) {
- this.status = status;
- }
-
- public long getCreateTimeUTC() {
- return createTimeUTC;
- }
-
- public void setCreateTimeUTC(long createTimeUTC) {
- this.createTimeUTC = createTimeUTC;
- }
-
- public String getName() {
- return this.name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public boolean containsRealization(final RealizationType type, final String realization) {
- return Iterables.any(this.realizationEntries, new Predicate<RealizationEntry>() {
- @Override
- public boolean apply(RealizationEntry input) {
- return input.getType() == type && input.getRealization().equalsIgnoreCase(realization);
- }
- });
- }
-
- public void removeRealization(final RealizationType type, final String realization) {
- Iterables.removeIf(this.realizationEntries, new Predicate<RealizationEntry>() {
- @Override
- public boolean apply(RealizationEntry input) {
- return input.getType() == type && input.getRealization().equalsIgnoreCase(realization);
- }
- });
- }
-
- public List<RealizationEntry> getRealizationEntries(final RealizationType type) {
- if (type == null)
- return getRealizationEntries();
-
- return ImmutableList.copyOf(Iterables.filter(realizationEntries, new Predicate<RealizationEntry>() {
- @Override
- public boolean apply(@Nullable RealizationEntry input) {
- return input.getType() == type;
- }
- }));
- }
-
- public int getRealizationCount(final RealizationType type) {
-
- if (type == null)
- return this.realizationEntries.size();
-
- return Iterables.size(Iterables.filter(this.realizationEntries, new Predicate<RealizationEntry>() {
- @Override
- public boolean apply(RealizationEntry input) {
- return input.getType() == type;
- }
- }));
- }
-
- public void addRealizationEntry(final RealizationType type, final String realizationName) {
- RealizationEntry pdm = new RealizationEntry();
- pdm.setType(type);
- pdm.setRealization(realizationName);
- this.realizationEntries.add(pdm);
- }
-
- public void setTables(Set<String> tables) {
- this.tables = tables;
- }
-
- public boolean containsTable(String tableName) {
- return tables.contains(tableName.toUpperCase());
- }
-
- public void removeTable(String tableName) {
- tables.remove(tableName.toUpperCase());
- }
-
- public int getTablesCount() {
- return this.getTables().size();
- }
-
- public void addTable(String tableName) {
- this.getTables().add(tableName.toUpperCase());
- }
-
- public Set<String> getTables() {
- return tables;
- }
-
- public String getOwner() {
- return owner;
- }
-
- public void setOwner(String owner) {
- this.owner = owner;
- }
-
- public void recordUpdateTime(long timeMillis) {
- this.lastUpdateTime = formatTime(timeMillis);
- }
-
- public List<RealizationEntry> getRealizationEntries() {
- return realizationEntries;
- }
-
- public void setRealizationEntries(List<RealizationEntry> entries) {
- this.realizationEntries = entries;
- }
-
- public List<String> getModels() {
- return models;
- }
-
- public boolean containsModel(String modelName) {
- return models!=null&&models.contains(modelName);
- }
-
- public void setModels(List<String> models) { this.models = models; }
-
- public void addModel(String modelName) {
- if(this.getModels()==null){
- this.setModels(new ArrayList<String>());
- }
- this.getModels().add(modelName);
- }
-
- public void removeModel(String modelName){
- if(this.getModels()!=null) {
- this.getModels().remove(modelName);
- }
- }
-
- public void init() {
- if (name == null)
- name = ProjectInstance.DEFAULT_PROJECT_NAME;
-
- if (realizationEntries == null) {
- realizationEntries = new ArrayList<RealizationEntry>();
- }
-
- if (tables == null)
- tables = new TreeSet<String>();
-
- if (StringUtils.isBlank(this.name))
- throw new IllegalStateException("Project name must not be blank");
- }
-
- @Override
- public String toString() {
- return "ProjectDesc [name=" + name + "]";
- }
-
-}