package nl.ipo.cds.etl.theme.protectedSite; import java.util.Collections; import java.util.HashMap; import java.util.Map; import nl.idgis.commons.jobexecutor.JobLogger; import nl.ipo.cds.attributemapping.operations.discover.OperationDiscoverer; import nl.ipo.cds.dao.ManagerDao; import nl.ipo.cds.domain.EtlJob; import nl.ipo.cds.etl.DatasetHandlers; import nl.ipo.cds.etl.DefaultDatasetHandlers; import nl.ipo.cds.etl.Validator; import nl.ipo.cds.etl.filtering.FeatureClipper; import nl.ipo.cds.etl.theme.ThemeConfig; import nl.ipo.cds.etl.theme.ThemeConfigException; import nl.ipo.cds.validation.execute.CompilerException; import org.deegree.geometry.Geometry; public class ProtectedSiteThemeConfig extends ThemeConfig<ProtectedSite> { public final static String THEME_NAME = "Protected sites"; private final Map<Object, Object> validatorMessages; private final OperationDiscoverer operationDiscoverer; public ProtectedSiteThemeConfig( final Map<Object, Object> validatorMessages, final OperationDiscoverer operationDiscoverer) { super(THEME_NAME, ProtectedSite.class); this.validatorMessages = validatorMessages == null ? new HashMap<Object, Object>() : new HashMap<Object, Object>(validatorMessages); this.operationDiscoverer = operationDiscoverer; } public Map<Object, Object> getValidatorMessages() { return Collections.unmodifiableMap(validatorMessages); } public OperationDiscoverer getOperationDiscoverer() { return operationDiscoverer; } @Override public Validator<ProtectedSite> getValidator() throws ThemeConfigException { try { return new ProtectedSiteValidator(validatorMessages); } catch (CompilerException e) { throw new ThemeConfigException(e); } } @Override public boolean isJobSupported(final EtlJob job) { return job.getDatasetType() != null && job.getDatasetType().getThema() != null && THEME_NAME.equals(job.getDatasetType().getThema().getNaam()); } @Override public DatasetHandlers<ProtectedSite> createDatasetHandlers(final EtlJob job, final ManagerDao managerDao) { return new DefaultDatasetHandlers<ProtectedSite>(operationDiscoverer, this, managerDao) { @Override public FeatureClipper getFeatureClipper(final EtlJob job, final JobLogger logger) { final Geometry geometry = managerDao.getBronhouderGeometry(job.getBronhouder()); if (geometry == null) { return null; } return new FeatureClipper(geometry, getBeanClass()); } }; } }