/*
 * Version: MPL 1.1/GPL 2.0/LGPL 2.1
 *
 * "The contents of this file are subject to the Mozilla Public License
 * Version 1.1 (the "License"); you may not use this file except in
 * compliance with the License. You may obtain a copy of the License at
 * http://www.mozilla.org/MPL/
 *
 * Software distributed under the License is distributed on an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific language governing rights and limitations under
 * the License.
 *
 * The Original Code is ICEfaces 1.5 open source software code, released
 * November 5, 2006. The Initial Developer of the Original Code is ICEsoft
 * Technologies Canada, Corp. Portions created by ICEsoft are Copyright (C)
 * 2004-2006 ICEsoft Technologies Canada, Corp. All Rights Reserved.
 *
 * Contributor(s): _____________________.
 *
 * Alternatively, the contents of this file may be used under the terms of
 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"
 * License), in which case the provisions of the LGPL License are
 * applicable instead of those above. If you wish to allow use of your
 * version of this file only under the terms of the LGPL License and not to
 * allow others to use your version of this file under the MPL, indicate
 * your decision by deleting the provisions above and replace them with
 * the notice and other provisions required by the LGPL License. If you do
 * not delete the provisions above, a recipient may use your version of
 * this file under either the MPL or the LGPL License."
 *
 */
package com.icesoft.icefaces.tutorial.crud.hibernate.util;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import com.icesoft.icefaces.tutorial.crud.hibernate.Course;
import com.icesoft.icefaces.tutorial.crud.hibernate.Student;

public class HibernateUtil {
	
    private static final SessionFactory sessionFactory = buildSessionFactory();

    static {
    	//DB Initalization.
        Session session = getSessionFactory().getCurrentSession();
        session.beginTransaction();
        
        session.save(new Student("Alfred","Barkley","123 Fake St."));
        session.save(new Student("Carl","Dodds","124 Fake St."));
        session.save(new Student("Eugene","Faulks","125 Fake St."));
        
        session.save(new Course(null,"ICE101","Introduction to ICEfaces"));
        session.save(new Course(null,"ICE201","Intermediate ICEfaces Techniques"));
        session.save(new Course(null,"ICE301","Advanced ICEfaces Techniques"));
        session.save(new Course(null,"AJAX101","AJAX Basics"));
        session.save(new Course(null,"JAVA101","Beginner Java"));
        session.save(new Course(null,"HIB101","Introduction to Hibernate"));
        session.save(new Course(null,"JSF201","Advanced JSF Techniques"));
        session.save(new Course(null,"SQL101","Beginner SQL Programming"));

        session.getTransaction().commit();
    }
    
    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
        	SessionFactory f = new Configuration().configure().buildSessionFactory();
            return f;
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }

}