/* * ARX: Powerful Data Anonymization * Copyright 2012 - 2016 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.worker; import java.io.File; import java.lang.reflect.InvocationTargetException; import org.deidentifier.arx.ARXConfiguration; import org.deidentifier.arx.ARXLattice.ARXNode; import org.deidentifier.arx.ARXResult; import org.deidentifier.arx.DataDefinition; import org.deidentifier.arx.DataHandle; import org.deidentifier.arx.certificate.ARXCertificate; import org.deidentifier.arx.certificate.elements.ElementData; import org.deidentifier.arx.gui.model.Model; import org.deidentifier.arx.gui.resources.Resources; import org.deidentifier.arx.io.CSVSyntax; import org.eclipse.core.runtime.IProgressMonitor; /** * This worker creates a certificate. * * @author Fabian Prasser */ public class WorkerCreateCertificate extends Worker<File> { /** Data */ private final CSVSyntax syntax; /** Data */ private final String path; /** Data */ private final DataHandle input; /** Data */ private final DataDefinition definition; /** Data */ private final ARXConfiguration config; /** Data */ private final ARXResult result; /** Data */ private final ARXNode transformation; /** Data */ private final DataHandle output; /** Data */ private final Model model; /** * Creates a new instance. * * @param file * @param syntax * @param input * @param definition * @param config * @param result * @param transformation * @param output */ public WorkerCreateCertificate(String path, CSVSyntax syntax, DataHandle input, DataDefinition definition, ARXConfiguration config, ARXResult result, ARXNode transformation, DataHandle output, Model model) { this.syntax = syntax; this.path = path; this.input = input; this.definition = definition; this.config = config; this.result = result; this.transformation = transformation; this.output = output; this.model = model; } @Override public void run(final IProgressMonitor arg0) throws InvocationTargetException, InterruptedException { try { // Begin arg0.beginTask(Resources.getMessage("Controller.154"), 100); //$NON-NLS-1$ // Create metadata ElementData metadata = new ElementData("Project"); metadata.addProperty("Name", model.getName()); metadata.addProperty("Description", model.getDescription()); // Create a renderer ARXCertificate certificate = ARXCertificate.create(input, definition, config, result, transformation, output.getView(), syntax, metadata); // Check and progress if (arg0.isCanceled()) { throw new RuntimeException(Resources.getMessage("WorkerAnonymize.1")); //$NON-NLS-1$ } arg0.worked(50); // Save File file = new File(path); certificate.save(file); // Check and progress if (arg0.isCanceled()) { throw new RuntimeException(Resources.getMessage("WorkerAnonymize.1")); //$NON-NLS-1$ } arg0.worked(50); // Result super.result = file; arg0.done(); } catch (final Exception e) { super.error = e; arg0.done(); return; } } }