Ejemplo n.º 1
0
  /** Returns the list of ids the user is trying to remote publish. */
  private List<String> getIdsToPush(
      List<String> assetIds, String _contentFilterDate, SimpleDateFormat dateFormat)
      throws ParseException, DotDataException {

    List<String> ids = new ArrayList<String>();

    for (String _assetId : assetIds) {

      if (_assetId != null && !_assetId.trim().isEmpty()) {

        if (ids.contains(_assetId)) {
          continue;
        }

        // check for the categories
        if (_assetId.contains("user_") || _assetId.contains("users_")) { // Trying to publish users
          // If we are trying to push users a filter date must be available
          if (_assetId.contains("users_")) {
            Date filteringDate = dateFormat.parse(_contentFilterDate);
            // Get users where createdate >= ?
            List<String> usersIds =
                APILocator.getUserAPI().getUsersIdsByCreationDate(filteringDate, 0, -1);
            if (usersIds != null) {
              for (String id : usersIds) {
                ids.add("user_" + id);
              }
            }
          } else {
            ids.add(_assetId);
          }
        } else if (_assetId.equals("CAT")) {
          ids.add(_assetId);
        } else if (_assetId.contains(".jar")) { // Check for OSGI jar bundles
          ids.add(_assetId);
        } else {
          // if the asset is a folder put the inode instead of the identifier
          try {
            Folder folder = null;
            try {
              folder = APILocator.getFolderAPI().find(_assetId, getUser(), false);
            } catch (DotSecurityException e) {
              Logger.error(
                  getClass(),
                  "User: "******" does not have permission to access folder. Folder identifier: "
                      + _assetId);
            } catch (DotDataException e) {
              Logger.info(getClass(), "FolderAPI.find(): Identifier is null");
            }

            if (folder != null && UtilMethods.isSet(folder.getInode())) {
              ids.add(_assetId);
            } else {
              // if the asset is not a folder and has identifier, put it, if not, put the inode
              Identifier iden = APILocator.getIdentifierAPI().findFromInode(_assetId);
              if (!ids.contains(iden.getId())) { // Multiples languages have the same identifier
                ids.add(iden.getId());
              }
            }

          } catch (DotStateException e) {
            ids.add(_assetId);
          }
        }
      }
    }

    return ids;
  }