/* * 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 result = parcours (test); //em.close(); } public static List parcours (Task t) { task = t; parcoursSrc (new File (t.getSourceDirectory())); return parcoursDest(new File (t.getDestinationDirectory())); } private static List parcoursSrc (File current) { List result = new ArrayList (); File[] files = current.listFiles(); List 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() downlist = parcoursSrc(file); result.addAll(downlist); } } Collections.sort(result); return result; } private static List parcoursDest (File current) { List result = new ArrayList (); File[] files = (File[]) current.listFiles(); List 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 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(); } } }