org.datacleaner.widgets.properties.MultipleMappedEnumsPropertyWidgetTest.java Source code

Java tutorial

Introduction

Here is the source code for org.datacleaner.widgets.properties.MultipleMappedEnumsPropertyWidgetTest.java

Source

/**
 * 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.widgets.properties;

import java.awt.GraphicsEnvironment;
import java.util.List;
import java.util.Set;

import junit.framework.TestCase;

import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.vfs2.FileObject;
import org.apache.commons.vfs2.VFS;
import org.datacleaner.actions.OpenAnalysisJobActionListener;
import org.datacleaner.api.InputColumn;
import org.datacleaner.beans.CompletenessAnalyzer;
import org.datacleaner.configuration.DataCleanerConfiguration;
import org.datacleaner.descriptors.ConfiguredPropertyDescriptor;
import org.datacleaner.descriptors.EnumerationValue;
import org.datacleaner.guice.DCModule;
import org.datacleaner.guice.DCModuleImpl;
import org.datacleaner.job.builder.AnalysisJobBuilder;
import org.datacleaner.job.builder.AnalyzerComponentBuilder;
import org.datacleaner.windows.AnalysisJobBuilderWindow;

import com.google.inject.Guice;
import com.google.inject.Injector;

public class MultipleMappedEnumsPropertyWidgetTest extends TestCase {

    public void testRestoreEnumValuesFromFile() throws Exception {
        final DCModule dcModule = new DCModuleImpl();
        final FileObject file = VFS.getManager().resolveFile("src/test/resources/mapped_columns_job.analysis.xml");
        final Injector injector1 = Guice.createInjector(dcModule);
        final DataCleanerConfiguration configuration = injector1.getInstance(DataCleanerConfiguration.class);

        final Injector injector2 = OpenAnalysisJobActionListener.open(file, configuration, injector1);

        final List<AnalyzerComponentBuilder<?>> analyzers;
        if (GraphicsEnvironment.isHeadless()) {
            analyzers = injector2.getInstance(AnalysisJobBuilder.class).getAnalyzerComponentBuilders();
        } else {
            final AnalysisJobBuilderWindow window = injector2.getInstance(AnalysisJobBuilderWindow.class);
            analyzers = window.getAnalysisJobBuilder().getAnalyzerComponentBuilders();
        }

        assertEquals(2, analyzers.size());

        final AnalyzerComponentBuilder<?> completenessAnalyzer = analyzers.get(0);
        assertEquals("Completeness analyzer", completenessAnalyzer.getDescriptor().getDisplayName());

        final Set<ConfiguredPropertyDescriptor> enumProperties = completenessAnalyzer.getDescriptor()
                .getConfiguredPropertiesByType(CompletenessAnalyzer.Condition[].class, false);
        assertEquals(1, enumProperties.size());

        final Set<ConfiguredPropertyDescriptor> inputProperties = completenessAnalyzer.getDescriptor()
                .getConfiguredPropertiesForInput(false);
        assertEquals(1, inputProperties.size());

        final ConfiguredPropertyDescriptor enumProperty = enumProperties.iterator().next();
        final Enum<?>[] enumValue = (Enum<?>[]) completenessAnalyzer.getConfiguredProperty(enumProperty);
        assertEquals("{NOT_NULL,NOT_BLANK_OR_NULL}", ArrayUtils.toString(enumValue));

        final ConfiguredPropertyDescriptor inputProperty = inputProperties.iterator().next();
        final InputColumn<?>[] inputValue = (InputColumn<?>[]) completenessAnalyzer
                .getConfiguredProperty(inputProperty);

        final MultipleMappedEnumsPropertyWidget inputWidget = new MultipleMappedEnumsPropertyWidget(
                completenessAnalyzer, inputProperty, enumProperty);
        final PropertyWidget<Object[]> enumWidget = inputWidget.getMappedEnumsPropertyWidget();
        enumWidget.initialize(EnumerationValue.fromArray(enumValue));
        inputWidget.initialize(inputValue);
        inputWidget.onValueTouched(inputValue);
        enumWidget.onValueTouched(EnumerationValue.fromArray(enumValue));

        assertEquals("{NOT_NULL,NOT_BLANK_OR_NULL}", ArrayUtils.toString(enumWidget.getValue()));
    }
}