You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2006/10/17 23:15:49 UTC

svn commit: r465056 - in /incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks: GeneratePlanetTask.java PlanetRefreshEntriesTask.java StaticPlanetModel.java

Author: snoopdave
Date: Tue Oct 17 14:15:47 2006
New Revision: 465056

URL: http://svn.apache.org/viewvc?view=rev&rev=465056
Log:
Starting to fixup up the static file generation task

Added:
    incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/GeneratePlanetTask.java
      - copied, changed from r464917, incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/PlanetRefreshEntriesTask.java
    incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/StaticPlanetModel.java
Removed:
    incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/PlanetRefreshEntriesTask.java

Copied: incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/GeneratePlanetTask.java (from r464917, incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/PlanetRefreshEntriesTask.java)
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/GeneratePlanetTask.java?view=diff&rev=465056&p1=incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/PlanetRefreshEntriesTask.java&r1=464917&p2=incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/GeneratePlanetTask.java&r2=465056
==============================================================================
--- incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/PlanetRefreshEntriesTask.java (original)
+++ incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/GeneratePlanetTask.java Tue Oct 17 14:15:47 2006
@@ -18,27 +18,78 @@
 
 package org.apache.roller.planet.tasks;
 
+import java.io.File;
+import java.util.Date;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.roller.RollerException;
 import org.apache.roller.planet.model.Planet;
 import org.apache.roller.planet.model.PlanetFactory;
+import org.apache.roller.planet.model.PlanetManager;
+import org.apache.roller.util.Utilities;
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.texen.Generator;
 
 
 /**
- * Run the Planet Roller refresh-entries method to fetch and parse newsfeeds.
+ * Fetch feeds as needed and regenerate Planet pages based.
  */
-public class PlanetRefreshEntriesTask implements Runnable {    
-    private static Log logger = LogFactory.getLog(PlanetRefreshEntriesTask.class);
-        
+public class GeneratePlanetTask implements Runnable {
+    private static Log logger = LogFactory.getLog(GeneratePlanetTask.class);
+    
     public void run() {
-        try {
+        try {            
+            // Update all feeds in planet
             Planet planet = PlanetFactory.getPlanet();
             planet.getPlanetManager().refreshEntries();
             planet.flush();
             planet.release();
+            
+            // Run the planet generation templates
+            generatePlanet(); 
+            
         } catch (RollerException e) {
             logger.error("ERROR refreshing entries", e);
         }
     }
+    
+    
+    public void generatePlanet() throws RollerException {
+        try {
+            Planet planet = PlanetFactory.getPlanet();
+            PlanetManager planetManager = planet.getPlanetManager();
+            
+            // Fire up Velocity engine, point it at templates and init
+            VelocityEngine engine = new VelocityEngine();
+            engine.setProperty("resource.loader","file");
+            engine.setProperty("file.resource.loader.class",
+                    "org.apache.velocity.runtime.resource.loader.FileResourceLoader");
+            engine.setProperty("file.resource.loader.path",
+                    planetManager.getConfiguration().getTemplateDir());
+            engine.init();
+            
+            // Build context with current date 
+            VelocityContext context = new VelocityContext();
+            context.put("date", new Date());
+            context.put("utilities", new Utilities());
+            context.put("planet", new StaticPlanetModel());
+            
+            File outputDir = new File(planetManager.getConfiguration().getOutputDir());
+            if (!outputDir.exists()) outputDir.mkdirs();
+            
+            Generator generator = Generator.getInstance();
+            generator.setVelocityEngine(engine);
+            generator.setOutputEncoding("utf-8");
+            generator.setInputEncoding("utf-8");
+            generator.setOutputPath(planetManager.getConfiguration().getOutputDir());
+            generator.setTemplatePath(planetManager.getConfiguration().getTemplateDir());
+            generator.parse(planetManager.getConfiguration().getMainPage(), context);
+            generator.shutdown();
+            
+        } catch (Exception e) {
+            e.printStackTrace();
+            throw new RollerException("Writing planet files",e);
+        }
+    }    
 }

Added: incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/StaticPlanetModel.java
URL: http://svn.apache.org/viewvc/incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/StaticPlanetModel.java?view=auto&rev=465056
==============================================================================
--- incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/StaticPlanetModel.java (added)
+++ incubator/roller/trunk/sandbox/planetroller/src/org/apache/roller/planet/tasks/StaticPlanetModel.java Tue Oct 17 14:15:47 2006
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+package org.apache.roller.planet.tasks;
+
+import java.util.Iterator;
+import java.util.List;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.RollerException;
+import org.apache.roller.planet.model.Planet;
+import org.apache.roller.planet.model.PlanetFactory;
+import org.apache.roller.planet.model.PlanetManager;
+import org.apache.roller.planet.pojos.PlanetConfigData;
+import org.apache.roller.planet.pojos.PlanetGroupData;
+import org.apache.roller.planet.pojos.PlanetSubscriptionData;
+
+/**
+ * Simple planet model for use static planet generation, designed
+ * to be duck-type compatible with old PlanetTool templates.
+ */
+public class StaticPlanetModel {
+    private static Log logger =
+            LogFactory.getFactory().getInstance(StaticPlanetModel.class);
+    PlanetManager planetManager = null;
+    
+    public StaticPlanetModel() throws RollerException {
+        Planet planet = PlanetFactory.getPlanet();
+        planetManager = planet.getPlanetManager();
+    }
+        
+    public PlanetSubscriptionData getSubscription(
+            String feedUrl) throws Exception {
+        return planetManager.getSubscription(feedUrl); 
+    }
+    
+    public PlanetConfigData getConfiguration() throws RollerException {
+        return planetManager.getConfiguration();
+    }
+    
+    public List getGroupHandles() throws RollerException {
+        return planetManager.getGroupHandles();
+    }
+    
+    public List getGroups() throws RollerException {
+        return planetManager.getGroups();
+    }
+    
+    public PlanetGroupData getGroup(String handle) throws RollerException {
+        return planetManager.getGroup(handle);
+    }
+    
+    public List getAggregation(
+            PlanetGroupData group, int maxEntries) throws RollerException {
+        return planetManager.getAggregation(group, 0, -1);
+    }
+    
+    
+    public Iterator getAllSubscriptions() throws RollerException {
+        return planetManager.getAllSubscriptions();
+    }
+    
+    public int getSubscriptionCount() throws RollerException {
+        return planetManager.getSubscriptionCount();
+    } 
+}
+