001 package org.kuali.common.util.execute;
002
003 import java.io.File;
004 import java.util.List;
005
006 import org.kuali.common.util.Assert;
007 import org.kuali.common.util.LocationUtils;
008 import org.kuali.common.util.nullify.NullUtils;
009 import org.slf4j.Logger;
010 import org.slf4j.LoggerFactory;
011
012 public abstract class AbstractCopyLocationsExecutable implements Executable {
013
014 private static final Logger logger = LoggerFactory.getLogger(AbstractCopyLocationsExecutable.class);
015
016 String locationListing;
017 File directory;
018
019 protected abstract List<File> getFiles(List<String> locations);
020
021 @Override
022 public void execute() {
023 if (NullUtils.isNullOrNone(locationListing)) {
024 logger.info("Skipping execution. Location listing [{}]", locationListing);
025 return;
026 }
027 Assert.notNull(locationListing);
028 Assert.notNull(directory);
029 Assert.isTrue(LocationUtils.exists(locationListing));
030 logger.info("Copying [{}] -> [{}]", locationListing, LocationUtils.getCanonicalPath(directory));
031 List<String> locations = LocationUtils.getLocations(locationListing);
032 List<File> files = getFiles(locations);
033 LocationUtils.copyLocationsToFiles(locations, files);
034 logger.info("Copied {} files", locations.size());
035 }
036
037 public String getLocationListing() {
038 return locationListing;
039 }
040
041 public void setLocationListing(String locationListing) {
042 this.locationListing = locationListing;
043 }
044
045 public File getDirectory() {
046 return directory;
047 }
048
049 public void setDirectory(File directory) {
050 this.directory = directory;
051 }
052 }