View Javadoc

1   package org.kuali.common.util.execute;
2   
3   import java.io.File;
4   import java.util.List;
5   
6   import org.kuali.common.util.Assert;
7   import org.kuali.common.util.CollectionUtils;
8   import org.kuali.common.util.LocationUtils;
9   import org.kuali.common.util.nullify.NullUtils;
10  import org.slf4j.Logger;
11  import org.slf4j.LoggerFactory;
12  
13  public class CopyLocationsToDirectoryExecutable implements Executable {
14  
15  	private static final Logger logger = LoggerFactory.getLogger(CopyLocationsToDirectoryExecutable.class);
16  
17  	boolean addSequenceToFilenames = true;
18  	String locationListing;
19  	File directory;
20  	String encoding;
21  
22  	@Override
23  	public void execute() {
24  		if (NullUtils.isNullOrNone(locationListing)) {
25  			logger.info("Skipping execution.  Location listing [{}]", locationListing);
26  			return;
27  		}
28  		Assert.notNull(locationListing);
29  		Assert.notNull(directory);
30  		Assert.isTrue(LocationUtils.exists(locationListing));
31  		logger.info("Copying [{}] -> [{}]", locationListing, LocationUtils.getCanonicalPath(directory));
32  		List<String> locations = LocationUtils.getLocations(locationListing, encoding);
33  		List<String> filenames = LocationUtils.getFilenames(locations);
34  		if (addSequenceToFilenames) {
35  			filenames = CollectionUtils.getSequencedStrings(filenames);
36  		}
37  		List<File> files = LocationUtils.getFiles(directory, filenames);
38  		copyLocationsToFiles(locations, files, encoding);
39  		logger.info("Copied {} files", locations.size());
40  	}
41  
42  	protected void copyLocationsToFiles(List<String> locations, List<File> files, String encoding) {
43  		Assert.isTrue(locations.size() == files.size());
44  		for (int i = 0; i < locations.size(); i++) {
45  			String location = locations.get(i);
46  			File destination = files.get(i);
47  			LocationUtils.copyLocationToFile(location, destination, encoding);
48  		}
49  	}
50  
51  	public String getLocationListing() {
52  		return locationListing;
53  	}
54  
55  	public void setLocationListing(String locationListing) {
56  		this.locationListing = locationListing;
57  	}
58  
59  	public File getDirectory() {
60  		return directory;
61  	}
62  
63  	public void setDirectory(File directory) {
64  		this.directory = directory;
65  	}
66  
67  	public boolean isAddSequenceToFilenames() {
68  		return addSequenceToFilenames;
69  	}
70  
71  	public void setAddSequenceToFilenames(boolean addSequenceToFilenames) {
72  		this.addSequenceToFilenames = addSequenceToFilenames;
73  	}
74  
75  	public String getEncoding() {
76  		return encoding;
77  	}
78  
79  	public void setEncoding(String encoding) {
80  		this.encoding = encoding;
81  	}
82  }