/** * 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.cluster.http; import java.util.ArrayList; import java.util.List; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.protocol.HttpClientContext; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.datacleaner.api.AnalyzerResult; import org.datacleaner.beans.CompletenessAnalyzer; import org.datacleaner.beans.CompletenessAnalyzerResult; import org.datacleaner.cluster.ClusterTestHelper; import org.datacleaner.cluster.DistributedAnalysisRunner; import org.datacleaner.configuration.DataCleanerConfiguration; import org.datacleaner.job.AnalysisJob; import org.datacleaner.job.builder.AnalysisJobBuilder; import org.datacleaner.job.builder.AnalyzerComponentBuilder; import org.datacleaner.job.runner.AnalysisResultFuture; public class SimpleMainAppForManualTesting { public static void main(final String[] args) throws Throwable { // create a HTTP BASIC enabled HTTP client final CloseableHttpClient httpClient = HttpClients.createSystem(); final CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); final UsernamePasswordCredentials credentials = new UsernamePasswordCredentials("admin", "admin"); credentialsProvider.setCredentials(new AuthScope("localhost", 8080), credentials); credentialsProvider.setCredentials(new AuthScope("localhost", 9090), credentials); final HttpClientContext httpClientContext = HttpClientContext.create(); httpClientContext.setCredentialsProvider(credentialsProvider); // register endpoints final List<String> slaveEndpoints = new ArrayList<>(); slaveEndpoints.add("http://localhost:8080/DataCleaner-monitor/repository/demo/cluster_slave_endpoint"); slaveEndpoints.add("http://localhost:9090/DataCleaner-monitor/repository/demo/cluster_slave_endpoint"); final HttpClusterManager clusterManager = new HttpClusterManager(httpClient, httpClientContext, slaveEndpoints); final DataCleanerConfiguration configuration = ClusterTestHelper.createConfiguration("manual_test", false); // build a job that concats names and inserts the concatenated names // into a file final AnalysisJobBuilder jobBuilder = new AnalysisJobBuilder(configuration); jobBuilder.setDatastore("orderdb"); jobBuilder.addSourceColumns("CUSTOMERS.CUSTOMERNUMBER", "CUSTOMERS.CUSTOMERNAME", "CUSTOMERS.CONTACTFIRSTNAME", "CUSTOMERS.CONTACTLASTNAME"); final AnalyzerComponentBuilder<CompletenessAnalyzer> completeness = jobBuilder.addAnalyzer(CompletenessAnalyzer.class); completeness.addInputColumns(jobBuilder.getSourceColumns()); completeness.setConfiguredProperty("Conditions", new CompletenessAnalyzer.Condition[] { CompletenessAnalyzer.Condition.NOT_BLANK_OR_NULL, CompletenessAnalyzer.Condition.NOT_BLANK_OR_NULL, CompletenessAnalyzer.Condition.NOT_BLANK_OR_NULL, CompletenessAnalyzer.Condition.NOT_BLANK_OR_NULL }); final AnalysisJob job = jobBuilder.toAnalysisJob(); jobBuilder.close(); final AnalysisResultFuture result = new DistributedAnalysisRunner(configuration, clusterManager).run(job); if (result.isErrornous()) { throw result.getErrors().get(0); } final List<AnalyzerResult> results = result.getResults(); for (final AnalyzerResult analyzerResult : results) { System.out.println("result:" + analyzerResult); if (analyzerResult instanceof CompletenessAnalyzerResult) { final int invalidRowCount = ((CompletenessAnalyzerResult) analyzerResult).getInvalidRowCount(); System.out.println("invalid records found: " + invalidRowCount); } else { System.out.println("class: " + analyzerResult.getClass().getName()); } } } }