package com.processpuzzle.file.control; import java.io.File; import java.util.Calendar; import java.util.Collection; import java.util.HashSet; import java.util.Iterator; import java.util.Map; import org.apache.commons.fileupload.FileItem; import com.processpuzzle.application.security.domain.User; import com.processpuzzle.artifact.domain.Document; import com.processpuzzle.artifact.domain.FileStorage; import com.processpuzzle.party.domain.Person; import com.processpuzzle.util.domain.GeneralService; public class FileServices { public static void uploadFile( FileItem item, String name, User responsible, String path, FileStorage fileStorage ) { File folder = new File( path ); if( !folder.exists() ) folder.mkdirs(); if( item == null ) fileStorage = null; String originalFileName = MultipartManager.getUTF8( GeneralService.getLastToken( item.getName().toString(), "\\" ) ); String addedName = MultipartManager.getUTF8( name ); String contentType = item.getContentType(); long sizeInBytes = item.getSize(); if( addedName == null || addedName.equals( "" ) ) fileStorage = null; if( sizeInBytes == 0 ) fileStorage = null; File uploadedFile = null; boolean succes = true; try{ uploadedFile = new File( folder, addedName ); item.write( uploadedFile ); }catch( Exception e ){ succes = false; } if( !succes ) fileStorage = null; else{ fileStorage.setOriginalFileName( originalFileName ); fileStorage.setSource( uploadedFile.getPath() ); fileStorage.setContentType( contentType ); fileStorage.setUploadDate( Calendar.getInstance().getTime() ); fileStorage.setSize( new Long( sizeInBytes ) ); } } public static void deleteFile( FileStorage fileStorage ) { if( fileStorage == null ) return; java.io.File dFile = new java.io.File( fileStorage.getSource() ); if( dFile.delete() ) ; /* the result is not intresting :) yet */ } public static FileItem getFileItemByFieldName( String fieldName, Collection<?> fileItems ) { if( fieldName != null && fileItems != null ){ Iterator<?> i = fileItems.iterator(); while( i.hasNext() ){ FileItem item = (FileItem) i.next(); if( !item.isFormField() ){ if( item.getFieldName().equals( fieldName ) ) return item; } } } return null; } public static FileItem getFileItemByName( String fileName, Collection<?> fileItems ) { if( (fileItems != null) && (!(fileItems.isEmpty())) ){ Iterator<?> it = fileItems.iterator(); boolean l = false; FileItem fitem = null; while( (it.hasNext()) && (!(l)) ){ fitem = (FileItem) it.next(); String thisName = (String) GeneralService.getLastToken( fitem.getName(), "\\" ); if( thisName.equals( fileName ) ){ l = true; } } if( l ){ return fitem; }else return null; }else return null; } public static void changeStorageSource( Collection<?> documents, Collection<?> fileItems ) { /* * for (Iterator iter = fileItems.iterator(); iter.hasNext();) { FileItem fileItem = (FileItem) iter.next(); FileStorage fileStorage = * FileServices.uploadFile(fileItem); Document document; try { document = (Document) * GeneralService.findCollectionItemByFieldName(documents,"fileStorage.originalFileName", fileStorage.getOriginalFileName()); if (document != null) { * document.getFileStorage().setSource(fileStorage.getSource()); } } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) * { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } } */ } public static Collection<?> updateDocuments( Collection<?> newDocuments, Collection<?> oldDocuments ) { Collection<?> unusedDocumentIds = new HashSet(); /* * if ((newDocuments != null) && !(newDocuments.isEmpty()) && (oldDocuments != null) && !(oldDocuments.isEmpty())) { Collection oldOrderDocuments = new * HashSet(oldDocuments); for (Iterator orderDocumentIterator = oldOrderDocuments.iterator(); orderDocumentIterator.hasNext();) { Document document = * (Document) orderDocumentIterator.next(); try { if (GeneralService.findCollectionItemByFieldName(newDocuments, "fileStorage.originalFileName", * document.getFileStorage().getOriginalFileName()) == null) { unusedDocumentIds.add(document.getId().toString()); oldDocuments.remove(document); } } * catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { * e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } for (Iterator orderDocumentIterator = newDocuments.iterator(); * orderDocumentIterator.hasNext();) { Document document = (Document) orderDocumentIterator.next(); try { if * (GeneralService.findCollectionItemByFieldName(oldDocuments, "fileStorage.originalFileName", document.getFileStorage().getOriginalFileName()) == null) { * oldDocuments.add(document); } } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch * (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } if ((newDocuments != null) && * (newDocuments.isEmpty()) && (oldDocuments != null) && !(oldDocuments.isEmpty())) { Collection oldOrderDocuments = new HashSet(oldDocuments); for * (Iterator orderDocumentIterator = oldOrderDocuments.iterator(); orderDocumentIterator.hasNext();) { Document document = (Document) * orderDocumentIterator.next(); unusedDocumentIds.add(document.getId().toString()); oldDocuments.remove(document); } } if ((newDocuments != null) && * !(newDocuments.isEmpty()) && (oldDocuments != null) && (oldDocuments.isEmpty())) { for (Iterator orderDocumentIterator = newDocuments.iterator(); * orderDocumentIterator.hasNext();) { Document document = (Document) orderDocumentIterator.next(); oldDocuments.add(document); } } */ return unusedDocumentIds; } public static Document removeDocument( Collection<?> documents, Collection<?> fileItems, String currentValue ) { Document document = null; if( fileItems != null ){ FileItem fileItem = FileServices.getFileItemByName( currentValue, fileItems ); fileItems.remove( fileItem ); if( fileItem != null ){ document = (Document) GeneralService.findCollectionItemByFieldName( documents, "fileStorage.originalFileName", currentValue ); }else{ document = (Document) GeneralService.findCollectionItemByFieldName( documents, "fileStorage.id", new Integer( currentValue ) ); } documents.remove( document ); }else{ if( (documents != null) && !(documents.isEmpty()) ){ if( (document = (Document) GeneralService.findCollectionItemByFieldName( documents, "fileStorage.id", new Integer( currentValue ) )) != null ) documents.remove( document ); } } return document; } public static FileStorage openDocument( Collection<?> fileItems, Collection<?> documents, String fileName ) { /* * if (fileItems != null) { FileItem fileItem = FileServices.getFileItemByName(fileName, fileItems); if (fileItem != null) return * FileServices.upLoadFile(fileItem); else return null; } else { return null; } */return null; } public static void deleteFilesFromServer( Collection<?> documents ) { for( Iterator<?> iter = documents.iterator(); iter.hasNext(); ){ Document doc = (Document) iter.next(); for( Iterator<?> versionIt = doc.getVersions().entrySet().iterator(); versionIt.hasNext(); ){ /* DocumentVersion version = (DocumentVersion) */((Map.Entry) versionIt.next()).getValue(); // deleteFile(version.getFileStorage()); } } } public static void addDocument( Collection<?> documents, Collection<?> fileItems, FileItem fileItem, String documentName, Person creator, String versioned ) { if( !GeneralService.contains( GeneralService.getLastToken( fileItem.getName(), "\\" ), documents ) ){ /* * FileStorage fileStorage = FileServices.upLoadFile(fileItem); if (fileStorage != null) { fileItems.add(fileItem); Document document = * ArtifactFactory.createDocument(documentName, creator); if( versioned != null ) { document.setVersionControlled(true); } documents.add(document); * FileServices.deleteFile(fileStorage); fileStorage.setId(null); } */ } } }