blob: 90bde42d0c42b1b95193506117869d938ca00d11 [file] [log] [blame]
/*
* 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.datasketches.fdt;
/**
* Defines a Group from a Frequent Distinct Tuple query. This class is called internally during
* post processing and is not inteded to be called by the user.
* Note: this class has a natural ordering that is inconsistent with equals.
* @author Lee Rhodes
*/
public class Group implements Comparable<Group> {
private int count = 0;
private double est = 0;
private double ub = 0;
private double lb = 0;
private double fraction = 0;
private double rse = 0;
private String priKey = null;
private final static String fmt =
"%,12d" + "%,15.2f" + "%,15.2f" + "%,15.2f" + "%12.6f" + "%12.6f" + " %s";
private final static String hfmt =
"%12s" + "%15s" + "%15s" + "%15s" + "%12s" + "%12s" + " %s";
/**
* Construct an empty Group
*/
public Group() { }
/**
* Specifies the parameters to be listed as columns
* @param priKey the primary key of the FDT sketch
* @param count the number of retained rows associated with this group
* @param estimate the estimate of the original population associated with this group
* @param ub the upper bound of the estimate
* @param lb the lower bound of the extimate
* @param fraction the fraction of all retained rows of the sketch associated with this group
* @param rse the estimated Relative Standard Error for this group.
* @return return this
*/
public Group init(final String priKey, final int count, final double estimate, final double ub,
final double lb, final double fraction, final double rse) {
this.count = count;
est = estimate;
this.ub = ub;
this.lb = lb;
this.fraction = fraction;
this.rse = rse;
this.priKey = priKey;
return this;
}
/**
* @return priKey of type T
*/
public String getPrimaryKey() { return priKey; }
/**
* @return the count
*/
public int getCount() { return count; }
/**
* @return the estimate
*/
public double getEstimate() { return est; }
/**
* @return the upper bound
*/
public double getUpperBound() { return ub; }
/**
* @return the lower bound
*/
public double getLowerBound() { return lb; }
/**
* @return the fraction for this group
*/
public double getFraction() { return fraction; }
/**
* @return the RSE
*/
public double getRse() { return rse; }
/**
* @return the descriptive header
*/
public String getHeader() {
return String.format(hfmt,"Count", "Est", "UB", "LB", "Fraction", "RSE", "PriKey");
}
@Override
public String toString() {
return String.format(fmt, count, est, ub, lb, fraction, rse, priKey);
}
/**
* Note: this class has a natural ordering that is inconsistent with equals.
* Ignore FindBugs EQ_COMPARETO_USE_OBJECT_EQUALS warning.
* @param that The Group to compare to
*/
@Override
public int compareTo(final Group that) {
return that.count - count; //decreasing
}
}