@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); }
@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); }
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 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); } } }
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); }
@Override protected int getBaseModelsNotInTrashCount(BaseModel<?> parentBaseModel) throws Exception { DLFolder dlFolder = (DLFolder) parentBaseModel; return DLFileShortcutLocalServiceUtil.getFileShortcutsCount( dlFolder.getGroupId(), dlFolder.getFolderId(), true, WorkflowConstants.STATUS_APPROVED); }
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()); } }
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 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 long getParentFolderId(long groupId, long parentFolderId) throws SystemException { if (parentFolderId != DLFolderConstants.DEFAULT_PARENT_FOLDER_ID) { DLFolder parentDLFolder = dlFolderPersistence.fetchByPrimaryKey(parentFolderId); if ((parentDLFolder == null) || (groupId != parentDLFolder.getGroupId())) { parentFolderId = DLFolderConstants.DEFAULT_PARENT_FOLDER_ID; } } return parentFolderId; }
@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); }
public void addFileShortcutResources( DLFolder folder, DLFileShortcut fileShortcut, String[] communityPermissions, String[] guestPermissions) throws PortalException, SystemException { resourceLocalService.addModelResources( fileShortcut.getCompanyId(), folder.getGroupId(), fileShortcut.getUserId(), DLFileShortcut.class.getName(), fileShortcut.getFileShortcutId(), communityPermissions, guestPermissions); }
public void addFileShortcutResources( DLFolder folder, DLFileShortcut fileShortcut, boolean addCommunityPermissions, boolean addGuestPermissions) throws PortalException, SystemException { resourceLocalService.addResources( fileShortcut.getCompanyId(), folder.getGroupId(), fileShortcut.getUserId(), DLFileShortcut.class.getName(), fileShortcut.getFileShortcutId(), false, addCommunityPermissions, addGuestPermissions); }
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); } }
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; }
@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()); } } }
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; }
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); }
public void updateStatuses(User user, List<Object> dlFileEntriesAndDLFolders, int status) throws PortalException, SystemException { for (Object object : dlFileEntriesAndDLFolders) { if (object instanceof DLFileEntry) { DLFileEntry dlFileEntry = (DLFileEntry) object; List<DLFileVersion> dlFileVersions = dlFileVersionLocalService.getFileVersions( dlFileEntry.getFileEntryId(), WorkflowConstants.STATUS_ANY); dlFileVersions = ListUtil.copy(dlFileVersions); Collections.sort(dlFileVersions, new FileVersionVersionComparator()); DLFileVersion latestDlFileVersion = dlFileVersions.get(0); if ((status == WorkflowConstants.STATUS_APPROVED) && (latestDlFileVersion.getStatus() == WorkflowConstants.STATUS_IN_TRASH)) { continue; } // Asset if (status == WorkflowConstants.STATUS_APPROVED) { if (latestDlFileVersion.isApproved()) { assetEntryLocalService.updateVisible( DLFileEntryConstants.getClassName(), dlFileEntry.getFileEntryId(), true); } } else { assetEntryLocalService.moveEntryToTrash( DLFileEntryConstants.getClassName(), dlFileEntry.getFileEntryId()); } // Social if (status == WorkflowConstants.STATUS_APPROVED) { socialActivityCounterLocalService.enableActivityCounters( DLFileEntryConstants.getClassName(), dlFileEntry.getFileEntryId()); socialActivityLocalService.addActivity( user.getUserId(), dlFileEntry.getGroupId(), DLFileEntryConstants.getClassName(), dlFileEntry.getFileEntryId(), SocialActivityConstants.TYPE_RESTORE_FROM_TRASH, StringPool.BLANK, 0); } else if (latestDlFileVersion.getStatus() == WorkflowConstants.STATUS_APPROVED) { socialActivityLocalService.addActivity( user.getUserId(), dlFileEntry.getGroupId(), DLFileEntryConstants.getClassName(), dlFileEntry.getFileEntryId(), SocialActivityConstants.TYPE_MOVE_TO_TRASH, StringPool.BLANK, 0); } // Index Indexer indexer = IndexerRegistryUtil.nullSafeGetIndexer(DLFileEntry.class); if (status == WorkflowConstants.STATUS_APPROVED) { indexer.reindex(dlFileEntry); } else { indexer.delete(dlFileEntry); } // Workflow if (status != WorkflowConstants.STATUS_APPROVED) { for (DLFileVersion dlFileVersion : dlFileVersions) { if (!dlFileVersion.isPending()) { continue; } dlFileVersion.setStatus(WorkflowConstants.STATUS_DRAFT); dlFileVersionPersistence.update(dlFileVersion, false); workflowInstanceLinkLocalService.deleteWorkflowInstanceLink( dlFileVersion.getCompanyId(), dlFileVersion.getGroupId(), DLFileEntryConstants.getClassName(), dlFileVersion.getFileVersionId()); } } } else if (object instanceof DLFolder) { DLFolder dlFolder = (DLFolder) object; if (dlFolder.isInTrash()) { continue; } QueryDefinition queryDefinition = new QueryDefinition(WorkflowConstants.STATUS_ANY); List<Object> foldersAndFileEntriesAndFileShortcuts = dlFolderLocalService.getFoldersAndFileEntriesAndFileShortcuts( dlFolder.getGroupId(), dlFolder.getFolderId(), null, false, queryDefinition); updateStatuses(user, foldersAndFileEntriesAndFileShortcuts, status); } } }
@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())); }
@Indexable(type = IndexableType.DELETE) public DLFolder deleteFolder(DLFolder dlFolder, boolean includeTrashedEntries) throws PortalException, SystemException { // Folders List<DLFolder> dlFolders = dlFolderPersistence.findByG_P(dlFolder.getGroupId(), dlFolder.getFolderId()); for (DLFolder curDLFolder : dlFolders) { if (includeTrashedEntries || !curDLFolder.isInTrash()) { dlFolderLocalService.deleteFolder(curDLFolder, includeTrashedEntries); } } // Resources resourceLocalService.deleteResource( dlFolder.getCompanyId(), DLFolder.class.getName(), ResourceConstants.SCOPE_INDIVIDUAL, dlFolder.getFolderId()); // WebDAVProps webDAVPropsLocalService.deleteWebDAVProps(DLFolder.class.getName(), dlFolder.getFolderId()); // File entries dlFileEntryLocalService.deleteFileEntries( dlFolder.getGroupId(), dlFolder.getFolderId(), includeTrashedEntries); // File entry types dlFileEntryTypeLocalService.unsetFolderFileEntryTypes(dlFolder.getFolderId()); // File shortcuts dlFileShortcutLocalService.deleteFileShortcuts( dlFolder.getGroupId(), dlFolder.getFolderId(), includeTrashedEntries); // Expando expandoValueLocalService.deleteValues(DLFolder.class.getName(), dlFolder.getFolderId()); // App helper dlAppHelperLocalService.deleteFolder(new LiferayFolder(dlFolder)); // Folder dlFolderPersistence.remove(dlFolder); // Directory try { DLStoreUtil.deleteDirectory( dlFolder.getCompanyId(), dlFolder.getFolderId(), StringPool.BLANK); } catch (NoSuchDirectoryException nsde) { if (_log.isDebugEnabled()) { _log.debug(nsde.getMessage()); } } return dlFolder; }
public DLFolder updateStatus( long userId, long folderId, int status, Map<String, Serializable> workflowContext, ServiceContext serviceContext) throws PortalException, SystemException { // Folder User user = userPersistence.findByPrimaryKey(userId); DLFolder dlFolder = dlFolderPersistence.findByPrimaryKey(folderId); int oldStatus = dlFolder.getStatus(); dlFolder.setStatus(status); dlFolder.setStatusByUserId(user.getUserId()); dlFolder.setStatusByUserName(user.getFullName()); dlFolder.setStatusDate(new Date()); dlFolderPersistence.update(dlFolder); // Folders, file entries, and file shortcuts QueryDefinition queryDefinition = new QueryDefinition(WorkflowConstants.STATUS_ANY); List<Object> foldersAndFileEntriesAndFileShortcuts = getFoldersAndFileEntriesAndFileShortcuts( dlFolder.getGroupId(), folderId, null, false, queryDefinition); dlAppHelperLocalService.updateDependentStatus( user, foldersAndFileEntriesAndFileShortcuts, status); // Asset if (status == WorkflowConstants.STATUS_APPROVED) { assetEntryLocalService.updateVisible(DLFolder.class.getName(), dlFolder.getFolderId(), true); } else if (status == WorkflowConstants.STATUS_IN_TRASH) { assetEntryLocalService.updateVisible(DLFolder.class.getName(), dlFolder.getFolderId(), false); } // Trash if (status == WorkflowConstants.STATUS_IN_TRASH) { UnicodeProperties typeSettingsProperties = new UnicodeProperties(); typeSettingsProperties.put("title", dlFolder.getName()); trashEntryLocalService.addTrashEntry( userId, dlFolder.getGroupId(), DLFolderConstants.getClassName(), dlFolder.getFolderId(), WorkflowConstants.STATUS_APPROVED, null, typeSettingsProperties); } else { trashEntryLocalService.deleteEntry(DLFolderConstants.getClassName(), dlFolder.getFolderId()); } // Indexer if (((status == WorkflowConstants.STATUS_APPROVED) || (status == WorkflowConstants.STATUS_IN_TRASH) || (oldStatus == WorkflowConstants.STATUS_IN_TRASH)) && ((serviceContext == null) || serviceContext.isIndexingEnabled())) { Indexer indexer = IndexerRegistryUtil.nullSafeGetIndexer(DLFolderConstants.getClassName()); indexer.reindex(dlFolder); } return dlFolder; }
public DLFolder updateFolderAndFileEntryTypes( long userId, long folderId, long parentFolderId, String name, String description, long defaultFileEntryTypeId, List<Long> fileEntryTypeIds, boolean overrideFileEntryTypes, ServiceContext serviceContext) throws PortalException, SystemException { boolean hasLock = hasFolderLock(userId, folderId); Lock lock = null; if (!hasLock) { // Lock lock = lockFolder(userId, folderId, null, false, DLFolderImpl.LOCK_EXPIRATION_TIME); } try { // Folder if (!overrideFileEntryTypes) { fileEntryTypeIds = Collections.emptyList(); } DLFolder dlFolder = dlFolderPersistence.findByPrimaryKey(folderId); parentFolderId = getParentFolderId(dlFolder, parentFolderId); validateFolder(folderId, dlFolder.getGroupId(), parentFolderId, name); dlFolder.setModifiedDate(serviceContext.getModifiedDate(null)); dlFolder.setParentFolderId(parentFolderId); dlFolder.setName(name); dlFolder.setDescription(description); dlFolder.setExpandoBridgeAttributes(serviceContext); dlFolder.setOverrideFileEntryTypes(overrideFileEntryTypes); dlFolder.setDefaultFileEntryTypeId(defaultFileEntryTypeId); dlFolderPersistence.update(dlFolder); // File entry types if (fileEntryTypeIds != null) { dlFileEntryTypeLocalService.updateFolderFileEntryTypes( dlFolder, fileEntryTypeIds, defaultFileEntryTypeId, serviceContext); } // App helper dlAppHelperLocalService.updateFolder(userId, new LiferayFolder(dlFolder), serviceContext); return dlFolder; } finally { if (!hasLock) { // Unlock unlockFolder(folderId, lock.getUuid()); } } }
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; } }