Package org.infoglue.cms.controllers.kernel.impl.simple

Source Code of org.infoglue.cms.controllers.kernel.impl.simple.SubscriptionController

/* ===============================================================================
*
* Part of the InfoGlue Content Management Platform (www.infoglue.org)
*
* ===============================================================================
*
*  Copyright (C)
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2, as published by the
* Free Software Foundation. See the file LICENSE.html for more information.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY, including the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along with
* this program; if not, write to the Free Software Foundation, Inc. / 59 Temple
* Place, Suite 330 / Boston, MA 02111-1307 / USA.
*
* ===============================================================================
*/

package org.infoglue.cms.controllers.kernel.impl.simple;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.log4j.Logger;
import org.exolab.castor.jdo.Database;
import org.exolab.castor.jdo.OQLQuery;
import org.exolab.castor.jdo.QueryResults;
import org.infoglue.cms.entities.kernel.BaseEntityVO;
import org.infoglue.cms.entities.management.Subscription;
import org.infoglue.cms.entities.management.SubscriptionFilterVO;
import org.infoglue.cms.entities.management.SubscriptionVO;
import org.infoglue.cms.entities.management.impl.simple.SubscriptionFilterImpl;
import org.infoglue.cms.entities.management.impl.simple.SubscriptionImpl;
import org.infoglue.cms.exception.Bug;
import org.infoglue.cms.exception.ConstraintException;
import org.infoglue.cms.exception.SystemException;

public class SubscriptionController extends BaseController
{
    private final static Logger logger = Logger.getLogger(SubscriptionController.class.getName());

  /**
   * Factory method
   */

  public static SubscriptionController getController()
  {
    return new SubscriptionController();
  }
 
    public SubscriptionVO getSubscriptionVOWithId(Integer subscriptionId) throws SystemException, Bug
    {
    return (SubscriptionVO) getVOWithId(SubscriptionImpl.class, subscriptionId);
    }

    public Subscription getSubscriptionWithId(Integer subscriptionId, Database db) throws SystemException, Bug
    {
    return (Subscription) getObjectWithId(SubscriptionImpl.class, subscriptionId, db);
    }

    public List getSubscriptionVOList() throws SystemException, Bug
    {
    List subscriptionVOList = getAllVOObjects(SubscriptionImpl.class, "subscriptionId");

    return subscriptionVOList;
    }

    public List getSubscriptionVOList(Database db) throws SystemException, Bug
    {
    List subscriptionVOList = getAllVOObjects(SubscriptionImpl.class, "subscriptionId", db);

    return subscriptionVOList;
    }

    public SubscriptionVO create(SubscriptionVO subscriptionVO) throws ConstraintException, SystemException
    {
        Subscription subscription = new SubscriptionImpl();
        subscription.setValueObject(subscriptionVO);
        subscription = (Subscription) createEntity(subscription);
        return subscription.getValueObject();
    }

    public SubscriptionVO create(SubscriptionVO subscriptionVO,List<SubscriptionFilterVO> subscriptionFilterVOList) throws ConstraintException, SystemException
    {
      SubscriptionVO newSubscriptionVO = null;
     
      Database db = CastorDatabaseService.getDatabase();
   
    try
    {
      beginTransaction(db);
     
          newSubscriptionVO = create(subscriptionVO, subscriptionFilterVOList, db).getValueObject();
         
          commitTransaction(db);
    }
    catch (Exception e)   
    {
      e.printStackTrace();
        logger.warn("An error occurred so we should not complete the transaction:" + e);
        rollbackTransaction(db);
    }

    return newSubscriptionVO;
    }

    public Subscription create(SubscriptionVO subscriptionVO,List<SubscriptionFilterVO> subscriptionFilterVOList, Database db) throws ConstraintException, SystemException, Exception
    {
      Subscription subscription = new SubscriptionImpl();
    subscription.setValueObject(subscriptionVO);
        subscription = (Subscription) createEntity(subscription, db);

    Iterator<SubscriptionFilterVO> subscriptionFilterVOListIterator = subscriptionFilterVOList.iterator();
    while(subscriptionFilterVOListIterator.hasNext())
    {
      SubscriptionFilterVO subscriptionFilterVO = subscriptionFilterVOListIterator.next();
        SubscriptionFilterImpl subscriptionFilter = new SubscriptionFilterImpl();
        subscriptionFilter.setValueObject(subscriptionFilterVO);
        subscriptionFilter.setSubscription(subscription);
        subscription.getSubscriptionFilters().add(subscriptionFilter);                 
    }

    return subscription;
    }

    public SubscriptionVO update(SubscriptionVO subscriptionVO, List<SubscriptionFilterVO> subscriptionFilterVOList) throws ConstraintException, SystemException
    {
      Database db = CastorDatabaseService.getDatabase();
   
    try
    {
      beginTransaction(db);
     
      Subscription subscription = getSubscriptionWithId(subscriptionVO.getId(), db);
      //db.remove(subscription);
          subscription.setValueObject(subscriptionVO);
      subscription.setSubscriptionFilters(new ArrayList());
     
      Iterator<SubscriptionFilterVO> subscriptionFilterVOListIterator = subscriptionFilterVOList.iterator();
      while(subscriptionFilterVOListIterator.hasNext())
      {
        SubscriptionFilterVO subscriptionFilterVO = subscriptionFilterVOListIterator.next();
          SubscriptionFilterImpl subscriptionFilter = new SubscriptionFilterImpl();
          subscriptionFilter.setValueObject(subscriptionFilterVO);
          subscriptionFilter.setSubscription(subscription);
          logger.info("Adding subscriptionFilter:" + subscriptionFilter);
          subscription.getSubscriptionFilters().add(subscriptionFilter);                 
      }

      subscriptionVO = subscription.getValueObject();
     
          commitTransaction(db);
    }
    catch (Exception e)   
    {
      e.printStackTrace();
        logger.warn("An error occurred so we should not complete the transaction:" + e);
        rollbackTransaction(db);
    }

    return subscriptionVO;
    }

    public void addFilter(Integer subscriptionId, SubscriptionFilterVO subscriptionFilterVO) throws ConstraintException, SystemException
    {
    Database db = CastorDatabaseService.getDatabase();
   
    try
    {
      beginTransaction(db);
     
        Subscription subscription = getSubscriptionWithId(subscriptionId, db);
        SubscriptionFilterImpl subscriptionFilter = new SubscriptionFilterImpl();
        subscriptionFilter.setValueObject(subscriptionFilterVO);
        subscription.getSubscriptionFilters().add(subscriptionFilter);
       
          commitTransaction(db);
    }
    catch (Exception e)   
    {
        logger.warn("An error occurred so we should not complete the transaction:" + e);
        rollbackTransaction(db);
    }
    }

    public void delete(SubscriptionVO subscriptionVO) throws ConstraintException, SystemException
    {
      deleteEntity(SubscriptionImpl.class, subscriptionVO.getSubscriptionId());
    }

    public void delete(Integer subscriptionId) throws ConstraintException, SystemException
    {
      deleteEntity(SubscriptionImpl.class, subscriptionId);
    }

    public SubscriptionVO update(SubscriptionVO subscriptionVO) throws ConstraintException, SystemException
    {
      return (SubscriptionVO) updateEntity(SubscriptionImpl.class, subscriptionVO);
    }

   
  /**
   * Gets matching subscriptions
   */
 
  public List<SubscriptionVO> getSubscriptionVOList(Integer interceptionPointId, String name, Boolean isGlobal, String entityName, String entityId, String userName, String userEmail) throws SystemException, Exception
  {
    List<SubscriptionVO> subscriptionVOList = new ArrayList<SubscriptionVO>();
   
    Database db = CastorDatabaseService.getDatabase();
   
    try
    {
      beginTransaction(db);
     
      List<Subscription> subscriptionList = getSubscriptionList(interceptionPointId, name, isGlobal, entityName, entityId, userName, userEmail, db, true);
      subscriptionVOList = toVOList(subscriptionList);
     
          commitTransaction(db);
    }
    catch (Exception e)   
    {
        logger.warn("An error occurred so we should not complete the transaction:" + e);
        rollbackTransaction(db);
    }
   
    return subscriptionVOList;
  }

  /**
   * Gets matching subscriptions
   */
 
  public List<SubscriptionVO> getSubscriptionVOList(Integer interceptionPointId, String name, Boolean isGlobal, String entityName, String entityId, String userName, String userEmail, Database db, boolean readOnly) throws SystemException, Exception
  {
    List<SubscriptionVO> subscriptionVOList = new ArrayList<SubscriptionVO>();
   
    List<Subscription> subscriptionList = getSubscriptionList(interceptionPointId, name, isGlobal, entityName, entityId, userName, userEmail, db, true);
    subscriptionVOList = toVOList(subscriptionList);
   
    return subscriptionVOList;
  }


  /**
   * Gets matching subscriptions
   */
 
  public List<Subscription> getSubscriptionList(Integer interceptionPointId, String name, Boolean isGlobal, String entityName, String entityId, String userName, String userEmail, Database db, boolean readOnly) throws SystemException, Exception
  {
      List<Subscription> subscriptionList = new ArrayList<Subscription>();
     
      StringBuffer sql = new StringBuffer("SELECT s FROM org.infoglue.cms.entities.management.impl.simple.SubscriptionImpl s WHERE ");
      List bindings = new ArrayList();
      int bindingIndex = 1;
     
      if(interceptionPointId != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.interceptionPointId = $" + bindingIndex);
        bindings.add(interceptionPointId);
        bindingIndex++;
      }

      if(name != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.name = $" + bindingIndex);
        bindings.add(name);
        bindingIndex++;
      }

      if(isGlobal != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.isGlobal = $" + bindingIndex);
        bindings.add(isGlobal);
        bindingIndex++;
      }

      if(entityName != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.entityName = $" + bindingIndex);
        bindings.add(entityName);
        bindingIndex++;
      }

      if(entityId != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.entityId = $" + bindingIndex);
        bindings.add(entityId);
        bindingIndex++;
      }

      if(userName != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.userName = $" + bindingIndex);
        bindings.add(userName);
        bindingIndex++;
      }

      if(userEmail != null)
      {
        if(bindingIndex > 1)
          sql.append(" AND ");
        sql.append("s.userEmail = $" + bindingIndex);
        bindings.add(userEmail);
        bindingIndex++;
      }

      sql.append(" ORDER BY s.subscriptionId");
     
    OQLQuery oql = db.getOQLQuery(sql.toString());
    Iterator bindingsIterator = bindings.iterator();
    while(bindingsIterator.hasNext())
      oql.bind(bindingsIterator.next());
   
    QueryResults results = null;
    if(!readOnly)
      results = oql.execute();
    else
      results = oql.execute(Database.READONLY);
     
    while (results.hasMore())
        {
            Subscription subscription = (Subscription)results.next();
            subscriptionList.add(subscription);
        }           
   
    results.close();
    oql.close();

    return subscriptionList;   
  }
 
 

  public BaseEntityVO getNewVO()
  {
    return null; //new SubscriptionVO();
  }
 
}
 
TOP

Related Classes of org.infoglue.cms.controllers.kernel.impl.simple.SubscriptionController

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.