/** * DataCleaner (community edition) * Copyright (C) 2014 Neopost - Customer Information Management * * This copyrighted material is made available to anyone wishing to use, modify, * copy, or redistribute it subject to the terms and conditions of the GNU * Lesser General Public License, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this distribution; if not, write to: * Free Software Foundation, Inc. * 51 Franklin Street, Fifth Floor * Boston, MA 02110-1301 USA */ package org.datacleaner.actions; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import java.util.List; import java.util.Set; import javax.swing.JComponent; import org.datacleaner.api.Component; import org.datacleaner.api.InputColumn; import org.datacleaner.data.MutableInputColumn; import org.datacleaner.descriptors.ConfiguredPropertyDescriptor; import org.datacleaner.desktop.api.PrecedingComponentConsumer; import org.datacleaner.job.builder.AnalysisJobBuilder; import org.datacleaner.job.builder.ComponentBuilder; import org.datacleaner.job.builder.TransformerComponentBuilder; import org.datacleaner.lifecycle.LifeCycleHelper; /** * Action that displays output writers for a transformer's data. */ public class DisplayOutputWritersForTransformedDataActionListener extends DisplayOutputWritersAction implements ActionListener { private final TransformerComponentBuilder<?> _transformerJobBuilder; public DisplayOutputWritersForTransformedDataActionListener( final TransformerComponentBuilder<?> transformerJobBuilder) { super(transformerJobBuilder.getAnalysisJobBuilder()); _transformerJobBuilder = transformerJobBuilder; } @Override protected void configure(final AnalysisJobBuilder analysisJobBuilder, final ComponentBuilder componentBuilder) { final Component component = componentBuilder.getComponentInstance(); if (component instanceof PrecedingComponentConsumer) { final LifeCycleHelper helper = new LifeCycleHelper(analysisJobBuilder.getConfiguration(), null, true); helper.assignProvidedProperties(componentBuilder.getDescriptor(), component); ((PrecedingComponentConsumer) component) .configureForTransformedData(analysisJobBuilder, _transformerJobBuilder.getDescriptor()); } final Set<ConfiguredPropertyDescriptor> inputProperties = componentBuilder.getDescriptor().getConfiguredPropertiesForInput(false); if (!inputProperties.isEmpty()) { final ConfiguredPropertyDescriptor property = inputProperties.iterator().next(); final List<InputColumn<?>> inputColumnsToAdd = new ArrayList<>(); inputColumnsToAdd.addAll(_transformerJobBuilder.getInputColumns()); final List<MutableInputColumn<?>> outputColumns = _transformerJobBuilder.getOutputColumns(); for (final MutableInputColumn<?> outputColumn : outputColumns) { if (!outputColumn.isHidden()) { inputColumnsToAdd.add(outputColumn); } } componentBuilder.addInputColumns(inputColumnsToAdd, property); } } @Override public void actionPerformed(final ActionEvent e) { final JComponent component = (JComponent) e.getSource(); showPopup(component); } }