private RepositoryFileTree loadRepositoryFileTreeFolders( String path, int depth, boolean includeAcls, boolean showHidden ) { RepositoryRequest repoRequest = new RepositoryRequest(); repoRequest.setDepth( depth ); repoRequest.setIncludeAcls( includeAcls ); repoRequest.setChildNodeFilter( "*" ); repoRequest.setTypes( FILES_TYPE_FILTER.FOLDERS ); repoRequest.setPath( path ); repoRequest.setShowHidden( showHidden ); readWriteLock.readLock().lock(); RepositoryFileTree result; try { result = pur.getTree( repoRequest ); } finally { readWriteLock.readLock().unlock(); } return result; } }
public void populateFoldersLazy( RepositoryDirectory repositoryDirectory ) { RepositoryRequest repositoryRequest = new RepositoryRequest( repositoryDirectory.getPath(), true, 1, null ); repositoryRequest.setTypes( RepositoryRequest.FILES_TYPE_FILTER.FOLDERS ); repositoryRequest.setIncludeSystemFolders( false ); RepositoryFileTree tree = getRepository().getUnderlyingRepository().getTree( repositoryRequest ); for ( RepositoryFileTree repositoryFileTree : tree.getChildren() ) { org.pentaho.platform.api.repository2.unified.RepositoryFile repositoryFile = repositoryFileTree.getFile(); RepositoryDirectory repositoryDirectory1 = RepositoryDirectory.build( repositoryDirectory.getPath(), repositoryFile, isAdmin() ); repositoryDirectory.addChild( repositoryDirectory1 ); } }
private void processRevisionDeletion( PurgeUtilitySpecification purgeSpecification ) throws PurgeDeletionException { RepositoryRequest repositoryRequest = new RepositoryRequest( purgeSpecification.getPath(), true, -1, purgeSpecification.getFileFilter() ); repositoryRequest.setTypes( FILES_TYPE_FILTER.FILES_FOLDERS ); repositoryRequest.setIncludeMemberSet( new HashSet<String>( Arrays.asList( new String[] { "name", "id", "folder", "path", "versioned", "versionId", "locked" } ) ) ); getLogger().debug( "Creating file list" ); RepositoryFileTreeDto tree = getRepoWs().getTreeFromRequest( repositoryRequest ); processPurgeForTree( tree, purgeSpecification ); }
private List<RepositoryFile> getAllURChildrenFiles() { RepositoryRequest repositoryRequest = new RepositoryRequest(); repositoryRequest.setShowHidden( showHidden ); repositoryRequest.setTypes( RepositoryRequest.FILES_TYPE_FILTER.FOLDERS ); repositoryRequest.setPath( this.self.getId().toString() ); List<RepositoryFile> children = repository.getChildren( repositoryRequest ); // Special case: /etc should not be returned from a directory listing. RepositoryFile etcFile = null; if ( this.isRoot() ) { etcFile = repository.getFile( ClientRepositoryPaths.getEtcFolderPath() ); } // Filter for Folders only doesn't appear to work Iterator<RepositoryFile> iterator = children.iterator(); while ( iterator.hasNext() ) { RepositoryFile next = iterator.next(); if ( !next.isFolder() ) { iterator.remove(); } // Special case: /etc should not be returned from a directory listing. if ( this.isRoot() && next.equals( etcFile ) ) { iterator.remove(); } } return children; }
@Override public RepositoryFileTree getTree( RepositoryRequest repositoryRequest ) { return getTree( repositoryRequest.getPath(), repositoryRequest.getDepth(), repositoryRequest.getChildNodeFilter(), repositoryRequest.isShowHidden() ); }
private List<RepositoryFile> getChildren( Serializable folderId, boolean showHiddenFiles ) { return pur.getChildren( new RepositoryRequest( folderId.toString(), showHiddenFiles, -1, null ) ); }
@Override public List<RepositoryFile> getChildren( RepositoryRequest repositoryRequest ) { return getChildren( repositoryRequest.getPath(), repositoryRequest.getChildNodeFilter(), repositoryRequest.isShowHidden() ); }
public static RepositoryFileTree getTree( final Session session, final PentahoJcrConstants pentahoJcrConstants, final IPathConversionHelper pathConversionHelper, final ILockHelper lockHelper, final String absPath, final RepositoryRequest repositoryRequest, IRepositoryAccessVoterManager accessVoterManager ) throws RepositoryException { Item fileItem = session.getItem( JcrStringHelper.pathEncode( absPath ) ); // items are nodes or properties; this must be a node Assert.isTrue( fileItem.isNode() ); Node fileNode = (Node) fileItem; return getTreeByNode( session, pentahoJcrConstants, pathConversionHelper, lockHelper, fileNode, repositoryRequest .getDepth(), repositoryRequest.getChildNodeFilter(), repositoryRequest.isShowHidden(), accessVoterManager, repositoryRequest.getTypes(), new MutableBoolean( false ), repositoryRequest.isIncludeSystemFolders(), absPath ); }
@Override public RepositoryFileTree getTree( RepositoryRequest repositoryRequest ) { File root = new File( getPhysicalFileLocation( repositoryRequest.getPath() ) ); //TODO ACL return getTree( root, repositoryRequest.getDepth().intValue(), repositoryRequest.getChildNodeFilter(), repositoryRequest.getTypes() ); }
/** * {@inheritDoc} */ @Override @SuppressWarnings( "unchecked" ) public List<RepositoryFile> getChildren( final RepositoryRequest repositoryRequest ) { Assert.notNull( repositoryRequest.getPath() ); return (List<RepositoryFile>) jcrTemplate.execute( new JcrCallback() { @Override public Object doInJcr( final Session session ) throws RepositoryException, IOException { PentahoJcrConstants pentahoJcrConstants = new PentahoJcrConstants( session ); return JcrRepositoryFileUtils.getChildren( session, pentahoJcrConstants, pathConversionHelper, lockHelper, repositoryRequest ); } } ); }
public RepositoryRequest( String path, Boolean showHidden, Integer depth, String legacyFilter ) { this.path = path; this.showHidden = showHidden == null ? false : showHidden; setDepth( depth ); setLegacyFilter( legacyFilter ); }
@Override public List<RepositoryFile> getChildren( RepositoryRequest repositoryRequest ) { List<RepositoryFile> children = new ArrayList<RepositoryFile>(); File folder = new File( getPhysicalFileLocation( repositoryRequest.getPath() ) ); for ( Iterator<File> iterator = FileUtils.listFiles( folder, new WildcardFileFilter( repositoryRequest.getChildNodeFilter() ), null ).iterator(); iterator .hasNext(); ) { children.add( internalGetFile( (File) iterator.next() ) ); } return children; }
public RepositoryFileTreeDto getTreeFromRequest( final RepositoryRequest repositoryRequest ) { // RepositoryFileTree tree = repo.getTree( path, depth, filter, showHidden ); IAuthorizationPolicy policy = PentahoSystem.get( IAuthorizationPolicy.class ); boolean isAdmin = policy.isAllowed( AdministerSecurityAction.NAME ); // Filter system folders from non-admin users. // PDI uses this web-service and system folders must be returned to admin repository database connections. if ( !isAdmin ) { repositoryRequest.setIncludeSystemFolders( false ); //Non Admin users can never get system folders getLogger().warn( "User does not have administrator privileges; setting includeSystemFolders to false." ); } RepositoryFileTree tree = repo.getTree( repositoryRequest ); if ( tree != null ) { return new RepositoryFileTreeAdapter( repositoryRequest ).marshal( tree ); } else { return null; } }
@Override public RepositoryFileTree getTree( RepositoryRequest repositoryRequest ) { return getTree(repositoryRequest.getPath(), repositoryRequest.getDepth(), repositoryRequest.getChildNodeFilter(), repositoryRequest.isShowHidden() ); }
@Override public List<RepositoryElementMetaInterface> getRepositoryObjects( ) { if ( fileChildren == null ) { fileChildren = new ArrayList<>(); synchronized ( fileChildren ) { UnifiedRepositoryLockService lockService = (UnifiedRepositoryLockService) registry.getService( ILockService.class ); RepositoryFileTree tree = repository.getTree( new RepositoryRequest( this.self.getPath(), showHidden, 1, null ) ); for ( RepositoryFileTree tchild : tree.getChildren() ) { RepositoryFile child = tchild.getFile(); if ( !child.isFolder() ) { RepositoryLock lock = null; try { lock = lockService.getLock( child ); RepositoryObjectType objectType = PurRepository.getObjectType( child.getName() ); EERepositoryObject repositoryObject = new EERepositoryObject( child, this, null, objectType, null, lock, false ); repositoryObject.setVersioningEnabled( tchild.getVersioningEnabled() ); repositoryObject.setVersionCommentEnabled( tchild.getVersionCommentEnabled() ); fileChildren.add( repositoryObject ); } catch ( KettleException e ) { logger.error( "Error converting Unified Repository file to PDI RepositoryObject: " + child.getPath() + ". File will be skipped", e ); } } } } } return fileChildren; }
@Override public List<RepositoryFile> getChildren( RepositoryRequest repositoryRequest ) { return getChildren( repositoryRequest.getPath(), repositoryRequest.getChildNodeFilter(), repositoryRequest.isShowHidden() ); }
/** * {@inheritDoc} */ @Override public RepositoryFileTree getTree( final RepositoryRequest repositoryRequest ) { Assert.hasText( repositoryRequest.getPath() ); return (RepositoryFileTree) jcrTemplate.execute( new JcrCallback() { @Override public Object doInJcr( final Session session ) throws RepositoryException, IOException { PentahoJcrConstants pentahoJcrConstants = new PentahoJcrConstants( session ); String absPath = pathConversionHelper.relToAbs( repositoryRequest.getPath() ); return JcrRepositoryFileUtils.getTree( session, pentahoJcrConstants, pathConversionHelper, lockHelper, absPath, repositoryRequest, accessVoterManager ); } } ); }
private RepositoryFileTree loadRepositoryFileTree( String path, String filter, int depth, boolean showHidden, boolean includeAcls, FILES_TYPE_FILTER types ) { RepositoryRequest repoRequest = new RepositoryRequest(); repoRequest.setPath( Utils.isEmpty( path ) ? "/" : path ); repoRequest.setChildNodeFilter( filter == null ? "*" : filter ); repoRequest.setDepth( depth ); repoRequest.setShowHidden( showHidden ); repoRequest.setIncludeAcls( includeAcls ); repoRequest.setTypes( types == null ? FILES_TYPE_FILTER.FILES_FOLDERS : types ); readWriteLock.readLock().lock(); RepositoryFileTree fileTree; try { fileTree = pur.getTree( repoRequest ); } finally { readWriteLock.readLock().unlock(); } return fileTree; }
@Deprecated public static List<RepositoryFile> getChildren( final Session session, final PentahoJcrConstants pentahoJcrConstants, final IPathConversionHelper pathConversionHelper, final ILockHelper lockHelper, final Serializable folderId, final String filter, Boolean showHiddenFiles ) throws RepositoryException { RepositoryRequest repositoryRequest = new RepositoryRequest( folderId.toString(), showHiddenFiles, 0, filter ); return getChildren( session, pentahoJcrConstants, pathConversionHelper, lockHelper, repositoryRequest ); }
public static List<RepositoryFile> getChildren( final Session session, final PentahoJcrConstants pentahoJcrConstants, final IPathConversionHelper pathConversionHelper, final ILockHelper lockHelper, final RepositoryRequest repositoryRequest ) throws RepositoryException { Node folderNode = session.getNodeByIdentifier( JcrStringHelper.idEncode( repositoryRequest.getPath() ) ); Assert.isTrue( isPentahoFolder( pentahoJcrConstants, folderNode ) ); List<RepositoryFile> children = new ArrayList<RepositoryFile>(); // get all immediate child nodes that are of type PHO_NT_PENTAHOFOLDER or PHO_NT_PENTAHOFILE NodeIterator nodeIterator = null; if ( repositoryRequest.getChildNodeFilter() != null ) { nodeIterator = folderNode.getNodes( repositoryRequest.getChildNodeFilter() ); } else { nodeIterator = folderNode.getNodes(); } while ( nodeIterator.hasNext() ) { Node node = nodeIterator.nextNode(); if ( isSupportedNodeType( pentahoJcrConstants, node ) ) { RepositoryFile file = nodeToFile( session, pentahoJcrConstants, pathConversionHelper, lockHelper, node ); if ( !file.isAclNode() && ( !file.isHidden() || repositoryRequest.isShowHidden() ) ) { children.add( file ); } } } children.removeIf( Objects::isNull ); Collections.sort( children ); return children; }