/* * 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.process.service; import org.constellation.business.IServiceBusiness; import org.constellation.configuration.ConfigurationException; import org.constellation.dto.Details; import org.constellation.process.AbstractCstlProcess; import org.geotoolkit.process.ProcessDescriptor; import org.geotoolkit.process.ProcessException; import org.opengis.parameter.ParameterValueGroup; import org.springframework.beans.factory.annotation.Autowired; import static org.constellation.process.service.CreateServiceDescriptor.CONFIGURATION; import static org.constellation.process.service.CreateServiceDescriptor.IDENTIFIER; import static org.constellation.process.service.CreateServiceDescriptor.OUT_CONFIGURATION; import static org.constellation.process.service.CreateServiceDescriptor.SERVICE_METADATA; import static org.constellation.process.service.CreateServiceDescriptor.SERVICE_TYPE; import static org.geotoolkit.parameter.Parameters.getOrCreate; import static org.geotoolkit.parameter.Parameters.value; /** * Process that create a new instance configuration from the service name (WMS, WMTS, WCS or WFS) for a specified instance name. * If the instance directory is created but no configuration file exist, the process will create one. * Execution will throw ProcessExeption if the service name is different from WMS, WMTS of WFS (no matter of case) or if * a configuration file already exist fo this instance name. * @author Quentin Boileau (Geomatys). */ public class CreateService extends AbstractCstlProcess { @Autowired public IServiceBusiness serviceBusiness; public CreateService(final ProcessDescriptor desc, final ParameterValueGroup parameter) { super(desc, parameter); } /** * Create a new instance and configuration for a specified service and instance name. * @throws ProcessException in cases : * - if the service name is different from WMS, WMTS, WCS of WFS (no matter of case) * - if a configuration file already exist for this instance name. * - if error during file creation or marshalling phase. */ @Override protected void execute() throws ProcessException { final String serviceType = value(SERVICE_TYPE, inputParameters); final String identifier = value(IDENTIFIER, inputParameters); Object configuration = value(CONFIGURATION, inputParameters); final Details serviceMetadata = value(SERVICE_METADATA, inputParameters); try { configuration = serviceBusiness.create(serviceType.toLowerCase(), identifier, configuration, serviceMetadata); } catch (ConfigurationException ex) { throw new ProcessException(ex.getMessage(), this, ex); } getOrCreate(OUT_CONFIGURATION, outputParameters).setValue(configuration); } }