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    }