1 package org.kuali.common.util; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.util.ArrayList; 6 import java.util.Arrays; 7 import java.util.Collections; 8 import java.util.List; 9 10 import org.apache.commons.io.FileUtils; 11 import org.codehaus.plexus.util.StringUtils; 12 import org.slf4j.Logger; 13 import org.slf4j.LoggerFactory; 14 15 public class MetaInfUtils { 16 17 private static final Logger logger = LoggerFactory.getLogger(MetaInfUtils.class); 18 19 public static void scanAndCreateFiles(List<MetaInfContext> contexts) throws IOException { 20 for (MetaInfContext context : contexts) { 21 Assert.notNull(context.getBaseDir(), "baseDir is null"); 22 Assert.notNull(context.getOutputFile(), "outputFile is null"); 23 List<String> includes = context.getIncludes(); 24 List<String> excludes = context.getExcludes(); 25 logger.info("Examining - " + context.getBaseDir().getCanonicalPath()); 26 logger.info("Include - " + CollectionUtils.getSpaceSeparatedString(includes)); 27 logger.info("Exclude - " + CollectionUtils.getSpaceSeparatedString(excludes)); 28 SimpleScanner scanner = new SimpleScanner(context.getBaseDir(), includes, excludes); 29 List<File> files = scanner.getFiles(); 30 logger.info("Located " + files.size() + " files"); 31 List<String> locations = getLocations(context.getBaseDir(), files, context.getPrefix()); 32 if (context.isSort()) { 33 Collections.sort(locations); 34 } 35 logger.info("Creating " + context.getOutputFile().getCanonicalPath()); 36 FileUtils.writeLines(context.getOutputFile(), locations); 37 } 38 } 39 40 public static void scanAndCreateFile(MetaInfContext context) throws IOException { 41 scanAndCreateFiles(Arrays.asList(context)); 42 } 43 44 public static List<String> getLocations(File baseDir, List<File> files, String prefix) throws IOException { 45 List<String> locations = new ArrayList<String>(); 46 for (int i = 0; i < files.size(); i++) { 47 String location = getLocation(baseDir, files.get(i), prefix); 48 locations.add(location); 49 } 50 return locations; 51 } 52 53 public static String getLocation(File baseDir, File file, String prefix) throws IOException { 54 String dir = baseDir.getCanonicalPath(); 55 String path = file.getCanonicalPath(); 56 int pos = dir.length() + 1; 57 return prefix + StringUtils.substring(path, pos); 58 } 59 60 }