Author: simoneg
Date: Mon Oct 19 23:07:39 2009
New Revision: 826863

URL: http://svn.apache.org/viewvc?rev=826863&view=rev
Log:
LABS-480 contributed fragment gallery

Added:
    labs/magma/trunk/fragment-gallery-domain/pom.xml
    labs/magma/trunk/fragment-gallery-domain/src/
    labs/magma/trunk/fragment-gallery-domain/src/main/
    labs/magma/trunk/fragment-gallery-domain/src/main/java/
    labs/magma/trunk/fragment-gallery-domain/src/main/java/org/
    labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/
    labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/Gallery.java
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/GalleryItem.java
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ResizeJob.java
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/StartGalleryJobs.aj
    
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ThumbnailsJob.java
    labs/magma/trunk/fragment-gallery-domain/src/main/resources/
    labs/magma/trunk/fragment-gallery-domain/src/test/
    labs/magma/trunk/fragment-gallery-domain/src/test/java/
    labs/magma/trunk/fragment-gallery-domain/src/test/resources/

Added: labs/magma/trunk/fragment-gallery-domain/pom.xml
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/pom.xml?rev=826863&view=auto
==============================================================================
--- labs/magma/trunk/fragment-gallery-domain/pom.xml (added)
+++ labs/magma/trunk/fragment-gallery-domain/pom.xml Mon Oct 19 23:07:39 2009
@@ -0,0 +1,45 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+  <parent>
+    <artifactId>magma-parent</artifactId>
+    <groupId>org.apache.magma</groupId>
+    <version>2</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.magma</groupId>
+  <artifactId>fragment-gallery-domain</artifactId>
+  <version>0.0.2-SNAPSHOT</version>
+  <packaging>magma</packaging>
+  <dependencies>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-beans-view</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-database</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-beans</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-i18n</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>foundation-jobs</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+               </dependency>
+               <dependency>
+                       <groupId>org.apache.magma</groupId>
+                       <artifactId>beans-image</artifactId>
+                       <version>0.0.2-SNAPSHOT</version>
+                       <type>magma</type>
+               </dependency>
+  </dependencies>
+</project>

Added: 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/Gallery.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/Gallery.java?rev=826863&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/Gallery.java
 (added)
+++ 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/Gallery.java
 Mon Oct 19 23:07:39 2009
@@ -0,0 +1,125 @@
+package org.apache.magma.domain.gallery;
+
+
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import javax.persistence.CascadeType;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.OneToMany;
+import javax.persistence.OrderBy;
+
+import org.apache.magma.basics.MagmaException;
+import org.apache.magma.beans.MagmaBean;
+import org.apache.magma.database.LogicallyNamed;
+import org.apache.magma.i18n.Format;
+import org.apache.magma.view.Listed;
+import org.apache.magma.view.Order;
+import org.apache.magma.view.View;
+
+
+...@entity
+...@magmabean
+public class Gallery implements LogicallyNamed{
+       
+       public static final Set<String> acceptExtensions = new 
HashSet<String>();
+       
+       static {
+               acceptExtensions.add(".jpg");
+               acceptExtensions.add(".jpeg");
+               acceptExtensions.add(".gif");
+               acceptExtensions.add(".png");
+       }
+       
+       private String title;
+       private String caption;
+       private Date date = new Date();
+       private List<GalleryItem> items = new ArrayList<GalleryItem>();
+       
+       @View
+       @Order(1)
+       @Listed
+       public String getTitle() {
+               return title;
+       }
+       public void setTitle(String title) {
+               this.title = title;
+       }
+       @View
+       @Order(2)
+       public String getCaption() {
+               return caption;
+       }
+       public void setCaption(String caption) {
+               this.caption = caption;
+       }
+       @View
+       @Order(3)
+       @Format(format="short,short")
+       public Date getDate() {
+               return date;
+       }
+       public void setDate(Date date) {
+               this.date = date;
+       }
+       @OneToMany(cascade=CascadeType.ALL)
+       @OrderBy("id")
+       public List<GalleryItem> getItems() {
+               return items;
+       }
+       public void setItems(List<GalleryItem> items) {
+               this.items = items;
+       }       
+       
+       public int fromFolder(String path) {
+               File f = new File(path);
+               if (!f.exists()) return 0;
+               File[] files = f.listFiles();
+               List<GalleryItem> acitems = getItems();
+               int added = 0;
+               for (File file : files) {
+                       if (acceptFileName(file.getName())) {
+                               boolean found = false;
+                               for (GalleryItem item : acitems) {
+                                       if (item.getFileName() != null && 
item.getFileName().equals(file.getName())) {
+                                               found = true;
+                                               break;
+                                       }
+                               }
+                               if (!found) {
+                                       GalleryItem gi = new GalleryItem();
+                                       gi.setFileName(file.getName());
+                                       gi.setGallery(this);
+                                       try {
+                                               gi.setImage(new 
FileInputStream(file));
+                                       } catch (FileNotFoundException e) {
+                                               // Should never happen
+                                               throw new MagmaException(e, 
"Error loading file {0}", file);
+                                       }
+                                       acitems.add(gi);
+                                       added++;
+                               }
+                       }
+               }
+               return added;
+       }
+       
+       public boolean acceptFileName(String fname) {
+               for (String ext : acceptExtensions) {
+                       if (fname.endsWith(ext)) return true;
+               }
+               return false;
+       }
+       public String computeLogicalName(){
+               return this.getTitle();
+       }
+}

Added: 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/GalleryItem.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/GalleryItem.java?rev=826863&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/GalleryItem.java
 (added)
+++ 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/GalleryItem.java
 Mon Oct 19 23:07:39 2009
@@ -0,0 +1,80 @@
+package org.apache.magma.domain.gallery;
+
+import java.io.InputStream;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+import org.apache.magma.database.MagPersistent;
+import org.apache.magma.view.Listed;
+import org.apache.magma.view.Order;
+import org.apache.magma.view.View;
+
+...@entity
+public class GalleryItem {
+       private String fileName;
+       private String imageResizeFormat;
+       private InputStream image;
+       private String thumbnailFormat;
+       private InputStream thumbnail;
+       private String caption;
+       private Gallery gallery;
+       
+       
+       @Order(1)
+       @Listed
+       public String getFileName(){
+               return fileName;                
+       }
+       public void setFileName(String fname){
+               this.fileName = fname;
+       }
+       @MagPersistent
+       @Column(length=10485760)
+       public InputStream getImage() {
+               return image;
+       }
+       public void setImage(InputStream image) {
+               this.image = image;
+       }
+               
+       @View
+       @Order(3)
+       public String getCaption() {
+               return caption;
+       }
+       public void setCaption(String caption) {
+               this.caption = caption;
+       }
+       @ManyToOne
+       public Gallery getGallery(){
+               return gallery;
+       }
+       public void setGallery(Gallery gallery){
+               this.gallery = gallery;
+       }
+
+       @MagPersistent
+       @Column(length=10485760)
+       public InputStream getThumbnail() {
+               return thumbnail;
+       }
+       public void setThumbnail(InputStream thumbnail) {
+               this.thumbnail = thumbnail;
+       }
+       public String getThumbnailFormat() {
+               return thumbnailFormat;
+       }
+       public void setThumbnailFormat(String thumbnailFormat) {
+               this.thumbnailFormat = thumbnailFormat;
+       }
+       public String getImageResizeFormat() {
+               return imageResizeFormat;
+       }
+       public void setImageResizeFormat(String imageResizeFormat) {
+               this.imageResizeFormat = imageResizeFormat;
+       }
+}

Added: 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ResizeJob.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ResizeJob.java?rev=826863&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ResizeJob.java
 (added)
+++ 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ResizeJob.java
 Mon Oct 19 23:07:39 2009
@@ -0,0 +1,47 @@
+package org.apache.magma.domain.gallery;
+
+import java.util.List;
+
+import org.apache.magma.bean.image.ThumbnailMaker;
+import org.apache.magma.database.Database;
+import org.apache.magma.jobs.Job;
+import org.apache.magma.jobs.Report;
+import org.apache.magma.settings.Settings;
+
+public class ResizeJob implements Job {
+
+       private Report report = new Report();
+       
+       public void run() {
+               report.started();
+               
+               String fmt = Settings.get("magma.gallery.format");
+               if (fmt == null) {
+                       report.finished();
+                       return;
+               }
+               ThumbnailMaker maker = new ThumbnailMaker(fmt);
+               
+               Database db = new Database();
+               List<GalleryItem> missing = db.query(GalleryItem.class, 0, 20, 
"WHERE x.imageResizeFormat is null or (x.imageResizeFormat<>?1 AND 
x.imageResizeFormat<>?2)", fmt, "error");
+               //report.setTotal(missing.size());
+               for (GalleryItem item : missing) {
+                       try {
+                               report.setState("Resizing for item " + 
item.getId());
+                               
item.setImage(maker.scaleImage(item.getImage()));
+                               item.setImageResizeFormat(fmt);
+                               db.save(item);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                               item.setImageResizeFormat("error");
+                               db.save(item);
+                       }
+               }
+               report.finished();
+       }
+
+       public void setReport(Report report) {
+               this.report = report;
+       }
+
+}

Added: 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/StartGalleryJobs.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/StartGalleryJobs.aj?rev=826863&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/StartGalleryJobs.aj
 (added)
+++ 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/StartGalleryJobs.aj
 Mon Oct 19 23:07:39 2009
@@ -0,0 +1,15 @@
+package org.apache.magma.domain.gallery;
+
+import org.apache.magma.basics.startup.Startup;
+import org.apache.magma.jobs.Every;
+import org.apache.magma.jobs.Scheduler;
+
+public aspect StartGalleryJobs {
+
+       public void Startup.setupGalleryJobs() {
+               Scheduler sched = new Scheduler();
+               sched.schedule("Make thumbnails", new ThumbnailsJob(), 
Every.MINUTE);
+               sched.schedule("Resize gallery", new ResizeJob(), Every.MINUTE);
+       }
+       
+}

Added: 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ThumbnailsJob.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ThumbnailsJob.java?rev=826863&view=auto
==============================================================================
--- 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ThumbnailsJob.java
 (added)
+++ 
labs/magma/trunk/fragment-gallery-domain/src/main/java/org/apache/magma/domain/gallery/ThumbnailsJob.java
 Mon Oct 19 23:07:39 2009
@@ -0,0 +1,44 @@
+package org.apache.magma.domain.gallery;
+
+import java.util.List;
+
+import org.apache.magma.bean.image.ThumbnailMaker;
+import org.apache.magma.database.Database;
+import org.apache.magma.jobs.Job;
+import org.apache.magma.jobs.Report;
+import org.apache.magma.settings.Settings;
+
+public class ThumbnailsJob implements Job {
+
+       private Report report = new Report();
+       
+       public void run() {
+               report.started();
+               
+               String fmt = Settings.get("magma.gallery.thumbnails");
+               if (fmt == null) fmt = "jpg 80x80";
+               ThumbnailMaker maker = new ThumbnailMaker(fmt);
+               
+               Database db = new Database();
+               List<GalleryItem> missing = db.query(GalleryItem.class, 0, 20, 
"WHERE x.thumbnailFormat is null or (x.thumbnailFormat<>?1 AND 
x.thumbnailFormat<>?2)", fmt, "error");
+               //report.setTotal(missing.size());
+               for (GalleryItem item : missing) {
+                       try {
+                               report.setState("Generating thumbnail for item 
" + item.getId());
+                               
item.setThumbnail(maker.scaleImage(item.getImage()));
+                               item.setThumbnailFormat(fmt);
+                               db.save(item);
+                       } catch (Exception e) {
+                               e.printStackTrace();
+                               item.setThumbnailFormat("error");
+                               db.save(item);
+                       }
+               }
+               report.finished();
+       }
+
+       public void setReport(Report report) {
+               this.report = report;
+       }
+
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to