View Javadoc
1 /* 2 * Created on 2003-5-23 17:06:28 by joel guo 3 * 4 * vTradEx Information Technology Inc. 5 */ 6 package com.cyclops.albumbuilder; 7 import java.io.File; 8 import java.io.FileWriter; 9 import java.util.ArrayList; 10 import java.util.Collection; 11 import java.util.Iterator; 12 import java.util.List; 13 import java.util.Set; 14 import java.util.TreeMap; 15 16 import org.apache.commons.lang.StringUtils; 17 import org.apache.stratum.lifecycle.Executable; 18 import org.apache.velocity.VelocityContext; 19 import org.apache.velocity.app.Velocity; 20 /*** 21 * Add description for this class <font color="red">HERE</font>! 22 * <big><font face="黑体">惩前毖后,治病救人</font></big> 23 * 24 * @author <a href="mailto:joeblack.guo@vtradex.com">joel guo</a> 25 * @company <a href="http://www.vtradex.com">vTradEx</a> 26 * @since 2003-5-23 17:06:28 27 */ 28 public class GalleryIndexGenerator 29 extends AlbumBuilderComponent 30 implements Executable { 31 private static final String SEPARATOR = "/"; 32 private boolean copySource; 33 private String encoding; 34 private String indexTemplate; 35 private int thumbnailColumns; 36 private String xdocsDirectory; 37 private String imageLink; 38 private String imageLinkPrefix; 39 /*** Override method execute() of super class 40 * @see org.apache.stratum.lifecycle.Executable#execute() 41 */ 42 public void execute() throws Exception { 43 Set paths = getSourceRepository().keySet(); 44 for (Iterator i = paths.iterator(); i.hasNext();) { 45 String relativePath = (String) i.next(); 46 String targetFile = 47 xdocsDirectory + relativePath + "thumbnail_index.xml"; 48 File file = new File(targetFile); 49 if (!file.getParentFile().isDirectory()) { 50 file.getParentFile().mkdirs(); 51 logger.info("Create directory " + file.getParentFile()); 52 } 53 FileWriter fw = new FileWriter(targetFile); 54 VelocityContext ctx = new VelocityContext(); 55 ctx.put("images", getChildResources(relativePath)); 56 ctx.put("parents", getParentPackages(relativePath)); 57 ctx.put("packageName", getPackageName(relativePath)); 58 ctx.put( 59 "isRoot", 60 new Boolean(StringUtils.equals(relativePath, SEPARATOR))); 61 ctx.put("children", getChildPackages(relativePath)); 62 ctx.put("imageLink", imageLink); 63 ctx.put("imageLinkPrefix", imageLinkPrefix); 64 ctx.put("columns", new Integer(thumbnailColumns)); 65 Velocity.mergeTemplate(indexTemplate, encoding, ctx, fw); 66 fw.flush(); 67 fw.close(); 68 logger.debug("Generate gallery index xdoc file " + targetFile); 69 } 70 } 71 private List getChildPackages(String relativePath) { 72 List tm = new ArrayList(); 73 int thisDepth = StringUtils.countMatches(relativePath, SEPARATOR); 74 for (Iterator i = getSourceRepository().keySet().iterator(); 75 i.hasNext(); 76 ) { 77 String packagePath = (String) i.next(); 78 if (!packagePath.startsWith(relativePath)) { 79 continue; 80 } 81 int depth = StringUtils.countMatches(packagePath, SEPARATOR); 82 if (depth != thisDepth + 1) { 83 continue; 84 } 85 String packageName = getPackageName(packagePath); 86 tm.add(packageName); 87 } 88 return tm; 89 } 90 private List getChildResources(String relativePath) { 91 List images = new ArrayList(); 92 for (Iterator i = 93 ((Collection) getSourceRepository().get(relativePath)).iterator(); 94 i.hasNext(); 95 ) { 96 SourceResource res = (SourceResource) i.next(); 97 if (res != null) { 98 images.add(res); 99 } 100 } 101 return images; 102 } 103 private String getPackageName(String path) { 104 String[] parts = StringUtils.split(path, SEPARATOR); 105 if (parts.length == 0) { 106 return "ROOT"; 107 } else { 108 return parts[parts.length - 1]; 109 } 110 } 111 private List getParentPackages(String relativePath) { 112 TreeMap tm = new TreeMap(); 113 for (Iterator i = getSourceRepository().keySet().iterator(); 114 i.hasNext(); 115 ) { 116 String packagePath = (String) i.next(); 117 if (!relativePath.startsWith(packagePath)) { 118 continue; 119 } 120 if (StringUtils.equals(relativePath, packagePath)) { 121 continue; 122 } 123 String[] parts = StringUtils.split(packagePath, SEPARATOR); 124 if (parts.length == 0) { 125 continue; 126 } 127 String packageName = parts[parts.length - 1]; 128 tm.put(packagePath, packageName); 129 } 130 return new ArrayList(tm.values()); 131 } 132 /*** Override method initialize() of super class 133 * @see org.apache.stratum.lifecycle.Initializable#initialize() 134 */ 135 public void initialize() { 136 super.initialize(); 137 xdocsDirectory = 138 getConfiguration().getString( 139 "target.xdocsdir", 140 "target/generated-xdocs/album"); 141 indexTemplate = 142 getConfiguration().getString( 143 "generation.index", 144 "gallery_index.vm"); 145 encoding = 146 getConfiguration().getString( 147 "generation.index.encoding", 148 System.getProperty("file.encoding", "8859_1")); 149 copySource = 150 getConfiguration().getBoolean("generation.copysource", false); 151 thumbnailColumns = 152 getConfiguration().getInt("generation.thumbnail.columns", 5); 153 imageLink = 154 getConfiguration().getString("generation.imagelink", "direct"); 155 imageLinkPrefix = 156 getConfiguration().getString("generation.imagelink.prefix", ""); 157 } 158 }

This page was automatically generated by Maven