/*
* ARX: Powerful Data Anonymization
* Copyright 2012 - 2017 Fabian Prasser, Florian Kohlmayer and contributors
*
* 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.deidentifier.arx.metric;
import java.io.Serializable;
import org.deidentifier.arx.metric.Metric.AggregateFunction;
/**
* A class for a configuration of a metric.
*
* @author Fabian Prasser
*/
public class MetricConfiguration implements Serializable {
/** SVUID. */
private static final long serialVersionUID = 871854276489749340L;
/** Monotonic variant. */
private boolean monotonic = false;
/** Coding model. */
private double gsFactor = 0.5d;
/** Precomputed. */
private boolean precomputed = false;
/** Precomputation threshold. */
private double precomputationThreshold = 0.1d;
/** Aggregate function. */
private AggregateFunction aggregateFunction = AggregateFunction.GEOMETRIC_MEAN;
/**
* Constructs a new instance.
*
* @param monotonic
* @param gsFactor
* @param precomputed
* @param precomputationThreshold
* @param aggregateFunction
* @param attackerModel
*/
public MetricConfiguration(boolean monotonic,
double gsFactor,
boolean precomputed,
double precomputationThreshold,
AggregateFunction aggregateFunction) {
this.monotonic = monotonic;
this.gsFactor = gsFactor;
this.precomputed = precomputed;
this.precomputationThreshold = precomputationThreshold;
this.aggregateFunction = aggregateFunction;
}
/**
* @return the aggregateFunction
*/
public AggregateFunction getAggregateFunction() {
return aggregateFunction;
}
/**
* @return the gsFactor
*/
public double getGsFactor() {
return gsFactor;
}
/**
* @return the precomputationThreshold
*/
public double getPrecomputationThreshold() {
return precomputationThreshold;
}
/**
* @return the monotonic
*/
public boolean isMonotonic() {
return monotonic;
}
/**
* @return the precomputed
*/
public boolean isPrecomputed() {
return precomputed;
}
/**
* @param aggregateFunction the aggregateFunction to set
*/
public void setAggregateFunction(AggregateFunction aggregateFunction) {
this.aggregateFunction = aggregateFunction;
}
/**
* @param gsFactor the gsFactor to set
*/
public void setGsFactor(double gsFactor) {
this.gsFactor = gsFactor;
}
/**
* @param monotonic the monotonic to set
*/
public void setMonotonic(boolean monotonic) {
this.monotonic = monotonic;
}
/**
* @param precomputationThreshold the precomputationThreshold to set
*/
public void setPrecomputationThreshold(double precomputationThreshold) {
this.precomputationThreshold = precomputationThreshold;
}
/**
* @param precomputed the precomputed to set
*/
public void setPrecomputed(boolean precomputed) {
this.precomputed = precomputed;
}
}