@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); }
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; }