<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">/*
 * This program is free software; you can redistribute it and/or modify it under the 
 * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software 
 * Foundation.
 *
 * You should have received a copy of the GNU Lesser General Public License along with this 
 * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html 
 * or from the Free Software Foundation, Inc., 
 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * This program 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.
 *
 * Copyright 2008 - 2009 Pentaho Corporation.  All rights reserved.
*/
package org.pentaho.pac.server.common.config;

import org.hibernate.Session;
import org.hibernate.Transaction;
import org.pentaho.pac.server.common.HibernateSessionFactory;

public class PropertyLoader {

	private static PropertyLoader loader = new PropertyLoader();

	public static PropertyLoader getInstance() {
		return loader;
	}

	public &lt;E extends PacProperty&gt; PropertyCollection&lt;E&gt; getProperties(
			Class&lt;E&gt; module) {
		Session s = null;
		Transaction tx = null;

		try {
			s = HibernateSessionFactory.getSession("MGMT-SERVICES"); //$NON-NLS-1$
			tx = s.beginTransaction();
			@SuppressWarnings("unchecked")
			PropertyCollection&lt;E&gt; props = new PropertyCollection&lt;E&gt;(s
					.createCriteria(module).list());
			return props;
		} finally {
			if (s != null)
				s.disconnect();
			if (tx != null)
				tx.commit();
		}

	}

	public &lt;E extends PacProperty&gt; void persist(PropertyCollection&lt;E&gt; props) {
		Session s = null;
		Transaction tx = null;

		try {
			s = HibernateSessionFactory.getSession("MGMT-SERVICES"); //$NON-NLS-1$
			tx = s.beginTransaction();
			for (PacProperty prop : props) {
				s.saveOrUpdate(prop);
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {

			if (s != null)
				s.disconnect();
			if (tx != null)
				tx.commit();
		}
	}
}
</pre></body></html>