All pastes #586595 Raw Edit

Miscellany

public java v1 · immutable
#586595 ·published 2007-06-23 23:18 UTC
rendered paste body
/* * parcours.java * * Created on 17 juin 2007, 20:24 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package jsaveme.func;import java.io.File;import java.io.IOException;import java.util.*;//import java.io.*;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import jsaveme.db.entities.Filelisting;import jsaveme.db.entities.Task;/** * @author javapractices.com * @author Alex Wong */public final class Parcours {    private final static boolean unix = (System.getProperty("os.name").compareTo("Windows")!=0 ? true : false);        private static EntityManagerFactory emf = Persistence.createEntityManagerFactory("JSaveMePU");    private static Task task = null;    /**     * Demonstrate use.     */    public Parcours() {            }        public static void main (String[] args) {       Task test = new Task(0);       test.setSourceDirectory("/home/remi/Desktop/TEST JSAVEME/SOURCE");       test.setDestinationDirectory("/home/remi/Desktop/TEST JSAVEME/DESTINATION");              List<File> result = parcours (test);       //em.close();    }    public static List<File> parcours (Task t) {        task = t;        parcoursSrc (new File (t.getSourceDirectory()));        return parcoursDest(new File (t.getDestinationDirectory()));    }        private static List<File> parcoursSrc (File current) {        List<File> result = new ArrayList ();        File[] files = current.listFiles();        List<File> ls = Arrays.asList(files);        Iterator li = ls.listIterator();        File file = null;                while (li.hasNext()) {            file = (File)li.next();                        // PREFIXLESSPATH            String findPath = file.getPath().replaceFirst(task.getSourceDirectory(), "");                        // STDOUT            System.out.println(file.getPath()+"\t"+task.getSourceDirectory()+findPath);                        // QUEL MODIFICATION VA ETRE EFFECTUER LORS DE LA SYNCRO SRC -> DEST            File destfile = new File(task.getDestinationDirectory()+findPath);            String updateAction = "no";            if (destfile.exists()) {                if (destfile.lastModified()<file.lastModified()) {                    if (!destfile.isDirectory())                        updateAction = "cp";                }            } else {                if (!file.isDirectory())                                        updateAction = "cp";                else                    updateAction = "md";            }            if (updateAction.compareTo("no")!=0) {                Filelisting filedb = new Filelisting();                filedb.setIdtask(task.getId());                filedb.setFilename(findPath);                filedb.setFiledate(Long.toString(file.lastModified()));                filedb.setFiletype((file.isDirectory() ? 'd' : 'f'));                filedb.setUpdateaction(updateAction);                persist(filedb);            }            //...                        if (file.isDirectory() && !isLink(file)) {                List<File> downlist = parcoursSrc(file);                result.addAll(downlist);            }        }        Collections.sort(result);        return result;    }        private static List<File> parcoursDest (File current) {        List<File> result = new ArrayList ();        File[] files = (File[]) current.listFiles();        List<File> ls = Arrays.asList(files);        Iterator li = ls.listIterator();        File file = null;                while (li.hasNext()) {            file = (File)li.next();                        // PREFIXLESSPATH            String findPath = file.getPath().replaceFirst(task.getDestinationDirectory(), "");                        // STDOUT            System.out.println(file.getPath()+"\t"+task.getSourceDirectory()+findPath);                        // QUEL MODIFICATION VA ETRE EFFECTUER LORS DE LA SYNCRO SRC -> DEST            File srcfile = new File(task.getSourceDirectory()+findPath);            String updateAction = "no";            if (!srcfile.exists())                updateAction = "rm";            if (updateAction.compareTo("no")!=0) {                Filelisting filedb = new Filelisting();                filedb.setIdtask(task.getId());                filedb.setFilename(findPath);                filedb.setFiledate(Long.toString(file.lastModified()));                filedb.setFiletype((file.isDirectory() ? 'd' : 'f'));                filedb.setUpdateaction(updateAction);                persist(filedb);            }            //...            if (file.isDirectory() && !isLink(file)) {                List<File> downlist = parcoursDest(file);                result.addAll(downlist);            }        }        Collections.sort(result);        return result;    }        private static boolean isLink (File file) {        boolean islink = false;        if (file.exists()) {            try {                String can = file.getCanonicalPath();                String abs = file.getAbsolutePath();                islink = (!abs.equals(can)? true : false);            } catch (IOException ex) {                ex.printStackTrace();            }        }        return islink;    }        // PERSISTENCE    private static void persist(Object object) {        EntityManager em = emf.createEntityManager();        em.getTransaction().begin();        try {            em.persist(object);            em.getTransaction().commit();        } catch (Exception e) {            e.printStackTrace();            em.getTransaction().rollback();        } finally {            em.close();        }    }  }