text: /*
   * ARX: Powerful Data Anonymization
   * Copyright 2012 - 2020 Fabian Prasser 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;
      }
  }