Codice completo

Listato 5. Incapsula le operazioni effettuate sul file system

//FileManagerConcrete.javapackage
it.html.file;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.fileupload.FileItem;

public class FileManagerConcrete implements FileManager {
    //Tutte le operazioni vengono effettuate a partire da questa directory
    private String root;
    public FileManagerConcrete(String root){
        this.root=root;
    }
    
    public void createAccount(String user) throws IOException {
        //Creazione del path
        String directory=root+File.separator+user;ù
        File f=new File(directory);
        
        //Creazione della directory sul disco (lato server)
        f.mkdirs();
    }
    
    public void insert(String user, String dir, Collection items) throws Exception {
        //Creazione del path
        String directory=root+File.separator+user;
        
        //se DIR è vuoto, ci troviamo nella directory root
        if (dir!=null && !dir.equals(""))
            directory+=File.separator+dir;
            
        //Iteriamo sulla lista
        Iterator it = items.iterator();
        
        //Per ogni item, salviamo un file
        while(it.hasNext()) {
            FileItem item = (FileItem) it.next();
            if(!item.isFormField()) {
                //Creazione file lato server
                File tmp = new File(directory, item.getName());
                //Salvataggio dati
                item.write(tmp);
            }
        }
    }
    public File[] getFileList(String user, String dir) throws IOException {
        //Creazione del path
        String directory=root+File.separator+user;
        
        //se DIR è vuoto, ci troviamo nella directory root
        if (dir!=null && !dir.equals(""))
            directory+=File.separator+dir;
            File f=new File(directory);
        
        return f.listfile();
    }
}