/*
* chombo: Hadoop Map Reduce utility
* Author: Pranab Ghosh
*
* Licensed 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.chombo.util;
import java.util.List;
import org.codehaus.jackson.annotate.JsonIgnoreProperties;
/**
* Base class for attribute. Used in schema definition. Initialized based on schema definition
* JSON file
* @author pranab
*
*/
@JsonIgnoreProperties(ignoreUnknown = true)
public class Attribute extends BaseAttribute{
protected boolean partitionAttribute;
protected boolean id;
protected boolean classAttribute;
protected List<String> cardinality;
protected double min;
protected double max;
protected double mean;
protected double variance;
protected double stdDev;
protected double skew;
protected double maxZscore;
protected String datePattern;
protected boolean nullable;
protected String stringPattern;
protected String minString;
protected String maxString;
protected int length;
private int settings;
public boolean isPartitionAttribute() {
return partitionAttribute;
}
public void setPartitionAttribute(boolean partitionAttribute) {
this.partitionAttribute = partitionAttribute;
}
public boolean isId() {
return id;
}
public void setId(boolean id) {
this.id = id;
}
public boolean isClassAttribute() {
return classAttribute;
}
public void setClassAttribute(boolean classAttribute) {
this.classAttribute = classAttribute;
}
public double getMin() {
return min;
}
public void setMin(double min) {
this.min = min;
settings = settings | 1;
}
public double getMinLength() {
return min;
}
public double getMax() {
return max;
}
public void setMax(double max) {
this.max = max;
settings = settings | 2;
}
public double getMaxLength() {
return max;
}
public List<String> getCardinality() {
return cardinality;
}
public void setCardinality(List<String> cardinality) {
this.cardinality = cardinality;
}
public double getMean() {
return mean;
}
public void setMean(double mean) {
this.mean = mean;
settings = settings | 4;
}
public double getVariance() {
return variance;
}
public void setVariance(double variance) {
this.variance = variance;
}
public double getStdDev() {
return stdDev;
}
public void setStdDev(double stdDev) {
this.stdDev = stdDev;
settings = settings | 8;
}
public double getSkew() {
return skew;
}
public void setSkew(double skew) {
this.skew = skew;
settings = settings | 16;
}
public double getMaxZscore() {
return maxZscore;
}
public void setMaxZscore(double maxZscore) {
this.maxZscore = maxZscore;
}
public String getDatePattern() {
return datePattern;
}
public void setDatePattern(String datePattern) {
this.datePattern = datePattern;
}
public boolean isNullable() {
return nullable;
}
public void setNullable(boolean nullable) {
this.nullable = nullable;
}
public String getStringPattern() {
return stringPattern;
}
public void setStringPattern(String stringPattern) {
this.stringPattern = stringPattern;
}
public String getMinString() {
return minString;
}
public void setMinString(String minString) {
this.minString = minString;
}
public String getMaxString() {
return maxString;
}
public void setMaxString(String maxString) {
this.maxString = maxString;
}
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public boolean isMinDefined() {
return (settings & 1) == 1;
}
public boolean isMaxDefined() {
return (settings & 2) == 2;
}
public boolean isMeanDefined() {
return (settings & 4) ==4;
}
public boolean isStdDevDefined() {
return (settings & 8) == 8;
}
public boolean isSkewDefined() {
return (settings & 16) == 16;
}
public int cardinalityIndex(String value) {
return cardinality.indexOf(value);
}
}