Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /* ************************************************************************
  #
  #  DivConq
  #
  #  http://divconq.com/
  #
  #  Copyright:
  #    Copyright 2014 eTimeline, LLC. All rights reserved.
  #
 #  License:
 #    See the license.txt file in the project's top-level directory for details.
 #
 #  Authors:
 #    * Andy White
 #
 ************************************************************************ */
 package divconq.tool;
 
 import java.io.File;
 
 
 
 public class SyncNPack {
     static public void main(String[] args) {
 		/*
 		Path dpath1 = Paths.get("D:\\dev\\divconq\\builds\\ICANNWorkflowEngine\\lib\\abc.jar");
 		Path dpath2 = Paths.get("D:\\dev\\divconq\\builds", "ICANNWorkflowEngine\\lib\\abc.jar");
 		
 		boolean exists1 = Files.exists(dpath1);
 		
 		System.out.println("1: " + exists1);
 		
 		boolean exists2 = Files.exists(dpath2);
 		
 		System.out.println("2: " + exists2);
 		
 		AttributeView bs = Files.getFileAttributeView(dpath1, BasicFileAttributeView.class);
 		
 		System.out.println("3: " + bs.name());
 		
 		System.exit(0);
 		*/
 		
 		if (args.length == 0) {
 			..println("Settings folder parameter missing!");
 			System.exit(1);
 			return;
 		}
 		
 		String setfolder = args[0];
 		
 		..println("Settings folder: " + setfolder);
 		
 		File sfolder = new File(setfolder);
 		
 		FuncResult<XElementconfig = XmlReader.loadFile(new File(sfolder"config.xml"), true);
 		
 		if (config.hasErrors()) {
 			..println("Skipping config file because of parse errors: " + config.getMessage());
 			return;
 		}
 		
 		XElement croot = config.getResult();
 		
 		String orgfolder = croot.getAttribute("Origin");
 		
 		..println("----------------------------------------------------");
 		..println("   Master Source: " + orgfolder);
 		..println("----------------------------------------------------");
 		
 		final Path orgpath = Paths.get(orgfolder);
 		
 		for (File f : sfolder.listFiles()) {
 			if (!f.isFile() || !f.getName().endsWith(".xml") || "config.xml".equals(f.getName()))
 				continue;
 			
 			FuncResult<XElementsettings = XmlReader.loadFile(ftrue);
 			
 			if (settings.hasErrors()) {
 				..println("Skipping file because of parse errors: " + f.getName());
 				continue;
 			}
 			
 			XElement root = settings.getResult();
 			
 			..println("----------------------------------------------------");
			..println("   Starting Dest: " + root.getAttribute("Title"));
			..println("----------------------------------------------------");
			String buildpath = root.getAttribute("Path");
			if (StringUtil.isEmpty(buildpath)) {
				..println("Skipping file because missing build path: " + f.getName());
				continue;
			}
			final Path dpath = Paths.get(buildpath);
			// do file/folder sync
			XElement sync = root.find("Sync");
			if (sync != null) {
				for (final XElement op : sync.selectAll("*")) {
					if ("Folder".equals(op.getName())) {
						..println("Sync folder: " + op.getAttribute("Path"));
						final Collection<XElementexceptions = op.selectAll("Except");
						try {
							Files.walkFileTree(Paths.get(orgfolderop.getAttribute("Path")), new SimpleFileVisitor<Path>() {
								public FileVisitResult visitFile(Path sfileBasicFileAttributes attrsthrows IOException {
									// check for exceptions, do not copy an exception
									for (XElement xel : exceptions) {
										if (sfile.endsWith(Paths.get(xel.getAttribute("File"))))
									}
									// calculate the destination path
									Path dfile = dpath.resolve(sfile.subpath(orgpath.getNameCount(), sfile.getNameCount()));
									boolean exists = Files.exists(dfile);
									if (!exists) {
										..println("MISSING - copy over - Source file: " + sfile + " - Dest file: " + dfile);
									}
									else if (attrs.size() != Files.size(dfile)) {
										..println("SIZE    - copy over - Source file: " + sfile + " - Dest file: " + dfile);
									}
									else {
										String h1 = HashUtil.getSha1(Files.newInputStream(sfile));
										String h2 = HashUtil.getSha1(Files.newInputStream(dfile));
										if (!h1.equals(h2)) 									
											..println("HASH    - copy over - Source file: " + sfile + " - Dest file: " + dfile);
									}
								}
							});
						}
						catch (IOException x) {
						}
					}
					else if ("File".equals(op.getName())) {
						//System.out.println("Sync file: " + op.getAttribute("Path"));
					}
				}
			}
			// TODO pack
		}
	}
New to GrepCode? Check out our FAQ X