package org.limewire.ui.swing.util; import java.io.File; import java.util.Map; /** * This consumes a String template for describing how to save a file and returns a valid file path. * Some examples would be: * <ul> * <li></li> * <li><xmp><artist>/<album></xmp></li> * </ul> */ public class StoreSubDirectoryTemplateProcessor extends StoreTemplateProcessor { /** * Returns an output directory specified by <code>template</code> using * <code>outDir</code> as the base directory. Some sample templates are * <ul> * <li></li> * <li><xmp><artist></xmp></li> * <li><xmp><artist>/<album></xmp></li> * </ul> * Valid values for the keys of <code>substitutions</code> are * <ul> * <li>{@link #ARTIST_LABEL}</li> * <li>{@link #AlBUM_LABEL}</li> * </ul> * * @param template template to use to create the subfolder structure * @param substitutions List of real values to replace template names with * @param outDir subdirectory to save to below the template folders * @return the complete path to the directory to save the file to, including * any sub folders that may have been generated from the template * * @throws IllegalTemplateException if the template contains illegal characters */ public File getOutputDirectory(final String template, final Map<String,String> substitutions, final File outDir) throws IllegalTemplateException { if (template == null) return outDir; if (template.equals("")) return outDir; String subDirs = performSubstitution(template, substitutions); return new File(outDir, subDirs); } }