@Override
    public Void call() throws PortalException {
      StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

      if (stagedModelRepository == null) {
        return null;
      }

      T stagedModel = stagedModelRepository.fetchStagedModelByUuidAndGroupId(_uuid, _groupId);

      if (stagedModel == null) {
        return null;
      }

      Date endDate = null;

      if (_dateRange != null) {
        endDate = _dateRange.getEndDate();
      }

      ExportImportDateUtil.updateLastPublishDate(
          (StagedGroupedModel) stagedModel, _dateRange, endDate);

      stagedModelRepository.saveStagedModel(stagedModel);

      return null;
    }
  @Override
  public T fetchStagedModelByUuidAndGroupId(String uuid, long groupId) {
    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      return super.fetchStagedModelByUuidAndGroupId(uuid, groupId);
    }

    return stagedModelRepository.fetchStagedModelByUuidAndGroupId(uuid, groupId);
  }
  @Override
  public T fetchMissingReference(String uuid, long groupId) {
    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      return super.fetchMissingReference(uuid, groupId);
    }

    return stagedModelRepository.fetchMissingReference(uuid, groupId);
  }
  @Override
  public void deleteStagedModel(T stagedModel) throws PortalException {
    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      return;
    }

    stagedModelRepository.deleteStagedModel(stagedModel);
  }
  @Override
  public List<T> fetchStagedModelsByUuidAndCompanyId(String uuid, long companyId) {

    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      return Collections.<T>emptyList();
    }

    return stagedModelRepository.fetchStagedModelsByUuidAndCompanyId(uuid, companyId);
  }
  @Override
  public void deleteStagedModel(String uuid, long groupId, String className, String extraData)
      throws PortalException {

    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      return;
    }

    stagedModelRepository.deleteStagedModel(uuid, groupId, className, extraData);
  }
  @Override
  public void restoreStagedModel(PortletDataContext portletDataContext, T stagedModel)
      throws PortletDataException {

    StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

    if (stagedModelRepository == null) {
      super.restoreStagedModel(portletDataContext, stagedModel);

      return;
    }

    stagedModelRepository.restoreStagedModel(portletDataContext, stagedModel);
  }
    @Override
    public Void call() throws PortalException {
      StagedModelRepository<T> stagedModelRepository = getStagedModelRepository();

      if (stagedModelRepository == null) {
        return null;
      }

      T stagedModel = stagedModelRepository.fetchStagedModelByUuidAndGroupId(_uuid, _groupId);

      if (stagedModel == null) {
        return null;
      }

      Date endDate = null;

      if (_dateRange != null) {
        endDate = _dateRange.getEndDate();
      }

      ExportImportDateUtil.updateLastPublishDate(
          (StagedGroupedModel) stagedModel, _dateRange, endDate);

      ServiceContext serviceContext = new ServiceContext();

      serviceContext.setModifiedDate(stagedModel.getModifiedDate());

      ServiceContextThreadLocal.pushServiceContext(serviceContext);

      try {
        stagedModelRepository.saveStagedModel(stagedModel);
      } finally {
        ServiceContextThreadLocal.popServiceContext();
      }

      return null;
    }