/**
*
*/
package org.geoserver.hibernate.dao;
import java.util.Collection;
import java.util.List;
import javax.persistence.FlushModeType;
import javax.persistence.Query;
import org.geoserver.config.GeoServerInfo;
import org.geoserver.config.LoggingInfo;
import org.geoserver.config.ServiceInfo;
import org.geoserver.config.hibernate.beans.GeoServerInfoImplHb;
import org.geoserver.config.hibernate.beans.LoggingInfoImplHb;
import org.geoserver.hibernate.HibMapper;
import org.geotools.renderer.i18n.Logging;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
/**
*/
@Repository
@Transactional
public class ServiceDAOImpl extends AbstractDAOImpl implements ServiceDAO {
/**
* Constructor for HibernateDAO.
*/
public ServiceDAOImpl() {
super();
}
/**
*
*/
public GeoServerInfo getGeoServer() {
Query query = buildQuery("from ", GeoServerInfoImplHb.class);
return (GeoServerInfo) first(query, true);
}
/**
*
*/
public Collection<? extends ServiceInfo> getServices(Class<?> clazz) {
Class clazz2 = HibMapper.mapHibernableClass(clazz);
Query query = buildQuery("from ", clazz2);
return (Collection<? extends ServiceInfo>) query.getResultList();
}
/**
*
*/
public <T extends ServiceInfo> T getService(String id, Class<T> clazz) {
Class clazz2 = HibMapper.mapHibernableClass(clazz);
Query query = buildQuery("from ", clazz2, " where id = ", param(id));
return (T) first(query);
}
/**
*
*/
public <T extends ServiceInfo> T getServiceByName(String name, Class<T> clazz) {
Query query = buildQuery("from ", clazz, " where name = ", param(name));
List result = query.getResultList();
if (result.isEmpty()) {
return null;
} else {
T service = (T) result.get(0);
return service; // todo: maybe we should deproxy it
}
}
public void save(ServiceInfo entity) {
super.save(entity);
entityManager.flush();// TODO useless??
}
public void delete(ServiceInfo entity) {
super.delete(entity);
}
public void update(ServiceInfo entity) {
super.merge(entity);
}
public GeoServerInfo save(GeoServerInfo entity) {
super.save(entity);
entityManager.flush();// TODO useless??
return entityManager.find(GeoServerInfoImplHb.class, entity.getId());// TODO useless??
}
public GeoServerInfo update(GeoServerInfo entity) {
GeoServerInfo ret = entityManager.merge(entity);
entityManager.flush();
entityManager.refresh(ret);
return ret;
}
public void delete(GeoServerInfo entity) {
super.delete(entity);
}
public void setLogging(LoggingInfo entity) {
LoggingInfoImplHb old = (LoggingInfoImplHb) getLogging();
if (old == null) {
entityManager.persist(entity);
} else {
old.copyFrom(entity);
entityManager.merge(old);
}
}
public LoggingInfo getLogging() {
Query query = buildQuery("from ", LoggingInfoImplHb.class);
return (LoggingInfo) first(query);
}
}