1 package net.sf.statcvs.pages.xml; 2 3 /** 4 * This is a mere copy of the LogXMLpagemaker class with few changes done 5 * */ 6 import java.util.ArrayList; 7 import java.util.Calendar; 8 import java.util.Collection; 9 import java.util.Collections; 10 import java.util.Date; 11 import java.util.GregorianCalendar; 12 import java.util.Iterator; 13 import java.util.List; 14 15 import net.sf.statcvs.model.Commit; 16 import net.sf.statcvs.model.SymbolicName; 17 import net.sf.statcvs.output.ReportConfig; 18 19 import org.jdom.Element; 20 21 public class LogXmlMaker { 22 private final static String[] MONTH_TWO_CHARACTERS = { "01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11", "12" }; 23 24 public static String getAnchor(final SymbolicName tag) { 25 return "tag-" + tag.getName(); 26 } 27 28 public static String getURL(final Date date) { 29 final Calendar calendar = new GregorianCalendar(); 30 calendar.setTime(date); 31 return getFileName(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH)) + ".html"; 32 } 33 34 private static String getFileName(final int year, final int month) { 35 return year + "-" + MONTH_TWO_CHARACTERS[month]; 36 } 37 38 private final ReportConfig config; 39 private final List commits = new ArrayList(); 40 41 /** 42 * Creates a new LogPageMaker. 43 * @param year The log page's year 44 * @param month The log page's month (0 for January) 45 * @param commits A list of commits; those not in the 46 * right month will be ignored 47 * @param outputFormat 48 */ 49 public LogXmlMaker(final ReportConfig config, final Collection commits) { 50 this.config = config; 51 final Iterator it = commits.iterator(); 52 while (it.hasNext()) { 53 final Commit commit = (Commit) it.next(); 54 this.commits.add(commit); 55 } 56 } 57 58 public Element toFile() { 59 Element lg = null; 60 if (!this.commits.isEmpty()) { 61 lg = new CommitListXml(this.commits, getTags(), true).renderCommitList(this.commits); 62 } 63 return lg; 64 } 65 66 private List getTags() { 67 final List tags = new ArrayList(); 68 final Calendar calendar = new GregorianCalendar(); 69 final Iterator it = this.config.getRepository().getSymbolicNames().iterator(); 70 while (it.hasNext()) { 71 final SymbolicName tag = (SymbolicName) it.next(); 72 calendar.setTime(tag.getDate()); 73 } 74 Collections.reverse(tags); 75 return tags; 76 } 77 }