private RepositoryEntry _getRootRepositoryEntry(DLFolder rootMountFolder) throws PortalException {

    return repositoryEntryLocalService.getRepositoryEntry(
        rootMountFolder.getUserId(),
        getGroupId(),
        getRepositoryId(),
        _extRepository.getRootFolderKey());
  }
  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);
  }
  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);
  }
  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 testUpdateExisting() throws Exception {
    long pk = ServiceTestUtil.nextLong();

    DLFolder newDLFolder = _persistence.create(pk);

    newDLFolder.setUuid(ServiceTestUtil.randomString());

    newDLFolder.setGroupId(ServiceTestUtil.nextLong());

    newDLFolder.setCompanyId(ServiceTestUtil.nextLong());

    newDLFolder.setUserId(ServiceTestUtil.nextLong());

    newDLFolder.setUserName(ServiceTestUtil.randomString());

    newDLFolder.setCreateDate(ServiceTestUtil.nextDate());

    newDLFolder.setModifiedDate(ServiceTestUtil.nextDate());

    newDLFolder.setRepositoryId(ServiceTestUtil.nextLong());

    newDLFolder.setMountPoint(ServiceTestUtil.randomBoolean());

    newDLFolder.setParentFolderId(ServiceTestUtil.nextLong());

    newDLFolder.setName(ServiceTestUtil.randomString());

    newDLFolder.setDescription(ServiceTestUtil.randomString());

    newDLFolder.setLastPostDate(ServiceTestUtil.nextDate());

    newDLFolder.setDefaultFileEntryTypeId(ServiceTestUtil.nextLong());

    newDLFolder.setHidden(ServiceTestUtil.randomBoolean());

    newDLFolder.setOverrideFileEntryTypes(ServiceTestUtil.randomBoolean());

    newDLFolder.setStatus(ServiceTestUtil.nextInt());

    newDLFolder.setStatusByUserId(ServiceTestUtil.nextLong());

    newDLFolder.setStatusByUserName(ServiceTestUtil.randomString());

    newDLFolder.setStatusDate(ServiceTestUtil.nextDate());

    _persistence.update(newDLFolder);

    DLFolder existingDLFolder = _persistence.findByPrimaryKey(newDLFolder.getPrimaryKey());

    Assert.assertEquals(existingDLFolder.getUuid(), newDLFolder.getUuid());
    Assert.assertEquals(existingDLFolder.getFolderId(), newDLFolder.getFolderId());
    Assert.assertEquals(existingDLFolder.getGroupId(), newDLFolder.getGroupId());
    Assert.assertEquals(existingDLFolder.getCompanyId(), newDLFolder.getCompanyId());
    Assert.assertEquals(existingDLFolder.getUserId(), newDLFolder.getUserId());
    Assert.assertEquals(existingDLFolder.getUserName(), newDLFolder.getUserName());
    Assert.assertEquals(
        Time.getShortTimestamp(existingDLFolder.getCreateDate()),
        Time.getShortTimestamp(newDLFolder.getCreateDate()));
    Assert.assertEquals(
        Time.getShortTimestamp(existingDLFolder.getModifiedDate()),
        Time.getShortTimestamp(newDLFolder.getModifiedDate()));
    Assert.assertEquals(existingDLFolder.getRepositoryId(), newDLFolder.getRepositoryId());
    Assert.assertEquals(existingDLFolder.getMountPoint(), newDLFolder.getMountPoint());
    Assert.assertEquals(existingDLFolder.getParentFolderId(), newDLFolder.getParentFolderId());
    Assert.assertEquals(existingDLFolder.getName(), newDLFolder.getName());
    Assert.assertEquals(existingDLFolder.getDescription(), newDLFolder.getDescription());
    Assert.assertEquals(
        Time.getShortTimestamp(existingDLFolder.getLastPostDate()),
        Time.getShortTimestamp(newDLFolder.getLastPostDate()));
    Assert.assertEquals(
        existingDLFolder.getDefaultFileEntryTypeId(), newDLFolder.getDefaultFileEntryTypeId());
    Assert.assertEquals(existingDLFolder.getHidden(), newDLFolder.getHidden());
    Assert.assertEquals(
        existingDLFolder.getOverrideFileEntryTypes(), newDLFolder.getOverrideFileEntryTypes());
    Assert.assertEquals(existingDLFolder.getStatus(), newDLFolder.getStatus());
    Assert.assertEquals(existingDLFolder.getStatusByUserId(), newDLFolder.getStatusByUserId());
    Assert.assertEquals(existingDLFolder.getStatusByUserName(), newDLFolder.getStatusByUserName());
    Assert.assertEquals(
        Time.getShortTimestamp(existingDLFolder.getStatusDate()),
        Time.getShortTimestamp(newDLFolder.getStatusDate()));
  }
  public static boolean contains(
      PermissionChecker permissionChecker, DLFolder dlFolder, String actionId)
      throws PortalException, SystemException {

    if (actionId.equals(ActionKeys.ADD_FOLDER)) {
      actionId = ActionKeys.ADD_SUBFOLDER;
    }

    Boolean hasPermission =
        StagingPermissionUtil.hasPermission(
            permissionChecker,
            dlFolder.getGroupId(),
            DLFolder.class.getName(),
            dlFolder.getFolderId(),
            PortletKeys.DOCUMENT_LIBRARY,
            actionId);

    if (hasPermission != null) {
      return hasPermission.booleanValue();
    }

    long folderId = dlFolder.getFolderId();

    if (actionId.equals(ActionKeys.VIEW)) {
      while (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
        dlFolder = DLFolderLocalServiceUtil.getFolder(folderId);

        folderId = dlFolder.getParentFolderId();

        if (!permissionChecker.hasOwnerPermission(
                dlFolder.getCompanyId(),
                DLFolder.class.getName(),
                dlFolder.getFolderId(),
                dlFolder.getUserId(),
                actionId)
            && !permissionChecker.hasPermission(
                dlFolder.getGroupId(),
                DLFolder.class.getName(),
                dlFolder.getFolderId(),
                actionId)) {

          return false;
        }

        if (!PropsValues.PERMISSIONS_VIEW_DYNAMIC_INHERITANCE) {
          break;
        }
      }

      return true;
    } else {
      while (folderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) {
        dlFolder = DLFolderLocalServiceUtil.getFolder(folderId);

        folderId = dlFolder.getParentFolderId();

        if (permissionChecker.hasOwnerPermission(
            dlFolder.getCompanyId(),
            DLFolder.class.getName(),
            dlFolder.getFolderId(),
            dlFolder.getUserId(),
            actionId)) {

          return true;
        }

        if (permissionChecker.hasPermission(
            dlFolder.getGroupId(), DLFolder.class.getName(), dlFolder.getFolderId(), actionId)) {

          return true;
        }
      }

      return false;
    }
  }