/** * Copyright (C) 2011 JTalks.org Team * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ package org.jtalks.jcommune.model.dao.hibernate; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.jtalks.common.model.dao.hibernate.GenericDao; import org.jtalks.common.service.exceptions.NotFoundException; import org.jtalks.jcommune.model.dao.PluginConfigurationDao; import org.jtalks.jcommune.model.entity.PluginConfiguration; import org.jtalks.jcommune.model.entity.PluginProperty; import java.util.List; /** * * @author Anuar_Nurmakanov */ public class PluginConfigurationHibernateDao extends GenericDao<PluginConfiguration> implements PluginConfigurationDao { /** * {@inheritDoc} */ public PluginConfigurationHibernateDao(SessionFactory sessionFactory) { super(sessionFactory, PluginConfiguration.class); } /** * {@inheritDoc} */ @Override public PluginConfiguration get(String name) throws NotFoundException { Query query = session().getNamedQuery("getPluginConfiguration"); PluginConfiguration configuration = (PluginConfiguration) query.setParameter("name", name).uniqueResult(); if (configuration == null){ throw new NotFoundException(name + " plugin not found in the database"); } else { return configuration; } } /** * {@inheritDoc} */ @Override public void saveOrUpdate(PluginConfiguration entity) { for (PluginProperty property: entity.getProperties()) { property.setPluginConfiguration(entity); } super.saveOrUpdate(entity); } /** * {@inheritDoc} */ @Override public void updateProperties(List<PluginProperty> properties) { for (PluginProperty property: properties) { PluginProperty persistedProperty = (PluginProperty) session().load(property.getClass(), property.getId()); persistedProperty.setValue(property.getValue()); session().saveOrUpdate(persistedProperty); } session().flush(); } }