AsyncInvokeManagerBean.java :  » ERP-CRM-Financial » JFire-1.0.1 » org » nightlabs » jfire » asyncinvoke » Java Open Source

Java Open Source » ERP CRM Financial » JFire 1.0.1 
JFire 1.0.1 » org » nightlabs » jfire » asyncinvoke » AsyncInvokeManagerBean.java
package org.nightlabs.jfire.asyncinvoke;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.jdo.PersistenceManager;

import org.nightlabs.jdo.NLJDOHelper;
import org.nightlabs.jfire.asyncinvoke.id.AsyncInvokeProblemID;
import org.nightlabs.jfire.base.BaseSessionBeanImpl;

/**
 * @ejb.bean name="jfire/ejb/JFireBaseBean/AsyncInvokeManager"
 *           jndi-name="jfire/ejb/JFireBaseBean/AsyncInvokeManager"
 *           type="Stateless"
 *           transaction-type="Container"
 *
 * @ejb.util generate="physical"
 * @ejb.transaction type="Required"
 */
@TransactionAttribute(TransactionAttributeType.REQUIRED)
@TransactionManagement(TransactionManagementType.CONTAINER)
@Stateless
public class AsyncInvokeManagerBean
extends BaseSessionBeanImpl
implements AsyncInvokeManagerRemote
{
  //  private static final Logger logger = Logger.getLogger(AsyncInvokeManagerBean.class);
  private static final long serialVersionUID = 1L;

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.asyncinvoke.AsyncInvokeManagerRemote#getAsyncInvokeProblemIDs()
   */
  @RolesAllowed("org.nightlabs.jfire.asyncinvoke.administrateAsyncInvokes")
  @SuppressWarnings("unchecked")
  @Override
  public Set<AsyncInvokeProblemID> getAsyncInvokeProblemIDs() {
    PersistenceManager pm = createPersistenceManager();
    try {
      javax.jdo.Query q = pm.newQuery(AsyncInvokeProblem.class);
      q.setResult("JDOHelper.getObjectId(this)");
      return new HashSet<AsyncInvokeProblemID>((Collection<? extends AsyncInvokeProblemID>) q.execute());
    } finally {
      pm.close();
    }
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.asyncinvoke.AsyncInvokeManagerRemote#getAsyncInvokeProblems(java.util.Collection, java.lang.String[], int)
   */
  @RolesAllowed("org.nightlabs.jfire.asyncinvoke.administrateAsyncInvokes")
  @Override
  public List<AsyncInvokeProblem> getAsyncInvokeProblems(Collection<AsyncInvokeProblemID> asyncInvokeProblemIDs, String[] fetchGroups, int maxFetchDepth) {
    PersistenceManager pm = createPersistenceManager();
    try {
      return NLJDOHelper.getDetachedObjectList(pm, asyncInvokeProblemIDs, AsyncInvokeProblem.class, fetchGroups, maxFetchDepth);
    } finally {
      pm.close();
    }
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.asyncinvoke.AsyncInvokeManagerRemote#deleteAsyncInvokeProblems(java.util.Collection)
   */
  @TransactionAttribute(TransactionAttributeType.REQUIRED)
  @RolesAllowed("org.nightlabs.jfire.asyncinvoke.administrateAsyncInvokes")
  @Override
  public void deleteAsyncInvokeProblems(Collection<AsyncInvokeProblemID> asyncInvokeProblemIDs) {
    PersistenceManager pm = createPersistenceManager();
    try {
      Set<AsyncInvokeProblem> problems = NLJDOHelper.getObjectSet(pm, asyncInvokeProblemIDs, AsyncInvokeProblem.class);
      for (Iterator<AsyncInvokeProblem> it = problems.iterator(); it.hasNext();) {
        AsyncInvokeProblem problem = it.next();
        if (!problem.isUndeliverable())
          it.remove();
      }

      pm.deletePersistentAll(problems);
    } finally {
      pm.close();
    }
  }

  /* (non-Javadoc)
   * @see org.nightlabs.jfire.asyncinvoke.AsyncInvokeManagerRemote#retryAsyncInvokeProblems(java.util.Collection)
   */
  @TransactionAttribute(TransactionAttributeType.REQUIRED)
  @RolesAllowed("org.nightlabs.jfire.asyncinvoke.administrateAsyncInvokes")
  @Override
  public void retryAsyncInvokeProblems(Collection<AsyncInvokeProblemID> asyncInvokeProblemIDs) throws AsyncInvokeEnqueueException
  {
    PersistenceManager pm = createPersistenceManager();
    try {
      Set<AsyncInvokeProblem> problems = NLJDOHelper.getObjectSet(pm, asyncInvokeProblemIDs, AsyncInvokeProblem.class);
      for (Iterator<AsyncInvokeProblem> it = problems.iterator(); it.hasNext();) {
        AsyncInvokeProblem problem = it.next();
        if (problem.isUndeliverable()) {
          problem.setUndeliverable(false);
          AsyncInvoke.enqueue(AsyncInvoke.QUEUE_INVOCATION, (AsyncInvokeEnvelope) problem.getAsyncInvokeEnvelope(), true);
        }
      }
    } finally {
      pm.close();
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.