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]