protected boolean process(WorkflowTransactionPhase phase) throws WorkflowException {
    if (LOG.isLoggable(Level.FINER)) {
      LOG.entering(AutoRejectNewItemTransition.class.getName(), "process", new Object[] {phase});
    }
    boolean success = false;
    boolean processed = false;
    try {
      DBHelper.startTransaction();

      NewItemPlacementBean nipb =
          NewItemServicesUtils.getNewItemPlacementCommand()
              ._getActivePlacementByTransactionId(phase.getTransactionId());
      long offset = Long.parseLong(DEFAULT_MAX_LENGTH_DAYS_OPEN);
      if (nipb != null) {
        if (handlesRegMbr(nipb.getRegionMemberId())) {
          DataItemBean dib =
              NewItemServicesUtils.getExpireDaysByRegionAlias(
                  NewItemServicesUtils.getPlacementRegionMemberAliasById(nipb.getRegionMemberId()));
          if (dib != null) offset = Long.parseLong(dib.getValue());

          this.triggerWhenBeforeOffset = new Long((-1) * offset * 24 * 60 * 60 * 1000);

          processed = super.process(phase);

          if (processed) {
            updateNewItemData(nipb);
          }
        }
        success = true;
      } else
        throw new WorkflowException(
            "Unable to locate placement data for AutoRejectNewItemTransition call on Transaction_ID ["
                + phase.getTransactionId()
                + "].");
    } catch (WorkflowException we) {
      LOG.log(
          Level.SEVERE, "Error invoking AutoRejectNewItemTransition for New Item Workflow!", we);
      throw new WorkflowException(
          "Error invoking AutoRejectNewItemTransition for New Item Workflow!  " + we.getMessage());
    } catch (Throwable th) {
      LOG.log(
          Level.SEVERE,
          "Error invoking AutoRejectNewItemTransition for New Item Workflow for phase ["
              + phase.getId()
              + "]!",
          th);
    } finally {
      try {
        DBHelper.finalizeActiveTransaction(null, success);
      } catch (Throwable th) {
        LOG.log(Level.SEVERE, "Error finalizing transaction for AutoRejectNewItemTransition time!");
        th.printStackTrace();
      }
    }

    if (LOG.isLoggable(Level.FINER)) {
      LOG.exiting(AutoRejectNewItemTransition.class.getName(), "process");
    }
    return processed;
  }
  public Date getTriggerTimeForPhase(WorkflowTransactionPhase phase) throws ApplicationException {
    if (LOG.isLoggable(Level.FINER)) {
      LOG.entering(
          AutoRejectNewItemTransition.class.getName(),
          "#AutoReject: getTriggerTimeForPhase",
          new Object[] {phase});
    }

    NewItemPlacementBean nipb =
        NewItemServicesUtils.getNewItemPlacementCommand()
            ._getActivePlacementByTransactionId(phase.getTransactionId());
    if (nipb == null) {
      LOG.log(
          Level.SEVERE,
          "Error invoking AutoKillNewItemTransition timer for New Item Workflow on transaction ID: "
              + phase.getId());
      throw new ApplicationException(
          "Error invoking AutoKillNewItemTransition timer for New Item Workflow on transaction ID: "
              + phase.getId());
    }

    Calendar triggerDate = nipb.getReviewStartDate();

    triggerDate.set(Calendar.HOUR_OF_DAY, 0);
    triggerDate.set(Calendar.MINUTE, 0);
    triggerDate.set(Calendar.SECOND, 0);
    triggerDate.set(Calendar.MILLISECOND, 0);

    if (LOG.isLoggable(Level.FINER)) {
      LOG.exiting(
          AutoRejectNewItemTransition.class.getName(), "#AutoReject: getTriggerTimeForPhase");
    }
    return triggerDate.getTime();
  }
 protected void updateNewItemData(NewItemPlacementBean nipb) throws Throwable {
   NewItemBean nib =
       NewItemServicesUtils.getNewItemCommand().getActiveNewItemBean(nipb.getNewItemId());
   if (nib == null) {
     if (LOG.isLoggable(Level.FINER))
       LOG.log(
           Level.FINER, "New Item information for id [" + nipb.getNewItemId() + "] is missing!");
     throw new ApplicationException(
         "New Item information for id [" + nipb.getNewItemId() + "] is missing!");
   }
   nipb.setRejectReason(AUTO_REJECT_REASON);
   nipb.setAccepted(-1);
   nipb.setUpdatedBy("system");
   nipb.setUpdatedOn(new GregorianCalendar());
   //		NewItemServicesUtils.getNewItemPlacementCommand()._storePlacement(nipb);
   //		NewItemServicesUtils.getNewItemPlacementCommand()._processSlotting(nipb, nib);
 }
 protected boolean handlesRegMbr(int regMbrId) throws ApplicationException {
   return regMbrId != NewItemServicesUtils.getCPRId();
 }