/* * Constellation - An open source and standard compliant SDI * http://www.constellation-sdi.org * * Copyright 2014 Geomatys. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.constellation.wps.configuration; import java.util.Iterator; import java.util.logging.Level; import org.constellation.configuration.ConfigurationException; import org.constellation.configuration.Instance; import org.constellation.configuration.ProcessContext; import org.constellation.configuration.ProcessFactory; import org.constellation.dto.SimpleValue; import org.constellation.ogc.configuration.OGCConfigurer; import org.constellation.wps.utils.WPSUtils; import org.geotoolkit.process.ProcessDescriptor; import org.geotoolkit.process.ProcessFinder; import org.geotoolkit.process.ProcessingRegistry; /** * {@link org.constellation.configuration.ServiceConfigurer} implementation for WPS service. * * TODO: implement specific configuration methods * * @author Fabien Bernard (Geomatys). * @version 0.9 * @since 0.9 */ public class WPSConfigurer extends OGCConfigurer { /** * Create a new {@link WPSConfigurer} instance. */ protected WPSConfigurer() { } @Override public Instance getInstance(final String spec, final String identifier) throws ConfigurationException { final Instance instance = super.getInstance(spec, identifier); try { instance.setLayersNumber(getProcessCount(identifier)); } catch (ConfigurationException ex) { LOGGER.log(Level.WARNING, "Error while getting process count on WPS instance:" + identifier, ex); } return instance; } public int getProcessCount(String id) throws ConfigurationException { final ProcessContext context = (ProcessContext) serviceBusiness.getConfiguration("WPS", id); int count = 0; if (Boolean.TRUE.equals(context.getProcesses().getLoadAll()) ) { for (Iterator<ProcessingRegistry> it = ProcessFinder.getProcessFactories(); it.hasNext();) { final ProcessingRegistry processingRegistry = it.next(); for (ProcessDescriptor descriptor : processingRegistry.getDescriptors()) { if (WPSUtils.isSupportedProcess(descriptor)) { count++; } } } } else { for (ProcessFactory pFacto : context.getProcessFactories()) { final ProcessingRegistry processingRegistry = ProcessFinder.getProcessFactory(pFacto.getAutorityCode()); if (pFacto.getLoadAll()) { for (ProcessDescriptor descriptor : processingRegistry.getDescriptors()) { if (WPSUtils.isSupportedProcess(descriptor)) { count++; } } } else { count = count + pFacto.getInclude().getProcess().size(); } } } return count; } }