private Serializable getSlaveServerParentFolderId() { if ( cachedSlaveServerParentFolderId == null ) { readWriteLock.readLock().lock(); RepositoryFile f; try { f = pur.getFile( getSlaveServerParentFolderPath() ); } finally { readWriteLock.readLock().unlock(); } cachedSlaveServerParentFolderId = f.getId(); } return cachedSlaveServerParentFolderId; }
@Override public void deleteRepositoryDirectory( final RepositoryDirectoryInterface dir, final boolean deleteHomeDirectories ) throws KettleException { readWriteLock.writeLock().lock(); try { // Fetch the folder to be deleted RepositoryFile folder; RepositoryFile homeFolder; folder = pur.getFileById( dir.getObjectId().getId() ); // Fetch the user's home directory homeFolder = pur.getFile( ClientRepositoryPaths.getUserHomeFolderPath( user.getLogin() ) ); // Make sure the user is not trying to delete their own home directory if ( isSameOrAncestorFolder( folder, homeFolder ) ) { // Then throw an exception that the user cannot delete their own home directory throw new KettleException( "You are not allowed to delete your home folder." ); } if ( !deleteHomeDirectories && isUserHomeDirectory( folder ) ) { throw new RepositoryObjectAccessException( "Cannot delete another users home directory", RepositoryObjectAccessException.AccessExceptionType.USER_HOME_DIR ); } pur.deleteFile( dir.getObjectId().getId(), null ); rootRef.clearRef(); } catch ( Exception e ) { throw new KettleException( "Unable to delete directory with path [" + getPath( null, dir, null ) + "]", e ); } finally { readWriteLock.writeLock().unlock(); } }
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 boolean hasAccess( ObjectId id, RepositoryFilePermission perm ) throws KettleException { RepositoryFile repositoryFile = pur.getFileById( id.getId() ); return pur.hasAccess( repositoryFile.getPath(), EnumSet.of( perm ) ); }
if ( fileId != null ) { Repository repository = connectToRepository(); RepositoryFile file = unifiedRepository.getFileById( fileId ); if ( file != null ) { try { unifiedRepository.getDataForRead( fileId, SimpleRepositoryFileData.class ); if ( fileData != null ) { logger.warn( "Reading as legacy CE job " + file.getName() + "." );
public void setGlobalUserSetting( String settingName, String settingValue ) { if ( canAdminister() ) { String tentantHomePath = ClientRepositoryPaths.getEtcFolderPath(); Serializable tenantHomeId = repository.getFile( tentantHomePath ).getId(); Map<String, Serializable> tenantMetadata = repository.getFileMetadata( tenantHomeId ); tenantMetadata.put( SETTING_PREFIX + settingName, settingValue ); repository.setFileMetadata( tenantHomeId, tenantMetadata ); } }
public List<IUserSetting> getGlobalUserSettings() { String tentantHomePath = ClientRepositoryPaths.getEtcFolderPath(); Serializable tenantHomeId = repository.getFile( tentantHomePath ).getId(); Map<String, Serializable> tenantMetadata = repository.getFileMetadata( tenantHomeId ); List<IUserSetting> userSettings = new ArrayList<IUserSetting>( tenantMetadata.size() ); for ( Map.Entry<String, Serializable> entry : tenantMetadata.entrySet() ) { String key = entry.getKey(); if ( key.startsWith( SETTING_PREFIX ) ) { userSettings.add( createSetting( key.substring( SETTING_PREFIX.length() ), entry.getValue() ) ); } } return userSettings; }
ObjectRevision revision = null; try { file = pur.getFile( absPath ); if ( versionId != null ) { file = pur.getFileAtVersion( file.getId(), versionId ); data = pur.getDataAtVersionForRead( file.getId(), versionId, NodeRepositoryFileData.class ); } finally { readWriteLock.readLock().unlock();
try { RepositoryFile file; file = pur.getFile( absPath ); pur.getDeletedFiles( getDatabaseMetaParentFolderPath(), name + RepositoryObjectType.DATABASE.getExtension() ); if ( !deletedChildren.isEmpty() ) { pur.getDeletedFiles( dir.getObjectId().getId(), name + RepositoryObjectType.TRANSFORMATION.getExtension() ); if ( !deletedChildren.isEmpty() ) { pur.getDeletedFiles( getPartitionSchemaParentFolderPath(), name + RepositoryObjectType.PARTITION_SCHEMA.getExtension() ); if ( !deletedChildren.isEmpty() ) { pur.getDeletedFiles( getSlaveServerParentFolderPath(), name + RepositoryObjectType.SLAVE_SERVER.getExtension() ); if ( !deletedChildren.isEmpty() ) { pur.getDeletedFiles( getClusterSchemaParentFolderPath(), name + RepositoryObjectType.CLUSTER_SCHEMA.getExtension() ); if ( !deletedChildren.isEmpty() ) { pur.getDeletedFiles( dir.getObjectId().getId(), name + RepositoryObjectType.JOB.getExtension() ); if ( !deletedChildren.isEmpty() ) { return new StringObjectId( deletedChildren.get( 0 ).getId().toString() );
private List<RepositoryFile> getChildren( Serializable folderId, boolean showHiddenFiles ) { return pur.getChildren( new RepositoryRequest( folderId.toString(), showHiddenFiles, -1, null ) ); }
@Override public List<IDeletedObject> getTrash() throws KettleException { List<IDeletedObject> trash = new ArrayList<IDeletedObject>(); List<RepositoryFile> deletedChildren = pur.getDeletedFiles();
protected RepositoryFileTree loadRepositoryFileTree( String path ) { readWriteLock.readLock().lock(); RepositoryFileTree result; try { result = pur.getTree( path, -1, null, true ); } finally { readWriteLock.readLock().unlock(); } return result; }
@Override public void deleteElement( String namespace, IMetaStoreElementType elementType, String elementId ) throws MetaStoreException { pur.deleteFile( elementId, true, null ); }
@Override public List<DatabaseMeta> readDatabases() throws KettleException { readWriteLock.readLock().lock(); try { List<RepositoryFile> children = getAllFilesOfType( null, RepositoryObjectType.DATABASE, false ); List<DatabaseMeta> dbMetas = new ArrayList<DatabaseMeta>(); for ( RepositoryFile file : children ) { DataNode node; node = pur.getDataForRead( file.getId(), NodeRepositoryFileData.class ).getNode(); DatabaseMeta databaseMeta = (DatabaseMeta) databaseMetaTransformer.dataNodeToElement( node ); databaseMeta.setName( file.getTitle() ); dbMetas.add( databaseMeta ); } return dbMetas; } catch ( Exception e ) { throw new KettleException( "Unable to read all databases", e ); } finally { readWriteLock.readLock().unlock(); } }
public Void call() throws Exception { delegatee.setFileMetadata( fileId, metadataMap ); return null; } }, Messages.getInstance().getString( "ExceptionLoggingDecorator.setFileMetadata", fileId, metadataMap ) ); //$NON-NLS-1$
private void deleteEmptyFile() { IUnifiedRepository repo = PentahoSystem.get( IUnifiedRepository.class ); RepositoryFile file = repo.getFile( outputFilePath ); Long emptyFileSize = new Long( 0 ); Long fileSize = file.getFileSize(); if ( fileSize.equals( emptyFileSize ) ) { repo.deleteFile( file.getId(), true, null ); } }
public Map<String, Serializable> call() throws Exception { return delegatee.getFileMetadata( fileId ); } }, Messages.getInstance().getString( "ExceptionLoggingDecorator.getFileMetadata", fileId ) ); //$NON-NLS-1$
@Test public void testDeleteUserSettingsByName() throws Exception { IAuthorizationPolicy policy = mock( IAuthorizationPolicy.class ); when( policy.isAllowed( anyString() ) ).thenReturn( true ); PentahoSystem.registerObject( policy ); final RepositoryFile repositoryFile = mock( RepositoryFile.class ); when( repositoryFile.getId() ).thenReturn( USER_FOLDER_ID ); when( repository.getFile( anyString() ) ).thenReturn( repositoryFile ); doAnswer( new Answer() { @Override public Object answer( InvocationOnMock invocation ) throws Throwable { final Map<String, Serializable> settings = (Map<String, Serializable>) invocation.getArguments()[1]; assertNotNull( settings ); assertEquals( 2, settings.size() ); final Iterator<String> iterator = settings.keySet().iterator(); assertFalse( iterator.next().startsWith( UserSettingService.SETTING_PREFIX ) ); assertFalse( iterator.next().startsWith( UserSettingService.SETTING_PREFIX ) ); return null; } } ).when( repository ).setFileMetadata( eq( USER_FOLDER_ID ), anyMap() ); userSettingService.deleteUserSettings( "test" ); }
private void markContentAsGenerated( IPostProcessingAction actionBean ) { IUnifiedRepository repo = PentahoSystem.get( IUnifiedRepository.class ); String lineageId = (String) params.get( ActionUtil.QUARTZ_LINEAGE_ID ); for ( IContentItem contentItem : actionBean.getActionOutputContents() ) { RepositoryFile sourceFile = getRepositoryFileSafe( repo, contentItem.getPath() ); // add metadata if we have access and we have file if ( sourceFile != null ) { Map<String, Serializable> metadata = repo.getFileMetadata( sourceFile.getId() ); metadata.put( ActionUtil.QUARTZ_LINEAGE_ID, lineageId ); repo.setFileMetadata( sourceFile.getId(), metadata ); } else { String fileName = getFSFileNameSafe( contentItem ); logger.warn( Messages.getInstance().getSkipRemovingOutputFile( fileName ) ); } } }
public Boolean call() throws Exception { return delegatee.hasAccess( path, permissions ); } }, Messages.getInstance().getString( "ExceptionLoggingDecorator.hasAccess", path ) ); //$NON-NLS-1$