Author: vsiveton Date: Sun May 17 13:55:53 2009 New Revision: 775652 URL: http://svn.apache.org/viewvc?rev=775652&view=rev Log: o added date support for interpolation o updated test case and doc
Modified: maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java maven/plugins/trunk/maven-pdf-plugin/src/site/apt/examples/filtering.apt maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/PdfMojoTest.java maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/src/site/pdf_filtering.xml Modified: maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java?rev=775652&r1=775651&r2=775652&view=diff ============================================================================== --- maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java (original) +++ maven/plugins/trunk/maven-pdf-plugin/src/main/java/org/apache/maven/plugins/pdf/PdfMojo.java Sun May 17 13:55:53 2009 @@ -24,13 +24,16 @@ import java.io.Reader; import java.io.StringReader; import java.io.Writer; +import java.text.SimpleDateFormat; import java.util.Calendar; +import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Properties; +import java.util.TimeZone; import org.apache.maven.doxia.docrenderer.DocumentRenderer; import org.apache.maven.doxia.docrenderer.DocumentRendererException; @@ -481,6 +484,8 @@ return null; } } ); + final DateBean bean = new DateBean(); + interpolator.addValueSource( new ObjectBasedValueSource( bean ) ); reader = ReaderFactory.newXmlReader( docDescriptor ); @@ -509,4 +514,100 @@ IOUtil.close( reader ); } } + + /** + * Simple bean to allow date interpolation in the document descriptor, i.e. + * <pre> + * ${year} = 2009 + * ${date} = 2009-05-17 + * </pre> + */ + public static class DateBean + { + private static final TimeZone UTC_TIME_ZONE = TimeZone.getTimeZone( "UTC" ); + + /** + * @return the current year. + */ + public String getYear() + { + return new SimpleDateFormat( "yyyy", Locale.US ).format( new Date() ); + } + + /** + * @return the current month. + */ + public String getMonth() + { + return new SimpleDateFormat( "MM", Locale.US ).format( new Date() ); + } + + /** + * @return the current day. + */ + public String getDay() + { + return new SimpleDateFormat( "dd", Locale.US ).format( new Date() ); + } + + /** + * @return the current hour. + */ + public String getHour() + { + return new SimpleDateFormat( "HH", Locale.US ).format( new Date() ); + } + + /** + * @return the current minute. + */ + public String getMinute() + { + return new SimpleDateFormat( "mm", Locale.US ).format( new Date() ); + } + + /** + * @return the current second. + */ + public String getSecond() + { + return new SimpleDateFormat( "ss", Locale.US ).format( new Date() ); + } + + /** + * @return the current millisecond. + */ + public String getMillisecond() + { + return new SimpleDateFormat( "SSS", Locale.US ).format( new Date() ); + } + + /** + * @return the current date using the ISO 8601 format, i.e. <code>yyyy-MM-dd</code>. + */ + public String getDate() + { + return new SimpleDateFormat( "yyyy-MM-dd", Locale.US ).format( new Date() ); + } + + /** + * @return the current time using the ISO 8601 format and UTC time zone, i.e. <code>HH:mm:ss'Z'</code>. + */ + public String getTime() + { + SimpleDateFormat sdf = new SimpleDateFormat( "HH:mm:ss'Z'", Locale.US ); + sdf.setTimeZone( UTC_TIME_ZONE ); + return sdf.format( new Date() ); + } + + /** + * @return the current datetime using the ISO 8601 format, i.e. <code>yyyy-MM-dd'T'HH:mm:ss'Z'</code>. + */ + public String getDateTime() + { + SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.US ); + sdf.setTimeZone( UTC_TIME_ZONE ); + return sdf.format( new Date() ); + } + } } Modified: maven/plugins/trunk/maven-pdf-plugin/src/site/apt/examples/filtering.apt URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/site/apt/examples/filtering.apt?rev=775652&r1=775651&r2=775652&view=diff ============================================================================== --- maven/plugins/trunk/maven-pdf-plugin/src/site/apt/examples/filtering.apt (original) +++ maven/plugins/trunk/maven-pdf-plugin/src/site/apt/examples/filtering.apt Sun May 17 13:55:53 2009 @@ -3,7 +3,7 @@ ------ Vincent Siveton ------ - 2009-05-16 + 2009-05-17 ------ ~~ Licensed to the Apache Software Foundation (ASF) under one @@ -28,7 +28,24 @@ Filtering Document Descriptor - The document descriptor (aka src/site/pdf.xml) could be filtered by System properties or POM properties. + The document descriptor (aka src/site/pdf.xml) could be filtered by System properties, Maven project properties and + some date properties. + +*----------------------------------+--------------+ +|| Expression Samples || Description +*----------------------------------+--------------+ +| $\{JAVA_HOME\} | The JAVA_HOME environment value. +*----------------------------------+--------------+ +| $\{project.name\} | The project name defined in \<name/\> tag in the pom.xml. +*----------------------------------+--------------+ +| $\{project.developers[0].email\} | The email of the first developed defined in \<developers/\> tag in the pom.xml. +*----------------------------------+--------------+ +| $\{date} $\{time\} $\{dateTime\} | The current date/time/dateTime displayed in ISO-8601 format, i.e. yyyy-MM-dd. +*----------------------------------+--------------+ +| $\{year} $\{month\} $\{hour\}... | The single date or time informations. +*----------------------------------+--------------+ + +Example For instance, if you have defined the following pom.xml and pdf.xml: Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/PdfMojoTest.java URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/PdfMojoTest.java?rev=775652&r1=775651&r2=775652&view=diff ============================================================================== --- maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/PdfMojoTest.java (original) +++ maven/plugins/trunk/maven-pdf-plugin/src/test/java/org/apache/maven/plugins/pdf/PdfMojoTest.java Sun May 17 13:55:53 2009 @@ -140,6 +140,8 @@ } // ${project.developers[0].email} assertTrue( foContent.indexOf( "vsive...@apache.org ltheu...@apache.org" ) > 0 ); + // ${date} + assertTrue( foContent.indexOf( new PdfMojo.DateBean().getDate() ) > 0 ); } } \ No newline at end of file Modified: maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/src/site/pdf_filtering.xml URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/src/site/pdf_filtering.xml?rev=775652&r1=775651&r2=775652&view=diff ============================================================================== --- maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/src/site/pdf_filtering.xml (original) +++ maven/plugins/trunk/maven-pdf-plugin/src/test/resources/unit/pdf/src/site/pdf_filtering.xml Sun May 17 13:55:53 2009 @@ -27,7 +27,7 @@ outputName="maven-pdf-plugin-doc-${project.version}"> <meta> - <title>User guide in ${pdf.language} of ${pom.name} version ${pom.version} for ${M2_HOME}</title> + <title>User guide in ${pdf.language} of ${pom.name} version ${pom.version} for ${M2_HOME} ${date}</title> <author>${project.developers[0].email} ${project.developers[1].email}</author> </meta>