コード例 #1
0
  @Override
  public Void call() {
    ZimbraLog.clearContext();
    ZimbraLog.addMboxToContext(getMailboxId());
    ZimbraLog.datasource.debug("Running scheduled import for DataSource %s", getDataSourceId());
    Mailbox mbox = null;

    try {
      // Look up mailbox, account and data source
      mbox = MailboxManager.getInstance().getMailboxById(getMailboxId());
      Account account = mbox.getAccount();
      ZimbraLog.addAccountNameToContext(account.getName());
      Provisioning prov = Provisioning.getInstance();
      DataSource ds = prov.get(account, Key.DataSourceBy.id, getDataSourceId());
      if (ds != null) {
        ZimbraLog.addDataSourceNameToContext(ds.getName());
        if (!ds.isEnabled()) {
          ZimbraLog.datasource.info("DataSource is disabled.  Cancelling future tasks.");
          DataSourceManager.cancelTask(mbox, getDataSourceId());
          return null;
        }

        // Do the work
        DataSourceManager.importData(ds);
      } else {
        ZimbraLog.datasource.info(
            "DataSource %s was deleted.  Cancelling future tasks.", getDataSourceId());
        DataSourceManager.cancelTask(mbox, getDataSourceId());
      }
    } catch (ServiceException e) {
      ZimbraLog.datasource.warn("Scheduled DataSource import failed.", e);
      return null;
    }

    ZimbraLog.clearContext();
    return null;
  }