@Override public String getPath() { return self.getPath(); }
protected boolean isInTrash( final RepositoryFile file ) { // pretty hacky solution if ( file.getPath().contains( "/.trash/" ) ) { return true; } else { return false; } }
@Override public String[] getJobsUsingDatabase( ObjectId id_database ) throws KettleException { List<String> result = new ArrayList<String>(); for ( RepositoryFile file : getReferrers( id_database, Collections.singletonList( RepositoryObjectType.JOB ) ) ) { result.add( file.getPath() ); } return result.toArray( new String[result.size()] ); }
@Override public String[] getTransformationsUsingDatabase( ObjectId id_database ) throws KettleException { List<String> result = new ArrayList<String>(); for ( RepositoryFile file : getReferrers( id_database, Collections.singletonList( RepositoryObjectType.TRANSFORMATION ) ) ) { result.add( file.getPath() ); } return result.toArray( new String[result.size()] ); }
/** * Determine if "baseFolder" is the same as "folder" or if "folder" is a descendant of "baseFolder" * * @param folder * Folder to test for similarity / ancestory; Must not be null * @param baseFolder * Folder that may be the same or an ancestor; Must not be null * @return True if folder is a descendant of baseFolder or False if not; False if either folder or baseFolder are null */ protected boolean isSameOrAncestorFolder( RepositoryFile folder, RepositoryFile baseFolder ) { // If either folder is null, return false. We cannot do a proper comparison if ( folder != null && baseFolder != null ) { if ( // If the folders are equal baseFolder.getId().equals( folder.getId() ) || ( // OR if the folders are NOT siblings AND the folder to move IS an ancestor to the users home folder baseFolder.getPath().lastIndexOf( RepositoryDirectory.DIRECTORY_SEPARATOR ) != folder.getPath().lastIndexOf( RepositoryDirectory.DIRECTORY_SEPARATOR ) && baseFolder.getPath().startsWith( folder.getPath() ) ) ) { return true; } } return false; }
protected String calcDestAbsPath( RepositoryFile existingFile, RepositoryDirectoryInterface newDirectory, String newName ) { String newDirectoryPath = getPath( null, newDirectory, null ); StringBuilder buf = new StringBuilder( existingFile.getPath().length() ); if ( newDirectory != null ) { buf.append( newDirectoryPath ); } else { buf.append( getParentPath( existingFile.getPath() ) ); } return buf .append( RepositoryFile.SEPARATOR ) .append( newName ) .toString(); }
@Override public RepositoryDirectory findDirectory( ObjectId id_directory ) { RepositoryFile file = repository.getFileById( id_directory.getId() ); if ( file == null || !file.isFolder() ) { return null; } if ( isRoot() && RepositoryDirectory.DIRECTORY_SEPARATOR.equals( file.getPath() ) ) { return this; } // Verifies if this is the parent directory of file and if so passes this as parent argument String parentPath = getParentPath( file.getPath() ); if ( self.getPath().endsWith( RepositoryDirectory.DIRECTORY_SEPARATOR ) ) { if ( parentPath.equals( self.getPath().substring( 0, self.getPath().length() - 1 ) ) ) { return new LazyUnifiedRepositoryDirectory( file, this, repository, registry, showHidden ); } } else { if ( parentPath.equals( self.getPath() ) ) { return new LazyUnifiedRepositoryDirectory( file, this, repository, registry, showHidden ); } } return new LazyUnifiedRepositoryDirectory( file, findDirectory( parentPath ), repository, registry, showHidden ); }
@Override public boolean hasAccess( ObjectId id, RepositoryFilePermission perm ) throws KettleException { RepositoryFile repositoryFile = pur.getFileById( id.getId() ); return pur.hasAccess( repositoryFile.getPath(), EnumSet.of( perm ) ); }
protected List<RepositoryFile> getAllFilesOfType( final ObjectId dirId, final List<RepositoryObjectType> objectTypes, final boolean includeDeleted ) throws KettleException { List<RepositoryFile> allChildren = new ArrayList<RepositoryFile>(); List<RepositoryFile> children = getAllFilesOfType( dirId, objectTypes ); allChildren.addAll( children ); if ( includeDeleted ) { String dirPath = null; if ( dirId != null ) { // derive path using id readWriteLock.readLock().lock(); try { dirPath = pur.getFileById( dirId.getId() ).getPath(); } finally { readWriteLock.readLock().unlock(); } } List<RepositoryFile> deletedChildren = getAllDeletedFilesOfType( dirPath, objectTypes ); allChildren.addAll( deletedChildren ); Collections.sort( allChildren ); } return allChildren; }
protected RepositoryFile validateElementTypeRepositoryFolder( String namespace, IMetaStoreElementType elementType ) throws MetaStoreException { // The element type needs to be known in this repository, we need to have a match by ID // RepositoryFile elementTypeFolder = pur.getFileById( elementType.getId() ); if ( elementTypeFolder == null ) { StringBuilder builder = new StringBuilder(); builder.append( namespacesFolder.getPath() ).append( Const.CR ); String available = getMetaStoreFolders( builder, namespacesFolder, 0 ); throw new MetaStoreException( "The element type with name '" + elementType.getName() + " doesn't exist in namespace '" + namespace + "'." + Const.CR + "Available nodes:" + Const.CR + available ); } return elementTypeFolder; }
public void export( ProgressMonitorListener monitor, List<RepositoryFile> files, OutputStreamWriter writer ) throws KettleException { List<TransMeta> transformations = repository.loadTransformations( monitor, log, files, true ); Iterator<TransMeta> transMetasIter = transformations.iterator(); Iterator<RepositoryFile> filesIter = files.iterator(); while ( ( monitor == null || !monitor.isCanceled() ) && transMetasIter.hasNext() ) { TransMeta trans = transMetasIter.next(); setGlobalVariablesOfLogTablesNull( trans.getLogTables() ); RepositoryFile file = filesIter.next(); try { // Validate against the import rules first! if ( toExport( trans ) ) { writer.write( trans.getXML() + Const.CR ); } } catch ( Exception ex ) { // if exception while writing one item is occurred logging it and continue looping log.logError( BaseMessages.getString( PKG, "PurRepositoryExporter.ERROR_SAVE_TRANSFORMATION", trans.getName(), file.getPath() ), ex ); //$NON-NLS-1$ } } } }
public void export( ProgressMonitorListener monitor, List<RepositoryFile> files, OutputStreamWriter writer ) throws KettleException { List<JobMeta> jobs = repository.loadJobs( monitor, log, files, true ); Iterator<JobMeta> jobsMeta = jobs.iterator(); Iterator<RepositoryFile> filesIter = files.iterator(); while ( ( monitor == null || !monitor.isCanceled() ) && jobsMeta.hasNext() ) { JobMeta meta = jobsMeta.next(); setGlobalVariablesOfLogTablesNull( meta.getLogTables() ); RepositoryFile file = filesIter.next(); try { // Validate against the import rules first! if ( toExport( meta ) ) { writer.write( meta.getXML() + Const.CR ); } } catch ( Exception ex ) { // if exception while writing one item is occurred logging it and continue looping log.logError( BaseMessages.getString( PKG, "PurRepositoryExporter.ERROR_SAVE_JOB", meta.getName(), file .getPath() ), ex ); //$NON-NLS-1$ } } } }
@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; }
String parentPath = getParentPath( repositoryFile.getPath() ); String name = repositoryFile.getTitle(); String description = repositoryFile.getDescription();
interimFolderPath = getParentPath( folder.getPath() ); finalParentPath = ( newParent != null ? getPath( null, newParent, null ) : interimFolderPath );
public void createElement( String namespace, IMetaStoreElementType elementType, IMetaStoreElement element ) throws MetaStoreException { RepositoryFile elementTypeFolder = validateElementTypeRepositoryFolder( namespace, elementType ); RepositoryFile elementFile = new RepositoryFile.Builder( PurRepository.checkAndSanitize( element.getName() ) ).title( element.getName() ) .versioned( false ).build(); DataNode elementDataNode = new DataNode( PurRepository.checkAndSanitize( element.getName() ) ); elementToDataNode( element, elementDataNode ); RepositoryFile createdFile = pur.createFile( elementTypeFolder.getId(), elementFile, new NodeRepositoryFileData( elementDataNode ), null ); element.setId( createdFile.getId().toString() ); // Verify existence. if ( pur.getFileById( createdFile.getId() ) == null ) { throw new RuntimeException( "Unable to verify creation of element '" + element.getName() + "' in folder: " + elementTypeFolder.getPath() ); } }
public static RepositoryDirectory build( String parentPath, org.pentaho.platform.api.repository2.unified.RepositoryFile repositoryFile, Boolean isAdmin ) { RepositoryDirectory repositoryDirectory = new RepositoryDirectory(); repositoryDirectory.setParent( parentPath ); repositoryDirectory.setName( repositoryFile.getName() ); repositoryDirectory.setPath( repositoryFile.getPath() ); repositoryDirectory.setObjectId( () -> (String) repositoryFile.getId() ); repositoryDirectory.setHidden( repositoryFile.isHidden() && !isAdmin ); repositoryDirectory.setDate( repositoryFile.getLastModifiedDate() != null ? repositoryFile.getLastModifiedDate() : repositoryFile.getCreatedDate() ); return repositoryDirectory; }
jobMeta.setObjectRevision( getObjectRevision( new StringObjectId( file.getId().toString() ), versionLabel ) ); jobMeta.setRepository( this ); jobMeta.setRepositoryDirectory( findDirectory( getParentPath( file.getPath() ) ) );
transMeta.setObjectRevision( getObjectRevision( new StringObjectId( file.getId().toString() ), versionLabel ) ); transMeta.setRepository( this ); transMeta.setRepositoryDirectory( findDirectory( getParentPath( file.getPath() ) ) ); transMeta.setRepositoryLock( unifiedRepositoryLockService.getLock( file ) );