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(); } } }