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