You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/10/20 01:07:40 UTC

svn commit: r826863 - in /labs/magma/trunk/fragment-gallery-domain: ./ src/ src/main/ src/main/java/ src/main/java/org/ src/main/java/org/apache/ src/main/java/org/apache/magma/ src/main/java/org/apache/magma/domain/ src/main/java/org/apache/magma/doma...

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: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org