/*
*/
package org.geoserver.hibernate;
import org.apache.log4j.Logger;
import org.geoserver.catalog.AttributeTypeInfo;
import org.geoserver.catalog.AttributionInfo;
import org.geoserver.catalog.CoverageDimensionInfo;
import org.geoserver.catalog.CoverageInfo;
import org.geoserver.catalog.CoverageStoreInfo;
import org.geoserver.catalog.DataStoreInfo;
import org.geoserver.catalog.FeatureTypeInfo;
import org.geoserver.catalog.LayerGroupInfo;
import org.geoserver.catalog.LayerInfo;
import org.geoserver.catalog.NamespaceInfo;
import org.geoserver.catalog.ResourceInfo;
import org.geoserver.catalog.StoreInfo;
import org.geoserver.catalog.StyleInfo;
import org.geoserver.catalog.WorkspaceInfo;
import org.geoserver.catalog.hibernate.beans.LayerGroupInfoImplHb;
import org.geoserver.catalog.hibernate.beans.LayerInfoImplHb;
import org.geoserver.catalog.impl.AttributeTypeInfoImpl;
import org.geoserver.catalog.impl.AttributionInfoImpl;
import org.geoserver.catalog.impl.CoverageDimensionImpl;
import org.geoserver.catalog.impl.CoverageInfoImpl;
import org.geoserver.catalog.impl.CoverageStoreInfoImpl;
import org.geoserver.catalog.impl.DataStoreInfoImpl;
import org.geoserver.catalog.impl.FeatureTypeInfoImpl;
import org.geoserver.catalog.impl.MapInfoImpl;
import org.geoserver.catalog.impl.NamespaceInfoImpl;
import org.geoserver.catalog.impl.ResourceInfoImpl;
import org.geoserver.catalog.impl.StoreInfoImpl;
import org.geoserver.catalog.impl.StyleInfoImpl;
import org.geoserver.catalog.impl.WorkspaceInfoImpl;
import org.geoserver.config.ContactInfo;
import org.geoserver.config.LoggingInfo;
import org.geoserver.config.ServiceInfo;
import org.geoserver.config.hibernate.beans.ContactInfoImplHb;
import org.geoserver.config.hibernate.beans.LoggingInfoImplHb;
import org.geoserver.config.impl.ServiceInfoImpl;
import org.geoserver.wcs.WCSInfo;
import org.geoserver.wcs.WCSInfoImpl;
import org.geoserver.wfs.WFSInfo;
import org.geoserver.wfs.WFSInfoImpl;
import org.geoserver.wms.WMSInfo;
import org.geoserver.wms.WMSInfoImpl;
/**
*
* @author ETj <etj at geo-solutions.it>
*/
public class HibMapper {
private final static Logger LOGGER = Logger.getLogger(HibMapper.class);
public static Class<?> mapHibernableClass(Class<?> clazz) {
if (Hibernable.class.isAssignableFrom(clazz))
return clazz;
// CATALOG STUFF
else if (CoverageStoreInfo.class.isAssignableFrom(clazz))
return CoverageStoreInfoImpl.class;
else if (DataStoreInfo.class.isAssignableFrom(clazz))
return DataStoreInfoImpl.class;
else if (StoreInfo.class.isAssignableFrom(clazz)) // mind the order!
return StoreInfoImpl.class;
else if (CoverageInfo.class.isAssignableFrom(clazz))
return CoverageInfoImpl.class;
else if (FeatureTypeInfo.class.isAssignableFrom(clazz))
return FeatureTypeInfoImpl.class;
else if (ResourceInfo.class.isAssignableFrom(clazz)) // mind the order!
return ResourceInfoImpl.class;
else if (LayerInfo.class.isAssignableFrom(clazz))
return LayerInfoImplHb.class;
else if (LayerGroupInfo.class.isAssignableFrom(clazz))
return LayerGroupInfoImplHb.class;
else if (NamespaceInfo.class.isAssignableFrom(clazz))
return NamespaceInfoImpl.class;
else if (WorkspaceInfo.class.isAssignableFrom(clazz))
return WorkspaceInfoImpl.class;
else if (CoverageDimensionInfo.class.isAssignableFrom(clazz))
return CoverageDimensionImpl.class;
else if (AttributeTypeInfo.class.isAssignableFrom(clazz))
return AttributeTypeInfoImpl.class;
else if (AttributionInfo.class.isAssignableFrom(clazz))
return AttributionInfoImpl.class;
else if (StyleInfo.class.isAssignableFrom(clazz))
return StyleInfoImpl.class;
// SERVICE STUFF
else if (WMSInfo.class.isAssignableFrom(clazz))
return WMSInfoImpl.class;
else if (WCSInfo.class.isAssignableFrom(clazz))
return WCSInfoImpl.class;
else if (WFSInfo.class.isAssignableFrom(clazz))
return WFSInfoImpl.class;
else if (ServiceInfo.class.isAssignableFrom(clazz)) // mind the order!
return ServiceInfoImpl.class; // this is not declared as hibernable :(
else if (LoggingInfo.class.isAssignableFrom(clazz))
return LoggingInfoImplHb.class;
else if (ContactInfo.class.isAssignableFrom(clazz))
return ContactInfoImplHb.class;
else {
// these classes are directly persisted since they already are hibernate-friendly
if (!MapInfoImpl.class.equals(clazz)) {
LOGGER.warn("Cannot map class " + clazz.getName()
+ ". Trying to force it into hibernate...");
}
return clazz;
// throw new IllegalArgumentException("Cannot map class " + clazz.getName());
}
}
}