package nl.ipo.cds.webservices; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.xml.stream.FactoryConfigurationError; import javax.xml.stream.XMLStreamException; import javax.xml.transform.TransformerException; import junit.framework.Assert; import nl.idgis.commons.jobexecutor.JobDao; import nl.ipo.cds.dao.ManagerDao; import nl.ipo.cds.domain.EtlJob; import nl.ipo.cds.domain.Dataset; import nl.ipo.cds.etl.file.FileCacheImpl; import org.apache.commons.lang.builder.ReflectionToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.jaxen.JaxenException; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.core.io.FileSystemResource; import org.springframework.core.io.Resource; import org.springframework.core.io.UrlResource; public class FeatureCompletenessChecker { private static final Log logger = LogFactory.getLog(FeatureCompletenessChecker.class); private ManagerDao managerDao; private JobDao jobDao; private FileCacheImpl fileCache; private URL inspireGetFeatureRequest; public static void main(String[] args) throws Exception { ApplicationContext applicationContext = new ClassPathXmlApplicationContext( "classpath:/nl/ipo/cds/dao/dao-applicationContext.xml", "classpath:/nl/ipo/cds/dao/dataSource-applicationContext.xml", "classpath:/nl/ipo/cds/webservices/webservices-applicationContext.xml" ); FeatureCompletenessChecker featureCompletenessChecker = applicationContext.getBean(FeatureCompletenessChecker.class); featureCompletenessChecker.compareBronhouderVSInspireServices(); } public void compareBronhouderVSInspireServices() throws IOException, TransformerException, XMLStreamException, FactoryConfigurationError, JaxenException{ List<Resource> getFeatureResourcesAllDatasets = createGetFeatureResourcesAllDatasets(); FeatureCollectionComparator comparator = new FeatureCollectionComparator(); Resource featureCollectionInspire = new UrlResource(inspireGetFeatureRequest); logger.debug("Make string-id collection of the inspire service from url: " + featureCollectionInspire.getDescription()); List<String> allInspireFeatures = FeatureCollectionComparator.createFeatureIdStringCollectionFlat(featureCollectionInspire); logger.debug("Done making string-id collection of the inspire service"); FeatureCollectionComparisonResult result = comparator.compareFeatureCollectionsByResources(getFeatureResourcesAllDatasets, allInspireFeatures); logger.debug(ReflectionToStringBuilder.toString(result.getMessages().toArray(), ToStringStyle.MULTI_LINE_STYLE)); Assert.assertTrue("Collection's should be equal", result.isSuccess()); } private List<Resource> createGetFeatureResourcesAllDatasets() throws JaxenException, XMLStreamException, FactoryConfigurationError, IOException { List<Resource> getFeatureResourcesAllDatasets = new ArrayList<Resource>(); List<Dataset> datasets = managerDao.getAllDatasets(); int quantityDatasetsLoadedInInspireSchema = 0; for (Iterator<Dataset> datasetIterator = datasets.iterator(); datasetIterator.hasNext();) { Dataset dataset = (Dataset) datasetIterator.next(); EtlJob job = managerDao.getLastSuccessfullImportJob(dataset.getBronhouder(), dataset.getDatasetType(), dataset.getUuid()); if(job != null){ String fileCacheDir = null;//fileCache.getFiledir(job); String file = null;//fileCache.getFilename(job); Resource cachedResource = new FileSystemResource(fileCacheDir + System.getProperty("file.separator") + file); logger.debug("Adding cachedResource(" + quantityDatasetsLoadedInInspireSchema + ") " + "\"" + cachedResource.getDescription() + "\" to the cached-resources-list."); getFeatureResourcesAllDatasets.add(cachedResource); quantityDatasetsLoadedInInspireSchema++; } } logger.debug("Quantity of datasets that resulted in features in inspire schema:" + quantityDatasetsLoadedInInspireSchema); return getFeatureResourcesAllDatasets; } public JobDao getJobDao () { return jobDao; } public void setJobDao (final JobDao jobDao) { this.jobDao = jobDao; } public ManagerDao getManagerDao() { return managerDao; } public void setManagerDao(ManagerDao managerDao) { this.managerDao = managerDao; } public FileCacheImpl getFileCache() { return fileCache; } public void setFileCache(FileCacheImpl fileCache) { this.fileCache = fileCache; } public URL getInspireGetFeatureRequest() { return inspireGetFeatureRequest; } public void setInspireGetFeatureRequest(URL inspireGetFeatureRequest) { this.inspireGetFeatureRequest = inspireGetFeatureRequest; } }