/* */ package org.geoserver.config.hibernate; import java.util.logging.Logger; import org.geoserver.config.ServiceInfo; import org.geoserver.config.impl.ServiceInfoImpl; import org.geoserver.hibernate.Hibernable; import org.geoserver.services.hibernate.beans.GMLInfoImplHb; import org.geoserver.wcs.WCSInfoImpl; import org.geoserver.wfs.GMLInfo; import org.geoserver.wfs.WFSInfoImpl; import org.geoserver.wfs.WFSInfo.Version; import org.geoserver.wms.WMSInfoImpl; import org.geotools.util.logging.Logging; /** * * @author ETj <etj at geo-solutions.it> */ public class HibServiceTranslator { private static final Logger LOGGER = Logging.getLogger(HibServiceTranslator.class); private HibGeoServerFactoryImpl factory; public HibServiceTranslator(HibGeoServerFactoryImpl factory) { this.factory = factory; } public ServiceInfoImpl translate(ServiceInfo service) { if (service instanceof WCSInfoImpl) return translateWCS((WCSInfoImpl) service); else if (service instanceof WFSInfoImpl) return translateWFS((WFSInfoImpl) service); else if (service instanceof WMSInfoImpl) return translateWMS((WMSInfoImpl) service); else if (service instanceof ServiceInfoImpl) return translateSI((ServiceInfoImpl) service); else if (service instanceof Hibernable) { LOGGER.warning("Will not translate a " + service.getClass().getName()); return (ServiceInfoImpl) service; } else { LOGGER.warning("Can't translate a " + service.getClass().getName()); throw new IllegalArgumentException("Can't translate a " + service.getClass().getName()); } } private void copySI(ServiceInfoImpl src, ServiceInfoImpl dest) { dest.setId(src.getId()); dest.setGeoServer(src.getGeoServer()); dest.setEnabled(src.isEnabled()); dest.setName(src.getName()); dest.setTitle(src.getTitle()); dest.setMaintainer(src.getMaintainer()); dest.setAbstract(src.getAbstract()); dest.setAccessConstraints(src.getAccessConstraints()); dest.setFees(src.getFees()); dest.setMetadataLink(src.getMetadataLink()); dest.setCiteCompliant(src.isCiteCompliant()); dest.setOnlineResource(src.getOnlineResource()); dest.setSchemaBaseURL(src.getSchemaBaseURL()); dest.setVerbose(src.isVerbose()); dest.setOutputStrategy(src.getOutputStrategy()); dest.setMetadata(src.getMetadata()); for (Object version : src.getVersions()) dest.getVersions().add(version); for (Object o : src.getKeywords()) dest.getKeywords().add(o); for (Object o : src.getExceptionFormats()) dest.getExceptionFormats().add(o); // ETJ TODO // for (Map.Entry entry : (Set<Map.Entry>)src.getMetadata().entrySet() ) // dest.getMetadata().put(entry.getKey(), entry.getValue()); // for (Map.Entry entry : (Set<Map.Entry>)src.getClientProperties().entrySet() ) // dest.getClientProperties().put(entry.getKey(), entry.getValue()); } private ServiceInfoImpl translateSI(ServiceInfoImpl serviceInfo) { ServiceInfoImpl ret = (ServiceInfoImpl) factory.createService(); copySI(serviceInfo, ret); return ret; } private ServiceInfoImpl translateWCS(WCSInfoImpl wcs) { WCSInfoImpl ret = new WCSInfoImpl(); copySI(wcs, ret); ret.setGMLPrefixing(wcs.isGMLPrefixing()); return ret; } private ServiceInfoImpl translateWFS(WFSInfoImpl wfs) { WFSInfoImpl ret = new WFSInfoImpl(); copySI(wfs, ret); ret.setFeatureBounding(wfs.isFeatureBounding()); ret.setMaxFeatures(wfs.getMaxFeatures()); ret.setServiceLevel(wfs.getServiceLevel()); for (Version version : wfs.getGML().keySet()) { GMLInfo info = wfs.getGML().get(version); GMLInfoImplHb infohb = translateGMLInfo(info); ret.getGML().put(version, infohb); } return ret; } private GMLInfoImplHb translateGMLInfo(GMLInfo info) { GMLInfoImplHb ret = new GMLInfoImplHb(); ret.setSrsNameStyle(info.getSrsNameStyle()); return ret; } private ServiceInfoImpl translateWMS(WMSInfoImpl wms) { WMSInfoImpl ret = new WMSInfoImpl(); copySI(wms, ret); ret.setMaxRequestMemory(wms.getMaxRequestMemory()); ret.setWatermark(wms.getWatermark()); ret.setInterpolation(wms.getInterpolation()); for (String srs : wms.getSRS()) { ret.getSRS().add(srs); } ret.setMaxBuffer(wms.getMaxBuffer()); ret.setMaxRenderingTime(wms.getMaxRenderingTime()); ret.setMaxRenderingErrors(wms.getMaxRenderingErrors()); return ret; } // private WatermarkInfoImplHb translate(WatermarkInfo watermark) { // if (watermark == null) // return null; // // WatermarkInfoImplHb ret = new WatermarkInfoImplHb(); // // ret.setId(watermark.get); // ret.setEnabled(watermark.isEnabled()); // ret.setPosition(watermark.getPosition()); // ret.setTransparency(watermark.getTransparency()); // ret.setURL(watermark.getURL()); // // return ret; // } }