Package org.infoglue.cms.util.workflow.hibernate

Source Code of org.infoglue.cms.util.workflow.hibernate.InfoglueHibernateWorkflowStore

package org.infoglue.cms.util.workflow.hibernate;

import java.util.HashMap;
import java.util.Map;

import net.sf.hibernate.HibernateException;
import net.sf.hibernate.SessionFactory;
import net.sf.hibernate.cfg.Configuration;

import org.apache.log4j.Logger;
import org.infoglue.deliver.util.CacheController;

import com.opensymphony.module.propertyset.PropertySet;
import com.opensymphony.module.propertyset.PropertySetManager;
import com.opensymphony.module.propertyset.cached.CachingPropertySet;
import com.opensymphony.workflow.StoreException;
import com.opensymphony.workflow.spi.hibernate.HibernateWorkflowStore;


/**
* Quickfix
*/
public class InfoglueHibernateWorkflowStore extends HibernateWorkflowStore
{
  private final static Logger logger = Logger.getLogger(InfoglueHibernateWorkflowStore.class.getName());

  /**
   *
   */
  private SessionFactory sessionFactory;
 
  /**
   *
   */
    public InfoglueHibernateWorkflowStore() {}

  /**
   *
   */
    public InfoglueHibernateWorkflowStore(SessionFactory sessionFactory) throws StoreException {
    super(sessionFactory);
    this.sessionFactory = sessionFactory;
    }

   

  /**
   *
   */
    public void init(Map props) throws StoreException
    {
      sessionFactory = (SessionFactory) props.get("sessionFactory");
    super.init(props);
    }

  /**
   *
   */
    public PropertySet getPropertySet(long entryId) {
       
      String key = "psCache_" + entryId;
      PropertySet ps = (PropertySet)CacheController.getCachedObject("propertySetCache", key);
     
      if(ps == null)
      {
        try
        {
          HashMap args = new HashMap();
            args.put("entityName", "OSWorkflowEntry");
            args.put("entityId", new Long(entryId));
   
        InfoglueDefaultHibernateConfigurationProvider configurationProvider = new InfoglueDefaultHibernateConfigurationProvider();
            configurationProvider.setSessionFactory(sessionFactory);
   
            args.put("configurationProvider", configurationProvider);
           
        ps = new CachingPropertySet();
       
        Map args2 = new HashMap();
        args2.put("PropertySet", PropertySetManager.getInstance("hibernate", args));
        args2.put("bulkload", new Boolean(true));
       
        ps.init(new HashMap(), args2);
        CacheController.cacheObject("propertySetCache", key, ps);
          //logger.info("Caching propertySet for entry: " + entryId + ":" + ps);
       
            ps = PropertySetManager.getInstance("hibernate", args);
        }
        catch(Exception e)
        {
          e.printStackTrace();
         
          try
          {
          logger.error("\n\nRestoring the session factory....");
            //sessionFactory.close();
          sessionFactory = new Configuration().configure().buildSessionFactory();
         
          InfoglueDefaultHibernateConfigurationProvider configurationProvider = new InfoglueDefaultHibernateConfigurationProvider();
              configurationProvider.setSessionFactory(sessionFactory);
     
              Map args = new HashMap();
              args.put("configurationProvider", configurationProvider);
             
          ps = new CachingPropertySet();
         
          Map args2 = new HashMap();
          args2.put("PropertySet", PropertySetManager.getInstance("hibernate", args));
          args2.put("bulkload", new Boolean(true));
         
          ps.init(new HashMap(), args2);
          }
        catch (HibernateException he)
        {
          he.printStackTrace();
        }
        }
      }
     
        return ps;
    }
    
}
TOP

Related Classes of org.infoglue.cms.util.workflow.hibernate.InfoglueHibernateWorkflowStore

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.