Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright 1&1 Internet AG, http://www.1and1.org
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU Lesser General Public License as published by
   * the Free Software Foundation; either version 2 of the License,
   * or (at your option) any later version.
   *
   * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  * See the GNU Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public License
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
 package net.sf.beezle.sushi.fs;
 
 
 import java.util.List;
 
 public class Diff {
     private final boolean brief;
 	private final String lineSeparator;
 
     public Diff(boolean brief) {
     	this(brief..);
     }
     
     public Diff(boolean briefString lineSeparator) {
         this. = brief;
         this. = lineSeparator;
     }
 
     //-- scan directories for relevant files
     
     public List<Stringpaths(Node dirFilter filterthrows IOException {
     	List<Stringresult;
     	
     	result = new ArrayList<String>();
     	paths(dirfilterresult);
     	return result;
     }
     
     public void paths(Node dirFilter filterList<Stringresultthrows IOException {
     	String path;
     	
     	for (Node node : dir.find(filter)) {
     		path = node.getRelative(dir);
     		if (!result.contains(path)) {
     			result.add(path);
     		}
     	}
     }
 
     //-- diff
     
     public String directory(Node leftdirNode rightdirFilter filterthrows IOException {
     	List<Stringpaths;
     	
     	paths = paths(leftdirfilter);
     	paths(rightdirfilterpaths);
     	return directory(leftdirrightdirpaths);
     }
     
     public String directory(Node leftdirNode rightdirString ... pathsthrows IOException {
     	return directory(leftdirrightdir, Arrays.asList(paths));
     }
     
     public String directory(Node leftdirNode rightdirList<Stringpathsthrows IOException {
         StringBuilder result;
         Node left;
         Node right;
         
         result = new StringBuilder();
         leftdir.checkDirectory();
         rightdir.checkDirectory();
         for (String path : paths) {
             left = leftdir.join(path);
             right = rightdir.join(path);
             if (left.isDirectory()) {
                 if (right.isDirectory()) {
                     // ok
                 } else if (right.isFile()) {
                     throw new IOException("TODO");
                 } else {
                     if () {
                         header('A'pathresult);
                     } else {
                         // TODO
                     }
                 }
            } else if (right.isDirectory()) {
                header("A"pathresult);
            } else {
                file(leftrightpathresult);
            }
        }
        return result.toString();
    }
    public void file(Node leftNode cmpString relativeStringBuilder resultthrows IOException {
        if () {
            header(leftcmprelativeresult);
        } else {
            fileNormal(leftcmprelativeresult);
        }
    }
    
    public void fileNormal(Node leftNode rightString relativeStringBuilder resultthrows IOException {
        String str;
        
        if (!left.exists()) {
            right.checkFile();
            header("###"relativeresult);
            result.append(Strings.indent(right.readString(), "+ "));
        } else {
            str = net.sf.beezle.sushi.util.Diff.diff(left.readString(), right.readString());
            if (str.length() > 0) {
                header("###"relativeresult);
                result.append(str);
            }
        }
    }
    
    public void header(Node leftNode rightString relativeStringBuilder resultthrows IOException {
        if (!left.exists()) {
            right.checkFile();
            header('A'relativeresult);
        } else if (!right.exists()) {
            header('R'relativeresult);
        } else if (left.diff(right)) {
            header('M'relativeresult);
        } else if (left.getRoot().getFilesystem().getFeatures(). 
        		&& left.getMode() != right.getMode()) {
            header('m'relativeresult);
        } else {
            // nothing
        }
    }
    private void header(char nameString relativeStringBuilder result) {
        header(Character.toString(name), relativeresult);
    }
    private void header(String nameString relativeStringBuilder result) {
        result.append(name).append(' ').append(relative).append();
    }
New to GrepCode? Check out our FAQ X