@SuppressWarnings( "unchecked" ) public <T extends IRepositoryFileData> T getData( Serializable fileId, Serializable versionId, Class<T> dataClass ) { File f = new File( fileId.toString() ); T data = null; try { if ( SimpleRepositoryFileData.class.getName().equals( dataClass.getName() ) ) { data = (T) new SimpleRepositoryFileData( new FileInputStream( f ), "UTF-8", "text/plain" ); } else if ( NodeRepositoryFileData.class.getName().equals( dataClass.getName() ) ) { throw new UnsupportedOperationException( "This operation is not support by this repository" ); } } catch ( FileNotFoundException e ) { throw new UnifiedRepositoryException( e ); } return data; }
public RepositoryFile createFolder( Serializable parentFolderId, RepositoryFile file, RepositoryFileAcl acl, String versionMessage ) { try { String folderNameWithPath = parentFolderId + "/" + file.getName(); File newFolder = new File( folderNameWithPath ); newFolder.mkdir(); final RepositoryFile repositoryFolder = internalGetFile( newFolder ); return repositoryFolder; } catch ( Throwable th ) { throw new UnifiedRepositoryException(); } }
fos.write( data.toString().getBytes() ); } catch ( FileNotFoundException e ) { throw new UnifiedRepositoryException( "Error writing file metadata [" + fileId + "]", e ); } catch ( IOException e ) { throw new UnifiedRepositoryException( "Error writing file metadata [" + fileId + "]", e ); } finally { IOUtils.closeQuietly( fos );
public FileRecord getFileById( final Serializable fileId ) { FileRecord r = idMap.get( fileId ); if ( r == null ) { throw new UnifiedRepositoryException( String.format( "file id [%s] does not exist", fileId ) ); } return r; }
public Map<String, Serializable> getFileMetadata( final Serializable fileId ) { final String metadataFilename = FilenameUtils.concat( FilenameUtils.concat( FilenameUtils.getFullPathNoEndSeparator( fileId.toString() ), ".metadata" ), FilenameUtils.getName( fileId.toString() ) ); final Map<String, Serializable> metadata = new HashMap<String, Serializable>(); BufferedReader reader = null; try { reader = new BufferedReader( new FileReader( metadataFilename ) ); String data = reader.readLine(); while ( data != null ) { final int pos = data.indexOf( '=' ); if ( pos > 0 ) { final String key = data.substring( 0, pos ); final String value = ( data.length() > pos ? data.substring( pos + 1 ) : null ); metadata.put( key, value ); } data = reader.readLine(); } } catch ( FileNotFoundException e ) { // Do nothing ... metadata empty } catch ( IOException e ) { throw new UnifiedRepositoryException( "Error reading metadata [" + fileId + "]", e ); } finally { IOUtils.closeQuietly( reader ); } return metadata; }
public FrozenFileRecord getLatestVersion( final Serializable fileId ) { List<FrozenFileRecord> history = versionMap.get( fileId ); if ( history == null ) { throw new UnifiedRepositoryException( String.format( "version history for [%s] does not exist", fileId ) ); } return history.get( history.size() - 1 ); }
public RepositoryFile updateFile( RepositoryFile file, IRepositoryFileData data, String versionMessage ) { File f = new File( file.getId().toString() ); FileOutputStream fos = null; try { fos = new FileOutputStream( f, false ); if ( data instanceof SimpleRepositoryFileData ) { fos.write( inputStreamToBytes( ( (SimpleRepositoryFileData) data ).getInputStream() ) ); } else if ( data instanceof NodeRepositoryFileData ) { fos.write( inputStreamToBytes( new ByteArrayInputStream( ( (NodeRepositoryFileData) data ).getNode().toString() .getBytes() ) ) ); } } catch ( FileNotFoundException e ) { throw new UnifiedRepositoryException( e ); } catch ( IOException e ) { throw new UnifiedRepositoryException( e ); } finally { IOUtils.closeQuietly( fos ); } return getFile( file.getPath() ); }
public FrozenFileRecord getFileAtVersion( final Serializable fileId, final Serializable versionId ) { List<FrozenFileRecord> history = versionMap.get( fileId ); if ( history == null ) { throw new UnifiedRepositoryException( String.format( "version history for [%s] does not exist", fileId ) ); } Integer versionNumber = versionNumber( versionId ); FrozenFileRecord r = history.get( versionNumber ); if ( r == null ) { throw new UnifiedRepositoryException( String.format( "version [%s] does not exist", versionId ) ); } return r; }
public List<FrozenFileRecord> getVersions( final Serializable fileId ) { List<FrozenFileRecord> history = versionMap.get( fileId ); if ( history == null ) { throw new UnifiedRepositoryException( String.format( "version history for [%s] does not exist", fileId ) ); } List<FrozenFileRecord> cleanedHistory = new ArrayList<FrozenFileRecord>( history ); for ( Iterator<FrozenFileRecord> iter = cleanedHistory.iterator(); iter.hasNext(); ) { FrozenFileRecord r = iter.next(); if ( r == null ) { iter.remove(); } } return cleanedHistory; }
public RepositoryFile createFile( Serializable parentFolderId, RepositoryFile file, IRepositoryFileData data, RepositoryFileAcl acl, String versionMessage ) { String fileNameWithPath = RepositoryFilenameUtils.concat( parentFolderId.toString(), file.getName() ); FileOutputStream fos = null; File f = new File( fileNameWithPath ); try { f.createNewFile(); fos = new FileOutputStream( f ); if ( data instanceof SimpleRepositoryFileData ) { fos.write( inputStreamToBytes( ( (SimpleRepositoryFileData) data ).getInputStream() ) ); } else if ( data instanceof NodeRepositoryFileData ) { fos.write( inputStreamToBytes( new ByteArrayInputStream( ( (NodeRepositoryFileData) data ).getNode().toString() .getBytes() ) ) ); } } catch ( FileNotFoundException e ) { throw new UnifiedRepositoryException( "Error writing file [" + fileNameWithPath + "]", e ); } catch ( IOException e ) { throw new UnifiedRepositoryException( "Error writing file [" + fileNameWithPath + "]", e ); } finally { IOUtils.closeQuietly( fos ); } return internalGetFile( f ); }
public void deleteVersion( final Serializable fileId, final Serializable versionId ) { List<FrozenFileRecord> history = versionMap.get( fileId ); if ( history == null ) { throw new UnifiedRepositoryException( String.format( "version history for [%s] does not exist", fileId ) ); } Integer versionNumber = versionNumber( versionId ); if ( versionNumber >= 0 && versionNumber < history.size() ) { FrozenFileRecord r = history.get( versionNumber ); if ( r == null ) { throw new UnifiedRepositoryException( String.format( "version [%s] does not exist", versionId ) ); } history.set( versionNumber, null ); } else { throw new UnifiedRepositoryException( String.format( "unknown version [%s]", fileId ) ); } }
throw new UnifiedRepositoryException( Messages.getInstance().getString( "ExceptionLoggingDecorator.generalException", message, refNum ), e ); //$NON-NLS-1$
public FrozenFileRecord restoreVersion( final Serializable fileId, final Serializable versionId, final String author, final String versionMessage, final Date date ) { List<FrozenFileRecord> history = versionMap.get( fileId ); if ( history == null ) { throw new UnifiedRepositoryException( String.format( "version history for [%s] does not exist", fileId ) ); } Integer versionNumber = versionNumber( versionId ); if ( versionNumber >= 0 && versionNumber < history.size() ) { FrozenFileRecord r = history.get( versionNumber ); if ( r == null ) { throw new UnifiedRepositoryException( String.format( "version [%s] does not exist", versionId ) ); } history.add( new FrozenFileRecord( history.size(), new RepositoryFile.Builder( r.getFile() ).versionId( history.size() ).build(), r.getData(), r.getMetadata(), author, versionMessage, date ) ); return history.get( history.size() - 1 ); } throw new UnifiedRepositoryException( String.format( "unknown version [%s]", fileId ) ); }
public void addChild( final FileRecord fileRecord ) { // make sure no name collision for ( FileRecord child : children ) { if ( child.getFile().getName().equals( fileRecord.getFile().getName() ) ) { throw new UnifiedRepositoryException( String.format( "file [%s] already exists", fileRecord.getFile() .getName() ) ); } } children.add( fileRecord ); fileRecord.setParent( this ); Collections.sort( children ); }
public void restore( final Serializable fileId ) { Trash trash = userToTrashMap.get( currentUserProvider.getUser() ); if ( trash == null ) { throw new UnifiedRepositoryException( "no trash found for user" ); } String origPath = trash.getIdToOrigPathMap().get( fileId ); List<FileRecord> dels = trash.getOrigPathToFilesMap().get( origPath ); FileRecord found = null; for ( Iterator<FileRecord> iter = dels.iterator(); iter.hasNext(); ) { FileRecord r = iter.next(); if ( r.getFile().getId().equals( fileId ) ) { iter.remove(); found = r; } } FileRecord parentFolder = root.getFileRecord( origPath ); parentFolder.addChild( found ); trash.getIdToOrigPathMap().remove( fileId ); RepositoryFile popFile = new RepositoryFile.Builder( found.getFile() ).originalParentFolderPath( null ).deletedDate( null ).build(); found.setFile( popFile ); }
public void lockFile( final Serializable fileId, final String message ) { if ( !hasAccess( fileId, EnumSet.of( WRITE ) ) ) { throw new UnifiedRepositoryException( "access denied" ); } FileRecord r = idManager.getFileById( fileId ); if ( r.getFile().getLockOwner() != null ) { throw new IllegalStateException( "file is already locked" ); } r.setFile( new RepositoryFile.Builder( r.getFile() ).lockOwner( currentUserProvider.getUser() ).lockDate( new Date() ).lockMessage( message ).locked( true ).build() ); }
public void unlockFile( final Serializable fileId ) { if ( !hasAccess( fileId, EnumSet.of( WRITE ) ) ) { throw new UnifiedRepositoryException( "access denied" ); } FileRecord r = idManager.getFileById( fileId ); if ( r.getFile().getLockOwner() == null ) { throw new IllegalStateException( "file is not locked" ); } r.setFile( new RepositoryFile.Builder( r.getFile() ).lockOwner( null ).lockDate( null ).lockMessage( null ) .locked( false ).build() ); }
throw new UnifiedRepositoryException( ( file.isFolder() ? "Folder " : "File " ) + "with path [" + cleanDestAbsPath + "] already exists in the repository" );
if ( dest != null ) { if ( !dest.getFile().isFolder() ) { throw new UnifiedRepositoryException( "file already exists" ); FileRecord parent = root.getFileRecord( parentPath ); if ( parent == null ) { throw new UnifiedRepositoryException( "invalid destination path" );