/* * 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.risk; import org.deidentifier.arx.exceptions.ComputationInterruptedException; /** * A builder for risk estimates, interruptible * * @author Fabian Prasser * @author Maximilian Zitzmann */ public class RiskEstimateBuilderInterruptible { /** The wrapped instance */ private final RiskEstimateBuilder parent; /** * Creates a new instance * * @param parent */ RiskEstimateBuilderInterruptible(RiskEstimateBuilder parent) { this.parent = parent; } /** * Returns a class providing access to an analysis of potential quasi-identifiers using * the concepts of alpha distinction and alpha separation. * * @return the RiskModelAttributes data from risk analysis */ public RiskModelAttributes getAttributeRisks() throws InterruptedException { try { return parent.getAttributeRisks(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a model of the equivalence classes in this data set * * @return * @throws InterruptedException */ public RiskModelHistogram getEquivalenceClassModel() throws InterruptedException { try { return parent.getEquivalenceClassModel(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a class providing access to the identifier HIPAA identifiers. * * @return * @throws InterruptedException */ public HIPAAIdentifierMatch[] getHIPAAIdentifiers() throws InterruptedException { try { return parent.getHIPAAIdentifiers(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a class providing population-based uniqueness estimates * * @return */ public RiskModelPopulationUniqueness getPopulationBasedUniquenessRisk() throws InterruptedException { try { return parent.getPopulationBasedUniquenessRiskInterruptible(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * If supported by the according builder, this method will report a progress * value in [0,100]. Otherwise, it will always return 0 * * @return */ public int getProgress() { return parent.getProgress(); } /** * Returns a class providing sample-based re-identification risk estimates * * @return */ public RiskModelSampleRisks getSampleBasedReidentificationRisk() throws InterruptedException { try { return parent.getSampleBasedReidentificationRisk(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a class representing the distribution of prosecutor risks in the sample * * @return */ public RiskModelSampleRiskDistribution getSampleBasedRiskDistribution() throws InterruptedException { try { return parent.getSampleBasedRiskDistribution(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a risk summary * @param threshold Acceptable highest probability of re-identification for a single record * @return * @throws InterruptedException */ public RiskModelSampleSummary getSampleBasedRiskSummary(double threshold) throws InterruptedException { try { return parent.getSampleBasedRiskSummary(threshold); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Returns a class providing sample-based uniqueness estimates * * @return */ public RiskModelSampleUniqueness getSampleBasedUniquenessRisk() throws InterruptedException { try { return parent.getSampleBasedUniquenessRisk(); } catch (ComputationInterruptedException e) { throw new InterruptedException("Computation interrupted"); } } /** * Interrupts all computations. Raises an InterruptedException. */ public void interrupt() { parent.interrupt(); } }