[jboss-svn-commits] JBL Code SVN: r29527 - in labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads: src/main/java/org/jboss/labs/magnolia/modules/downloads and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Oct 2 08:29:39 EDT 2009


Author: jchocholacek
Date: 2009-10-02 08:29:39 -0400 (Fri, 02 Oct 2009)
New Revision: 29527

Modified:
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/.classpath
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/pom.xml
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/java/org/jboss/labs/magnolia/modules/downloads/DownloadsModule.java
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/META-INF/magnolia/jbossorg-downloads.xml
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-bootstrap/jbossorg-downloads/config.modules.jbossorg-downloads.xml
   labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-files/templates/jbossorg-modules/jbossorg-downloads/downloads.jsp
Log:
Added Google Analytics

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/.classpath
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/.classpath	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/.classpath	2009-10-02 12:29:39 UTC (rev 29527)
@@ -1,68 +1,72 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <classpath>
-  <classpathentry kind="src" path="src/main/java"/>
-  <classpathentry kind="src" path="src/main/resources" excluding="**/*.java"/>
-  <classpathentry kind="output" path="target/classes"/>
-  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
-  <classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7.jar" sourcepath="M2_REPO/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/commons-chain/commons-chain/1.1/commons-chain-1.1.jar" sourcepath="M2_REPO/commons-chain/commons-chain/1.1/commons-chain-1.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-digester/commons-digester/1.6/commons-digester-1.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/commons-pool/commons-pool/1.3/commons-pool-1.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar" sourcepath="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/servlets/com/cos/05Nov2002/cos-05Nov2002.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.1.1.0/derby-10.1.1.0.jar"/>
-  <classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.6/freemarker-2.3.6.jar"/>
-  <classpathentry kind="var" path="M2_REPO/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.0.1/jackrabbit-core-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS.jar" sourcepath="M2_REPO/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar" sourcepath="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/javax/jcr/jcr/1.0/jcr-1.0-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar" sourcepath="M2_REPO/jdom/jdom/1.0/jdom-1.0-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar" sourcepath="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/safehaus/jug/jug/2.0.0/jug-2.0.0-asl.jar"/>
-  <classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
-  <classpathentry kind="var" path="M2_REPO/lucene/lucene/1.4.3/lucene-1.4.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/info/magnolia/magnolia-core/3.6.3/magnolia-core-3.6.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/info/magnolia/magnolia-module-admininterface/3.6.3/magnolia-module-admininterface-3.6.3.jar"/>
-  <classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar" sourcepath="M2_REPO/javax/mail/mail/1.4/mail-1.4-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/openwfe/openwfe-applic/1.7.2pre15/openwfe-applic-1.7.2pre15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/org/openwfe/openwfe-jcr/1.7.2pre15/openwfe-jcr-1.7.2pre15.jar"/>
-  <classpathentry kind="var" path="M2_REPO/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS.jar" sourcepath="M2_REPO/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS-sources.jar">
-    <attributes>
-      <attribute value="jar:file:/home/jchochol/.m2/repository/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS-javadoc.jar!/" name="javadoc_location"/>
-    </attributes>
-  </classpathentry>
-  <classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0.1/slf4j-log4j12-1.0.1.jar"/>
-  <classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar" sourcepath="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar" sourcepath="M2_REPO/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1-sources.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar"/>
-  <classpathentry kind="var" path="M2_REPO/xerces/xmlParserAPIs/2.0.2/xmlParserAPIs-2.0.2.jar"/>
+	<classpathentry kind="src" path="src/main/java"/>
+	<classpathentry excluding="**/*.java" kind="src" path="src/main/resources"/>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+	<classpathentry kind="var" path="M2_REPO/javax/activation/activation/1.1/activation-1.1.jar" sourcepath="M2_REPO/javax/activation/activation/1.1/activation-1.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0.jar" sourcepath="M2_REPO/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/commons-beanutils/commons-beanutils/1.7.0/commons-beanutils-1.7.0-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7.jar" sourcepath="M2_REPO/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/commons-betwixt/commons-betwixt/0.7/commons-betwixt-0.7-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/commons-chain/commons-chain/1.1/commons-chain-1.1.jar" sourcepath="M2_REPO/commons-chain/commons-chain/1.1/commons-chain-1.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3.jar" sourcepath="M2_REPO/commons-codec/commons-codec/1.3/commons-codec-1.3-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/commons-codec/commons-codec/1.3/commons-codec-1.3-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2.jar" sourcepath="M2_REPO/commons-collections/commons-collections/3.2/commons-collections-3.2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-digester/commons-digester/1.6/commons-digester-1.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-discovery/commons-discovery/0.2/commons-discovery-0.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-fileupload/commons-fileupload/1.1.1/commons-fileupload-1.1.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-httpclient/commons-httpclient/3.0/commons-httpclient-3.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-io/commons-io/1.2/commons-io-1.2.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-lang/commons-lang/2.1/commons-lang-2.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-logging/commons-logging/1.0.3/commons-logging-1.0.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/commons-pool/commons-pool/1.3/commons-pool-1.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4.jar" sourcepath="M2_REPO/concurrent/concurrent/1.3.4/concurrent-1.3.4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/servlets/com/cos/05Nov2002/cos-05Nov2002.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/derby/derby/10.1.1.0/derby-10.1.1.0.jar"/>
+	<classpathentry kind="var" path="M2_REPO/freemarker/freemarker/2.3.6/freemarker-2.3.6.jar"/>
+	<classpathentry kind="var" path="M2_REPO/geronimo-spec/geronimo-spec-jta/1.0-M1/geronimo-spec-jta-1.0-M1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/apache/jackrabbit/jackrabbit-core/1.0.1/jackrabbit-core-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS.jar" sourcepath="M2_REPO/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/jaxen/jaxen/1.0-FCS/jaxen-1.0-FCS-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0.jar" sourcepath="M2_REPO/javax/jcr/jcr/1.0/jcr-1.0-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/javax/jcr/jcr/1.0/jcr-1.0-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/jdom/jdom/1.0/jdom-1.0.jar" sourcepath="M2_REPO/jdom/jdom/1.0/jdom-1.0-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2.jar" sourcepath="M2_REPO/javax/servlet/jstl/1.1.2/jstl-1.1.2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/safehaus/jug/jug/2.0.0/jug-2.0.0-asl.jar"/>
+	<classpathentry kind="var" path="M2_REPO/log4j/log4j/1.2.13/log4j-1.2.13.jar"/>
+	<classpathentry kind="var" path="M2_REPO/lucene/lucene/1.4.3/lucene-1.4.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/info/magnolia/magnolia-core/3.6.3/magnolia-core-3.6.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/info/magnolia/magnolia-module-admininterface/3.6.3/magnolia-module-admininterface-3.6.3.jar"/>
+	<classpathentry kind="var" path="M2_REPO/javax/mail/mail/1.4/mail-1.4.jar" sourcepath="M2_REPO/javax/mail/mail/1.4/mail-1.4-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/openwfe/openwfe-applic/1.7.2pre15/openwfe-applic-1.7.2pre15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/org/openwfe/openwfe-jcr/1.7.2pre15/openwfe-jcr-1.7.2pre15.jar"/>
+	<classpathentry kind="var" path="M2_REPO/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS.jar" sourcepath="M2_REPO/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS-sources.jar">
+		<attributes>
+			<attribute name="javadoc_location" value="jar:file:/home/jchochol/.m2/repository/saxpath/saxpath/1.0-FCS/saxpath-1.0-FCS-javadoc.jar!/"/>
+		</attributes>
+	</classpathentry>
+	<classpathentry kind="var" path="M2_REPO/org/slf4j/slf4j-log4j12/1.0.1/slf4j-log4j12-1.0.1.jar"/>
+	<classpathentry kind="var" path="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2.jar" sourcepath="M2_REPO/taglibs/standard/1.1.2/standard-1.1.2-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1.jar" sourcepath="M2_REPO/xerces/xercesImpl/2.8.1/xercesImpl-2.8.1-sources.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xml-apis/xml-apis/1.3.03/xml-apis-1.3.03.jar"/>
+	<classpathentry kind="var" path="M2_REPO/xerces/xmlParserAPIs/2.0.2/xmlParserAPIs-2.0.2.jar"/>
+	<classpathentry kind="lib" path="/home/jchochol/Devel/google/gdata/java/lib/gdata-analytics-2.0.jar"/>
+	<classpathentry kind="lib" path="/home/jchochol/Devel/google/gdata/java/lib/gdata-analytics-meta-2.0.jar"/>
+	<classpathentry kind="lib" path="/home/jchochol/Devel/google/gdata/java/lib/gdata-core-1.0.jar"/>
+	<classpathentry kind="output" path="target/classes"/>
 </classpath>

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/pom.xml	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/pom.xml	2009-10-02 12:29:39 UTC (rev 29527)
@@ -3,7 +3,7 @@
   <groupId>org.jboss.labs.magnolia.downloads</groupId>
   <artifactId>jbossorg-downloads</artifactId>
   <packaging>jar</packaging>
-  <version>1.0.2</version>
+  <version>1.0.3-SNAPSHOT</version>
   <name>JBoss.org Magnolia module for downloads</name>
   <url>http://www.jboss.org</url>
 
@@ -23,7 +23,33 @@
       <groupId>info.magnolia</groupId>
       <version>3.6.3</version>
     </dependency>
+    <dependency>
+    	<groupId>com.google.gdata</groupId>
+    	<artifactId>gdata-analytics</artifactId>
+    	<version>2.0</version>
+    </dependency>
+    <dependency>
+    	<groupId>com.google.gdata</groupId>
+    	<artifactId>gdata-analytics-meta</artifactId>
+    	<version>2.0</version>
+    </dependency>
+    <dependency>
+    	<groupId>com.google.gdata</groupId>
+    	<artifactId>gdata-core</artifactId>
+    	<version>1.0</version>
+    </dependency>
   </dependencies>
+  <build>
+  	<plugins>
+  		<plugin>
+  			<artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <source>1.5</source>
+          <target>1.5</target>
+        </configuration>
+  		</plugin>
+  	</plugins>
+  </build>
 
   <repositories>
     <repository>
@@ -33,5 +59,9 @@
         <enabled>false</enabled>
       </snapshots>
     </repository>
+    <repository>
+    	<id>labs-repo</id>
+    	<url>https://svn.jboss.org/repos/cms/prod/repo/maven2</url>
+    </repository>
   </repositories>
 </project>

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/java/org/jboss/labs/magnolia/modules/downloads/DownloadsModule.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/java/org/jboss/labs/magnolia/modules/downloads/DownloadsModule.java	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/java/org/jboss/labs/magnolia/modules/downloads/DownloadsModule.java	2009-10-02 12:29:39 UTC (rev 29527)
@@ -3,6 +3,9 @@
 import info.magnolia.cms.core.*;
 import info.magnolia.module.*;
 
+import java.net.URI;
+import java.util.*;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -16,9 +19,42 @@
  */
 public class DownloadsModule implements ModuleLifecycle {
     private static final Logger log = LoggerFactory.getLogger(DownloadsModule.class);
+    private static final String DEFAULT_PREFIX = "jbossorg-downloads";
+    private static final long DEFAULT_TIMEOUT = 360; //6 hours
 
     private Content configNode;
+    
+    // configuration parameters
+    private String gaLogin;
+    private String gaPassword;
+    private String prefix = DEFAULT_PREFIX;
+    private Long timeout = DEFAULT_TIMEOUT;
+    
+    private static DownloadsModule instance;
+    private static Map<String,Long> cache;
+    private static Long cacheTimestamp;
+    private static boolean refreshCache = false;
+    
+    public static DownloadsModule getInstance() {
+    	return instance;
+    }
+    
+    private void initializeCache() {
+    	GAUtil gautil = GAUtil.getInstance();
+    	cache = gautil.getDownloadCounts(gaLogin, gaPassword, "^/"+prefix+"/");
+    	refreshCache = false;
+    	cacheTimestamp = System.currentTimeMillis();
+    }
 
+    public Long getDownloadCount(String page) {
+    	synchronized (this) {
+    		// check cache timeout
+            if (refreshCache || (cacheTimestamp + (timeout * 60000)) < System.currentTimeMillis())
+          	  initializeCache();
+    	}
+    	return cache.get(page);
+    }
+    
     public Content getConfigNode() {
         return configNode;
     }
@@ -27,11 +63,43 @@
         this.configNode = configNode;
     }
 
-    public void start(ModuleLifecycleContext moduleLifecycleContext) {
+    public String getGaLogin() {
+		return gaLogin;
+	}
+
+	public void setGaLogin(String gaLogin) {
+		this.gaLogin = gaLogin;
+	}
+
+	public String getGaPassword() {
+		return gaPassword;
+	}
+
+	public void setGaPassword(String gaPassword) {
+		this.gaPassword = gaPassword;
+	}
+
+	public String getPrefix() {
+		return prefix;
+	}
+
+	public void setPrefix(String prefix) {
+		this.prefix = prefix;
+	}
+
+	public Long getTimeout() {
+		return timeout;
+	}
+
+	public void setTimeout(Long timeout) {
+		this.timeout = timeout;
+	}
+	
+	public void start(ModuleLifecycleContext moduleLifecycleContext) {
         try {
+          instance = this; // workaround to access module configuration;
           log.debug("Starting module initialization.");
-          // implement this if you need some startup action 
-          
+          refreshCache = true;
           log.debug("Module initialization finished.");
         } catch (Exception e) {
             log.error("Missing configuration for jbossorg-downloads. Module is not properly initialized");
@@ -40,4 +108,24 @@
 
     public void stop(ModuleLifecycleContext moduleLifecycleContext) {
     }
+    
+    private String getFilenameFromURI(String uri) {
+    	String filename = null;
+    	try {
+        	URI _uri = new URI(uri);
+        	String path = _uri.getPath();
+        	filename = path.substring(path.lastIndexOf("/")+1); 
+    	} catch (Exception ex) {
+    		log.debug("Error parsing uri '"+uri+"'.", ex);
+    	}
+    	return filename;
+    }
+    
+    public String getGAfileID(String uri) {
+    	String file = getFilenameFromURI(uri);
+    	if (file==null || file.length()==0)
+    		return null;
+    	return "/"+this.prefix+"/"+file;
+    }
+    
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/META-INF/magnolia/jbossorg-downloads.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/META-INF/magnolia/jbossorg-downloads.xml	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/META-INF/magnolia/jbossorg-downloads.xml	2009-10-02 12:29:39 UTC (rev 29527)
@@ -5,5 +5,5 @@
   <displayName>JBoss.org Magnolia module : jbossorg-downloads</displayName>
   <class>org.jboss.labs.magnolia.modules.downloads.DownloadsModule</class>
   <versionHandler>org.jboss.labs.magnolia.modules.downloads.DownloadsVersionHandler</versionHandler>
-  <version>1.0.2</version>
+  <version>1.0.3-SNAPSHOT</version>
 </module>

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-bootstrap/jbossorg-downloads/config.modules.jbossorg-downloads.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-bootstrap/jbossorg-downloads/config.modules.jbossorg-downloads.xml	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-bootstrap/jbossorg-downloads/config.modules.jbossorg-downloads.xml	2009-10-02 12:29:39 UTC (rev 29527)
@@ -13,6 +13,28 @@
   <sv:property sv:name="version" sv:type="String">
     <sv:value>1.0.0</sv:value>
   </sv:property>
+  
+    <sv:node sv:name="config">
+    <sv:property sv:name="jcr:primaryType" sv:type="Name">
+      <sv:value>mgnl:content</sv:value>
+    </sv:property>
+    <sv:property sv:name="jcr:mixinTypes" sv:type="Name">
+      <sv:value>mix:lockable</sv:value>
+    </sv:property>
+    <sv:property sv:name="gaLogin" sv:type="String">
+      <sv:value>type_your_GA_username_here</sv:value>
+    </sv:property>
+    <sv:property sv:name="gaPassword" sv:type="String">
+      <sv:value>type_your_password_here</sv:value>
+    </sv:property>
+    <sv:property sv:name="prefix" sv:type="String">
+      <sv:value>jbossorg-downloads</sv:value>
+    </sv:property>
+    <sv:property sv:name="timeout" sv:type="Long">
+      <sv:value>360</sv:value>
+    </sv:property>
+  </sv:node>
+  
   <sv:node sv:name="dialogs">
     <sv:property sv:name="jcr:primaryType" sv:type="Name">
       <sv:value>mgnl:content</sv:value>

Modified: labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-files/templates/jbossorg-modules/jbossorg-downloads/downloads.jsp
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-files/templates/jbossorg-modules/jbossorg-downloads/downloads.jsp	2009-10-01 19:45:22 UTC (rev 29526)
+++ labs/jbosslabs/labs-3.0-build/integration/mgnl-modules/jbossorg-downloads/src/main/resources/mgnl-files/templates/jbossorg-modules/jbossorg-downloads/downloads.jsp	2009-10-02 12:29:39 UTC (rev 29527)
@@ -14,6 +14,7 @@
 	<jsp:directive.page import="info.magnolia.cms.core.ItemType" />
 	<jsp:directive.page import="info.magnolia.cms.core.HierarchyManager" />
 	<jsp:directive.page import="info.magnolia.cms.link.LinkHelper"/>
+	<jsp:directive.page import="org.jboss.labs.magnolia.modules.downloads.*"/>
   
     <!-- blabla -->
   
@@ -29,6 +30,8 @@
     if (showReleaseDate) pageContext.setAttribute("showReleaseDate",true);
     if (showLicense) pageContext.setAttribute("showLicense",true);
     
+    DownloadsModule module = DownloadsModule.getInstance();
+    pageContext.setAttribute("module",module);
     ]]>
     </jsp:scriptlet>
     <h3>Downloads</h3>
@@ -116,6 +119,14 @@
         if (showSize) pageContext.setAttribute("SIZEdata", SIZEdata);
         if (showReleaseDate) pageContext.setAttribute("DATEdata", DATEdata);
         if (showLicense) pageContext.setAttribute("LICENSEdata", LICENSEdata);
+        
+        String gaFileID = module.getGAfileID(URLdata);
+        Long downloadCount = null;
+        if (gaFileID!=null) 
+        	downloadCount = module.getDownloadCount(gaFileID);
+        pageContext.setAttribute("DownloadCount", downloadCount!=null ? downloadCount : "N/A");
+        pageContext.setAttribute("gaFileID", gaFileID==null? "null" : "'"+gaFileID+"'");
+        
     ]]>    
     </jsp:scriptlet>
         <tr  class="${oddrow ? 'oddRow' : evenRow }">
@@ -124,7 +135,11 @@
           <c:if test="${showSize}"><td>${SIZEdata} MB</td></c:if>
           <c:if test="${showReleaseDate}"><td>${DATEdata}</td></c:if>
           <c:if test="${showLicense}"><td>${LICENSEdata}</td></c:if>
-          <td><a class="td-download" onclick="turnOnModal(this); return false;" href="${URLdata}">${TEXTdata}</a></td>
+          <td><a class="td-download" onclick="turnOnModal(this,${gaFileID}); return false;" href="${URLdata}">${TEXTdata}</a>
+            <cms:adminOnly>
+            <br /><small>Downloads<sup>*</sup>: <b>${DownloadCount}</b></small>
+            </cms:adminOnly>
+          </td>
         </tr>
     <jsp:scriptlet>
       }
@@ -133,5 +148,8 @@
     
       </tbody>
     </table>
+    <cms:adminOnly>
+    <div><small><sup>*</sup> - downloads counter is updated once a day</small></div>
+    </cms:adminOnly>
     
 </jsp:root>



More information about the jboss-svn-commits mailing list