/* * 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.gui.model; import org.deidentifier.arx.criteria.BasicBLikeness; import org.deidentifier.arx.criteria.EnhancedBLikeness; import org.deidentifier.arx.criteria.PrivacyCriterion; import org.deidentifier.arx.gui.resources.Resources; import org.deidentifier.arx.gui.view.SWTUtil; /** * This class implements a model for the b-likeness privacy model * * @author Fabian Prasser */ public class ModelBLikenessCriterion extends ModelExplicitCriterion{ /** SVUID */ private static final long serialVersionUID = 2269238032187539934L; /** Is this the enhanced variant */ private boolean enhanced = false; /** Delta */ private double beta = 1.0d; /** * Creates a new instance. * * @param attribute */ public ModelBLikenessCriterion(String attribute) { super(attribute); } /** * Creates a new instance. * * @param attribute * @param beta * @param enhanced */ public ModelBLikenessCriterion(String attribute, double beta, boolean enhanced) { super(attribute); this.beta = beta; this.enhanced = enhanced; } @Override public ModelBLikenessCriterion clone() { ModelBLikenessCriterion result = new ModelBLikenessCriterion(this.getAttribute()); result.beta = this.beta; result.enhanced = this.enhanced; result.setEnabled(this.isEnabled()); return result; } @Override public PrivacyCriterion getCriterion(Model model) { if (enhanced) { return new EnhancedBLikeness(getAttribute(), beta); } else { return new BasicBLikeness(getAttribute(), beta); } } /** * Returns B. * * @return */ public double getB() { return beta; } /** * Returns whether this is the enhanced variant * @return */ public boolean isEnhanced() { return enhanced; } @Override public String getLabel() { return '\u03B2' + Resources.getMessage("Model.36"); //$NON-NLS-1$ //$NON-NLS-2$ } @Override public void parse(ModelCriterion criterion, boolean _default) { if (!(criterion instanceof ModelBLikenessCriterion)) { return; } ModelBLikenessCriterion other = (ModelBLikenessCriterion)criterion; this.beta = other.beta; this.enhanced = other.enhanced; this.setEnabled(other.isEnabled()); } @Override public void pull(ModelExplicitCriterion criterion) { if (!(criterion instanceof ModelBLikenessCriterion)) { throw new RuntimeException(Resources.getMessage("Model.2d")); //$NON-NLS-1$ } ModelBLikenessCriterion other = (ModelBLikenessCriterion)criterion; this.beta = other.beta; this.enhanced = other.enhanced; } /** * Sets Beta. * * @param beta */ public void setB(double beta) { this.beta = beta; } /** * Sets whether or not this is the enhanced variant * @param enhanced */ public void setEnhanced(boolean enhanced) { this.enhanced = enhanced; } @Override public String toString() { return (this.enhanced ? Resources.getMessage("Model.39") : Resources.getMessage("Model.37")) + //$NON-NLS-1$ //$NON-NLS-2$ SWTUtil.getPrettyString(beta) + Resources.getMessage("Model.38"); //$NON-NLS-1$ } }