@Override
  public void cascadeFileEntryTypes(long userId, DLFolder dlFolder) throws PortalException {

    long[] groupIds = PortalUtil.getCurrentAndAncestorSiteGroupIds(dlFolder.getGroupId());

    List<DLFileEntryType> dlFileEntryTypes =
        getFolderFileEntryTypes(groupIds, dlFolder.getFolderId(), true);

    List<Long> fileEntryTypeIds = getFileEntryTypeIds(dlFileEntryTypes);

    long defaultFileEntryTypeId = getDefaultFileEntryTypeId(dlFolder.getFolderId());

    ServiceContext serviceContext = new ServiceContext();

    serviceContext.setCompanyId(dlFolder.getCompanyId());
    serviceContext.setScopeGroupId(dlFolder.getGroupId());
    serviceContext.setUserId(userId);

    cascadeFileEntryTypes(
        userId,
        dlFolder.getGroupId(),
        dlFolder.getFolderId(),
        defaultFileEntryTypeId,
        fileEntryTypeIds,
        serviceContext);
  }
  public void updateFolderFileEntryTypes(
      DLFolder dlFolder,
      List<Long> fileEntryTypeIds,
      long defaultFileEntryTypeId,
      ServiceContext serviceContext)
      throws PortalException, SystemException {

    List<Long> originalFileEntryTypeIds =
        getFileEntryTypeIds(dlFolderPersistence.getDLFileEntryTypes(dlFolder.getFolderId()));

    if (fileEntryTypeIds.equals(originalFileEntryTypeIds)) {
      return;
    }

    for (Long fileEntryTypeId : fileEntryTypeIds) {
      if (!originalFileEntryTypeIds.contains(fileEntryTypeId)) {
        dlFolderPersistence.addDLFileEntryType(dlFolder.getFolderId(), fileEntryTypeId);
      }
    }

    for (Long originalFileEntryTypeId : originalFileEntryTypeIds) {
      if (!fileEntryTypeIds.contains(originalFileEntryTypeId)) {
        dlFolderPersistence.removeDLFileEntryType(dlFolder.getFolderId(), originalFileEntryTypeId);

        workflowDefinitionLinkLocalService.deleteWorkflowDefinitionLink(
            dlFolder.getCompanyId(),
            dlFolder.getGroupId(),
            DLFolder.class.getName(),
            dlFolder.getFolderId(),
            originalFileEntryTypeId);
      }
    }
  }
  protected long getParentFolderId(DLFolder dlFolder, long parentFolderId) throws SystemException {

    if (parentFolderId == DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
      return parentFolderId;
    }

    if (dlFolder.getFolderId() == parentFolderId) {
      return dlFolder.getParentFolderId();
    } else {
      DLFolder parentDLFolder = dlFolderPersistence.fetchByPrimaryKey(parentFolderId);

      if ((parentDLFolder == null) || (dlFolder.getGroupId() != parentDLFolder.getGroupId())) {

        return dlFolder.getParentFolderId();
      }

      List<Long> subfolderIds = new ArrayList<Long>();

      getSubfolderIds(subfolderIds, dlFolder.getGroupId(), dlFolder.getFolderId());

      if (subfolderIds.contains(parentFolderId)) {
        return dlFolder.getParentFolderId();
      }

      return parentFolderId;
    }
  }
  public void getSubfolderIds(List<Long> folderIds, long groupId, long folderId)
      throws SystemException {

    List<DLFolder> dlFolders = dlFolderPersistence.findByG_P(groupId, folderId);

    for (DLFolder dlFolder : dlFolders) {
      folderIds.add(dlFolder.getFolderId());

      getSubfolderIds(folderIds, dlFolder.getGroupId(), dlFolder.getFolderId());
    }
  }
  public void unlockFolder(long groupId, long parentFolderId, String name, String lockUuid)
      throws PortalException, SystemException {

    DLFolder dlFolder = getFolder(groupId, parentFolderId, name);

    unlockFolder(dlFolder.getFolderId(), lockUuid);
  }
    public void processAction(ActionEvent actionEvent) throws AbortProcessingException {

      try {
        FolderUserObject folderUserObject = docLibModelBean.getSelectedFolderUserObject();
        DLFolder dlFolder = folderUserObject.getDlFolder();
        long groupId = dlFolder.getGroupId();
        long repositoryId = dlFolder.getRepositoryId();
        boolean mountPoint = dlFolder.getMountPoint();
        long parentFolderId = dlFolder.getFolderId();
        ServiceContext serviceContext = new ServiceContext();

        // Temporary: Make the default setting be that community members can view the file. Need to
        // develop a
        // "Viewable By" permissions Facelet composite component UI similar to
        // portal-web/docroot/html/taglib/ui/input_permissions/page.jsp
        serviceContext.setAddGroupPermissions(true);
        DLFolderServiceUtil.addFolder(
            groupId,
            repositoryId,
            mountPoint,
            parentFolderId,
            folderName,
            folderDescription,
            serviceContext);
        docLibModelBean.forceTreeRequery();
        logger.debug("Added folderName=[{0}] description=[{1}]", folderName, folderDescription);
      } catch (Exception e) {
        logger.error(e.getMessage(), e);
        liferayFacesContext.addGlobalUnexpectedErrorMessage();
      }

      docLibViewBean.setPopupRendered(false);
    }
Exemple #7
0
  public static SyncDLObject toSyncDLObject(DLFolder dlFolder, String event) {
    SyncDLObject syncDLObject = new SyncDLObjectImpl();

    syncDLObject.setCompanyId(dlFolder.getCompanyId());
    syncDLObject.setCreateDate(dlFolder.getCreateDate());
    syncDLObject.setModifiedDate(dlFolder.getModifiedDate());
    syncDLObject.setRepositoryId(dlFolder.getRepositoryId());
    syncDLObject.setParentFolderId(dlFolder.getParentFolderId());
    syncDLObject.setName(dlFolder.getName());
    syncDLObject.setExtension(StringPool.BLANK);
    syncDLObject.setMimeType(StringPool.BLANK);
    syncDLObject.setDescription(dlFolder.getDescription());
    syncDLObject.setChangeLog(StringPool.BLANK);
    syncDLObject.setExtraSettings(StringPool.BLANK);
    syncDLObject.setVersion(StringPool.BLANK);
    syncDLObject.setSize(0);
    syncDLObject.setChecksum(StringPool.BLANK);
    syncDLObject.setEvent(event);
    syncDLObject.setLockExpirationDate(null);
    syncDLObject.setLockUserId(0);
    syncDLObject.setLockUserName(StringPool.BLANK);
    syncDLObject.setType(SyncConstants.TYPE_FOLDER);
    syncDLObject.setTypePK(dlFolder.getFolderId());
    syncDLObject.setTypeUuid(dlFolder.getUuid());

    return syncDLObject;
  }
  @Override
  protected BaseModel<?> addBaseModel(
      BaseModel<?> parentBaseModel, boolean approved, ServiceContext serviceContext)
      throws Exception {

    DLFolder dlFolder = (DLFolder) parentBaseModel;

    String content = "Content: Enterprise. Open Source. For Life.";

    serviceContext = (ServiceContext) serviceContext.clone();

    serviceContext.setWorkflowAction(WorkflowConstants.ACTION_PUBLISH);

    FileEntry fileEntry =
        DLAppServiceUtil.addFileEntry(
            dlFolder.getGroupId(),
            DLFolderConstants.DEFAULT_PARENT_FOLDER_ID,
            "Text.txt",
            ContentTypes.TEXT_PLAIN,
            getSearchKeywords(),
            StringPool.BLANK,
            StringPool.BLANK,
            content.getBytes(),
            serviceContext);

    return DLAppServiceUtil.addFileShortcut(
        dlFolder.getGroupId(), dlFolder.getFolderId(), fileEntry.getFileEntryId(), serviceContext);
  }
  @Test
  public void testCreateLocalRepositoryFromExistingFolderId() throws Exception {

    DLFolder dlFolder = DLTestUtil.addDLFolder(_group.getGroupId());

    RepositoryLocalServiceUtil.getLocalRepositoryImpl(dlFolder.getFolderId(), 0, 0);
  }
  @Test
  public void testCreateRepositoryFromExistingFileEntryId() throws Exception {
    DLFolder dlFolder = DLTestUtil.addDLFolder(_group.getGroupId());

    DLFileEntry dlFileEntry = DLTestUtil.addDLFileEntry(dlFolder.getFolderId());

    RepositoryFactoryUtil.create(0, dlFileEntry.getFileEntryId(), 0);
  }
  @Override
  protected int getBaseModelsNotInTrashCount(BaseModel<?> parentBaseModel) throws Exception {

    DLFolder dlFolder = (DLFolder) parentBaseModel;

    return DLFileShortcutLocalServiceUtil.getFileShortcutsCount(
        dlFolder.getGroupId(), dlFolder.getFolderId(), true, WorkflowConstants.STATUS_APPROVED);
  }
  protected void cascadeFileEntryTypes(
      long groupId,
      long folderId,
      long defaultFileEntryTypeId,
      List<Long> fileEntryTypeIds,
      ServiceContext serviceContext)
      throws PortalException, SystemException {

    List<DLFileEntry> dlFileEntries = dlFileEntryPersistence.findByG_F(groupId, folderId);

    for (DLFileEntry dlFileEntry : dlFileEntries) {
      Long fileEntryTypeId = dlFileEntry.getFileEntryTypeId();

      if (fileEntryTypeIds.contains(fileEntryTypeId)) {
        continue;
      }

      DLFileVersion dlFileVersion =
          dlFileVersionLocalService.getLatestFileVersion(dlFileEntry.getFileEntryId(), true);

      if (dlFileVersion.isPending()) {
        workflowInstanceLinkLocalService.deleteWorkflowInstanceLink(
            dlFileVersion.getCompanyId(),
            groupId,
            DLFileEntry.class.getName(),
            dlFileVersion.getFileVersionId());
      }

      dlFileEntryService.updateFileEntry(
          dlFileEntry.getFileEntryId(),
          null,
          null,
          null,
          null,
          null,
          false,
          defaultFileEntryTypeId,
          null,
          null,
          null,
          0,
          serviceContext);
    }

    List<DLFolder> subFolders = dlFolderPersistence.findByG_M_P_H(groupId, false, folderId, false);

    for (DLFolder subFolder : subFolders) {
      long subFolderId = subFolder.getFolderId();

      if (subFolder.isOverrideFileEntryTypes()) {
        continue;
      }

      cascadeFileEntryTypes(
          groupId, subFolderId, defaultFileEntryTypeId, fileEntryTypeIds, serviceContext);
    }
  }
  protected void cascadeFileEntryTypes(
      long userId,
      long groupId,
      long folderId,
      long defaultFileEntryTypeId,
      List<Long> fileEntryTypeIds,
      ServiceContext serviceContext)
      throws PortalException {

    List<DLFileEntry> dlFileEntries = dlFileEntryPersistence.findByG_F(groupId, folderId);

    for (DLFileEntry dlFileEntry : dlFileEntries) {
      Long fileEntryTypeId = dlFileEntry.getFileEntryTypeId();

      if (fileEntryTypeIds.contains(fileEntryTypeId)) {
        continue;
      }

      DLFileVersion dlFileVersion =
          dlFileVersionLocalService.getLatestFileVersion(dlFileEntry.getFileEntryId(), true);

      if (dlFileVersion.isPending()) {
        workflowInstanceLinkLocalService.deleteWorkflowInstanceLink(
            dlFileVersion.getCompanyId(),
            groupId,
            DLFileEntry.class.getName(),
            dlFileVersion.getFileVersionId());
      }

      dlFileEntryLocalService.updateFileEntryType(
          userId, dlFileEntry.getFileEntryId(), defaultFileEntryTypeId, serviceContext);

      dlAppHelperLocalService.updateAsset(
          userId,
          new LiferayFileEntry(dlFileEntry),
          new LiferayFileVersion(dlFileVersion),
          serviceContext.getAssetCategoryIds(),
          serviceContext.getAssetTagNames(),
          serviceContext.getAssetLinkEntryIds());
    }

    List<DLFolder> subFolders = dlFolderPersistence.findByG_M_P_H(groupId, false, folderId, false);

    for (DLFolder subFolder : subFolders) {
      long subFolderId = subFolder.getFolderId();

      if (subFolder.getRestrictionType() == DLFolderConstants.RESTRICTION_TYPE_INHERIT) {

        continue;
      }

      cascadeFileEntryTypes(
          userId, groupId, subFolderId, defaultFileEntryTypeId, fileEntryTypeIds, serviceContext);
    }
  }
  @Test
  public void testCreateLocalRepositoryFromExistingFileVersionId() throws Exception {

    DLFolder dlFolder = DLTestUtil.addDLFolder(_group.getGroupId());

    DLFileEntry dlFileEntry = DLTestUtil.addDLFileEntry(dlFolder.getFolderId());

    DLFileVersion dlFileVersion = dlFileEntry.getLatestFileVersion(true);

    RepositoryLocalServiceUtil.getLocalRepositoryImpl(0, 0, dlFileVersion.getFileVersionId());
  }
  @Override
  protected void doDelete(Object obj) throws Exception {
    DLFolder dlFolder = (DLFolder) obj;

    Document document = new DocumentImpl();

    document.addUID(PORTLET_ID, dlFolder.getFolderId());

    SearchEngineUtil.deleteDocument(
        getSearchEngineId(), dlFolder.getCompanyId(), document.get(Field.UID));
  }
  @Override
  public void deleteRow(Object primaryKey) throws IOException {
    long fileEntryId = (Long) primaryKey;

    try {
      DLFileEntry dlFileEntry = DLFileEntryLocalServiceUtil.getFileEntry(fileEntryId);
      DLFileEntryServiceUtil.deleteFileEntry(
          dlFolder.getGroupId(), dlFolder.getFolderId(), dlFileEntry.getName());
    } catch (Exception e) {
      logger.error(e.getMessage(), e);
      throw new IOException(e.getMessage());
    }
  }
  protected void addFolderResources(
      DLFolder dlFolder, String[] groupPermissions, String[] guestPermissions)
      throws PortalException, SystemException {

    resourceLocalService.addModelResources(
        dlFolder.getCompanyId(),
        dlFolder.getGroupId(),
        dlFolder.getUserId(),
        DLFolder.class.getName(),
        dlFolder.getFolderId(),
        groupPermissions,
        guestPermissions);
  }
  @Override
  public DLFileEntry updateFileEntryFileEntryType(
      DLFileEntry dlFileEntry, ServiceContext serviceContext) throws PortalException {

    long groupId = serviceContext.getScopeGroupId();
    long folderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID;

    DLFolder dlFolder = dlFolderPersistence.fetchByPrimaryKey(dlFileEntry.getFolderId());

    if (dlFolder != null) {
      groupId = dlFolder.getGroupId();
      folderId = dlFolder.getFolderId();
    }

    List<DLFileEntryType> dlFileEntryTypes =
        getFolderFileEntryTypes(
            PortalUtil.getCurrentAndAncestorSiteGroupIds(groupId), folderId, true);

    List<Long> fileEntryTypeIds = getFileEntryTypeIds(dlFileEntryTypes);

    if (fileEntryTypeIds.contains(dlFileEntry.getFileEntryTypeId())) {
      return dlFileEntry;
    }

    long defaultFileEntryTypeId = getDefaultFileEntryTypeId(folderId);

    DLFileVersion dlFileVersion =
        dlFileVersionLocalService.getLatestFileVersion(dlFileEntry.getFileEntryId(), true);

    if (dlFileVersion.isPending()) {
      workflowInstanceLinkLocalService.deleteWorkflowInstanceLink(
          dlFileVersion.getCompanyId(), dlFileEntry.getGroupId(),
          DLFileEntry.class.getName(), dlFileVersion.getFileVersionId());
    }

    return dlFileEntryLocalService.updateFileEntry(
        serviceContext.getUserId(),
        dlFileEntry.getFileEntryId(),
        null,
        null,
        null,
        null,
        null,
        false,
        defaultFileEntryTypeId,
        null,
        null,
        null,
        0,
        serviceContext);
  }
  public void cascadeFileEntryTypes(long userId, DLFolder dlFolder)
      throws PortalException, SystemException {

    List<DLFileEntryType> dlFileEntryTypes =
        getFolderFileEntryTypes(new long[] {dlFolder.getGroupId()}, dlFolder.getFolderId(), true);

    List<Long> fileEntryTypeIds = getFileEntryTypeIds(dlFileEntryTypes);

    long defaultFileEntryTypeId = getDefaultFileEntryTypeId(dlFolder.getFolderId());

    ServiceContext serviceContext = new ServiceContext();

    serviceContext.setCompanyId(dlFolder.getCompanyId());
    serviceContext.setScopeGroupId(dlFolder.getGroupId());
    serviceContext.setUserId(userId);

    cascadeFileEntryTypes(
        dlFolder.getGroupId(),
        dlFolder.getFolderId(),
        defaultFileEntryTypeId,
        fileEntryTypeIds,
        serviceContext);
  }
  protected void addFolderResources(
      DLFolder dlFolder, boolean addGroupPermissions, boolean addGuestPermissions)
      throws PortalException, SystemException {

    resourceLocalService.addResources(
        dlFolder.getCompanyId(),
        dlFolder.getGroupId(),
        dlFolder.getUserId(),
        DLFolder.class.getName(),
        dlFolder.getFolderId(),
        false,
        addGroupPermissions,
        addGuestPermissions);
  }
  @Test(expected = PrincipalException.class)
  public void testCreateRepositoryFromExistingFolderWithoutPermissions() throws Exception {

    DLFolder dlFolder = DLTestUtil.addDLFolder(_group.getGroupId());

    PermissionChecker originalPermissionChecker = PermissionThreadLocal.getPermissionChecker();

    try {
      PermissionThreadLocal.setPermissionChecker(new AlwaysDenyingPermissionChecker());

      RepositoryFactoryUtil.create(dlFolder.getFolderId(), 0, 0);
    } finally {
      PermissionThreadLocal.setPermissionChecker(originalPermissionChecker);
    }
  }
  @Test
  public void testDynamicQueryByPrimaryKeyExisting() throws Exception {
    DLFolder newDLFolder = addDLFolder();

    DynamicQuery dynamicQuery =
        DynamicQueryFactoryUtil.forClass(DLFolder.class, DLFolder.class.getClassLoader());

    dynamicQuery.add(RestrictionsFactoryUtil.eq("folderId", newDLFolder.getFolderId()));

    List<DLFolder> result = _persistence.findWithDynamicQuery(dynamicQuery);

    Assert.assertEquals(1, result.size());

    DLFolder existingDLFolder = result.get(0);

    Assert.assertEquals(existingDLFolder, newDLFolder);
  }
  protected void validateFolder(long folderId, long groupId, long parentFolderId, String name)
      throws PortalException, SystemException {

    validateFolderName(name);

    try {
      dlFileEntryLocalService.getFileEntry(groupId, parentFolderId, name);

      throw new DuplicateFileException(name);
    } catch (NoSuchFileEntryException nsfee) {
    }

    DLFolder dlFolder = dlFolderPersistence.fetchByG_P_N(groupId, parentFolderId, name);

    if ((dlFolder != null) && (dlFolder.getFolderId() != folderId)) {
      throw new DuplicateFolderNameException(name);
    }
  }
  public boolean isPermittedToAddFolder() {

    if (permittedToAddFolder == null) {

      try {
        PermissionChecker permissionChecker = liferayFacesContext.getPermissionChecker();
        DLFolder selectedDLFolder = docLibModelBean.getSelectedFolderUserObject().getDlFolder();
        long scopeGroupId = selectedDLFolder.getGroupId();
        long folderId = selectedDLFolder.getFolderId();
        permittedToAddFolder =
            DLFolderPermission.contains(
                permissionChecker, scopeGroupId, folderId, ActionKeys.ADD_FOLDER);
      } catch (Exception e) {
        logger.error(e.getMessage(), e);
      }
    }

    return permittedToAddFolder;
  }
  protected void reindexFolders(long companyId, int folderStart, int folderEnd) throws Exception {

    List<DLFolder> dlFolders =
        DLFolderLocalServiceUtil.getCompanyFolders(companyId, folderStart, folderEnd);

    for (DLFolder dlFolder : dlFolders) {
      String portletId = PortletKeys.DOCUMENT_LIBRARY;
      long groupId = dlFolder.getGroupId();
      long folderId = dlFolder.getFolderId();

      String[] newIds = {
        String.valueOf(companyId), portletId, String.valueOf(groupId), String.valueOf(folderId)
      };

      Indexer indexer = IndexerRegistryUtil.getIndexer(FileModel.class);

      indexer.reindex(newIds);
    }
  }
  protected List<DocLibFileEntry> findViewableDocuments() {
    List<DocLibFileEntry> viewableDocuments = new ArrayList<DocLibFileEntry>();

    try {
      long folderGroupId = dlFolder.getGroupId();
      long folderId = dlFolder.getFolderId();

      List<DLFileEntry> dlFileEntries = null;

      if (DLFolderPermission.contains(
          permissionChecker, folderGroupId, folderId, ActionKeys.VIEW)) {
        OrderByComparator orderByComparator =
            DocumentComparatorFactory.getComparator(getSortColumn(), isSortAscending());

        dlFileEntries =
            DLFileEntryServiceUtil.getFileEntries(
                folderGroupId, folderId, QueryUtil.ALL_POS, QueryUtil.ALL_POS, orderByComparator);
      }

      if (dlFileEntries != null) {

        for (DLFileEntry dlFileEntry : dlFileEntries) {
          boolean permittedToViewDocument = false;

          try {
            permittedToViewDocument =
                DLFileEntryPermission.contains(permissionChecker, dlFileEntry, ActionKeys.VIEW);
          } catch (Exception e) {
            logger.error(e.getMessage(), e);
          }

          viewableDocuments.add(
              new DocLibFileEntry(
                  dlFileEntry, portalURL, pathContext, folderGroupId, permittedToViewDocument));
        }
      }
    } catch (Exception e) {
      logger.error(e.getMessage(), e);
    }

    return viewableDocuments;
  }
  @Indexable(type = IndexableType.REINDEX)
  public DLFolder moveFolder(
      long userId, long folderId, long parentFolderId, ServiceContext serviceContext)
      throws PortalException, SystemException {

    boolean hasLock = hasFolderLock(userId, folderId);

    Lock lock = null;

    if (!hasLock) {

      // Lock

      lock = lockFolder(userId, folderId);
    }

    try {
      DLFolder dlFolder = dlFolderPersistence.findByPrimaryKey(folderId);

      parentFolderId = getParentFolderId(dlFolder, parentFolderId);

      validateFolder(
          dlFolder.getFolderId(), dlFolder.getGroupId(), parentFolderId, dlFolder.getName());

      dlFolder.setModifiedDate(serviceContext.getModifiedDate(null));
      dlFolder.setParentFolderId(parentFolderId);
      dlFolder.setExpandoBridgeAttributes(serviceContext);

      dlFolderPersistence.update(dlFolder);

      dlAppHelperLocalService.moveFolder(new LiferayFolder(dlFolder));

      return dlFolder;
    } finally {
      if (!hasLock) {

        // Unlock

        unlockFolder(folderId, lock.getUuid());
      }
    }
  }
  public DLFolder updateDLFolder(DLFolder model) throws SystemException {
    DLFolder dlFolder = new DLFolderImpl();

    dlFolder.setNew(false);

    dlFolder.setUuid(model.getUuid());
    dlFolder.setFolderId(model.getFolderId());
    dlFolder.setGroupId(model.getGroupId());
    dlFolder.setCompanyId(model.getCompanyId());
    dlFolder.setUserId(model.getUserId());
    dlFolder.setUserName(model.getUserName());
    dlFolder.setCreateDate(model.getCreateDate());
    dlFolder.setModifiedDate(model.getModifiedDate());
    dlFolder.setParentFolderId(model.getParentFolderId());
    dlFolder.setName(model.getName());
    dlFolder.setDescription(model.getDescription());
    dlFolder.setLastPostDate(model.getLastPostDate());

    return dlFolderPersistence.update(dlFolder);
  }
  @Test
  public void testDynamicQueryByProjectionExisting() throws Exception {
    DLFolder newDLFolder = addDLFolder();

    DynamicQuery dynamicQuery =
        DynamicQueryFactoryUtil.forClass(DLFolder.class, DLFolder.class.getClassLoader());

    dynamicQuery.setProjection(ProjectionFactoryUtil.property("folderId"));

    Object newFolderId = newDLFolder.getFolderId();

    dynamicQuery.add(RestrictionsFactoryUtil.in("folderId", new Object[] {newFolderId}));

    List<Object> result = _persistence.findWithDynamicQuery(dynamicQuery);

    Assert.assertEquals(1, result.size());

    Object existingFolderId = result.get(0);

    Assert.assertEquals(existingFolderId, newFolderId);
  }
  @Override
  public List<Long> getAncestorFolderIds() throws PortalException, SystemException {

    List<Long> ancestorFolderIds = new ArrayList<Long>();

    DLFolder folder = this;

    while (!folder.isRoot()) {
      try {
        folder = folder.getParentFolder();

        ancestorFolderIds.add(folder.getFolderId());
      } catch (NoSuchFolderException nsfe) {
        if (folder.isInTrash()) {
          break;
        }

        throw nsfe;
      }
    }

    return ancestorFolderIds;
  }