Author: amarkhel
Date: 2009-03-24 11:25:30 -0400 (Tue, 24 Mar 2009)
New Revision: 13137
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Image.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/MetaTag.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IImageAction.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ImageAction.java
trunk/test-applications/realworld2/ejb/src/main/resources/import.sql
Log:
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Image.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Image.java 2009-03-24
15:02:53 UTC (rev 13136)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Image.java 2009-03-24
15:25:30 UTC (rev 13137)
@@ -248,12 +248,21 @@
}
public String getMeta() {
- return meta;
+ StringBuilder s = new StringBuilder();
+ for(MetaTag tag: this.imageTags){
+ s.append(tag.getTag()+", ");
+ }
+ String string = s.toString();
+ return string.substring(0, string.length() - 2);
}
public void setMeta(String meta) {
this.meta = meta;
}
+
+ public String getMetaString(){
+ return meta;
+ }
public String getCameraModel() {
return cameraModel;
@@ -333,8 +342,26 @@
return this.equals(this.getAlbum().getCoveringImage());
}
- public void setCovering(Boolean covering) {
+ public void setCovering(boolean covering) {
this.covering = covering;
}
+
+ public boolean containTag(String s) {
+ for(MetaTag t : imageTags){
+ if(t.getTag().equals(s)){
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public MetaTag getTagByName(String s) {
+ for(MetaTag t : imageTags){
+ if(t.getTag().equals(s)){
+ return t;
+ }
+ }
+ return null;
+ }
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/MetaTag.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/MetaTag.java 2009-03-24
15:02:53 UTC (rev 13136)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/MetaTag.java 2009-03-24
15:25:30 UTC (rev 13137)
@@ -21,6 +21,7 @@
package org.richfaces.realworld.domain;
import java.io.Serializable;
+import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
@@ -54,7 +55,7 @@
private String tag;
@ManyToMany(mappedBy="imageTags")
- private List<Image> images;
+ private List<Image> images = new ArrayList<Image>();
public Long getId() {
return id;
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IImageAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IImageAction.java 2009-03-24
15:02:53 UTC (rev 13136)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IImageAction.java 2009-03-24
15:25:30 UTC (rev 13137)
@@ -45,4 +45,6 @@
public abstract List<MetaTag> popularTags();
+ public abstract List<MetaTag> getTagsLikeString(String suggest);
+
}
\ No newline at end of file
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ImageAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ImageAction.java 2009-03-24
15:02:53 UTC (rev 13136)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ImageAction.java 2009-03-24
15:25:30 UTC (rev 13137)
@@ -20,10 +20,14 @@
*/
package org.richfaces.realworld.service;
+import java.util.ArrayList;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
+import javax.persistence.NoResultException;
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
@@ -48,20 +52,29 @@
}
public void editImage(Image image, boolean isFlushNeeded) {
- /*image.setImageTags(null);
- String[] tokens = image.getMeta().split(",");
- for(String token:tokens){
- MetaTag t =(MetaTag) em.createQuery("from MetaTag t where t.tag
=:token").setParameter("token", token).getSingleResult();
- if(t != null){
- t.addImage(image);
- image.addMetaTag(t);
+ List<MetaTag> removals = new ArrayList<MetaTag>(image.getImageTags());
+ String[] tokens = image.getMetaString().split(",");
+ Set<String> toks = new HashSet<String>();
+ for(String s:tokens){
+ toks.add(s.trim());
+ }
+ for(String s:toks){
+ if(!image.containTag(s)){
+ MetaTag tag = getTagByName(s);
+ if(tag == null){
+ tag = new MetaTag();
+ tag.setTag(s);
+ }
+ image.addMetaTag(tag);
}else{
- MetaTag meta = new MetaTag();
- meta.setTag(token);
- t.addImage(image);
- image.addMetaTag(t);
+ MetaTag t = image.getTagByName(s);
+ removals.remove(t);
}
- }*/
+ }
+ for(MetaTag tag:removals){
+ image.removeMetaTag(tag);
+ tag.removeImage(image);
+ }
if(image.isCovering()){
if(!image.equals(image.getAlbum().getCoveringImage())){
image.getAlbum().setCoveringImage(image);
@@ -73,22 +86,6 @@
}
public void addImage(Image image, boolean isFlushNeeded) {
-/* String[] tokens = image.getMeta().split(",");
- for(String token:tokens){
- if(token.equals("")){
- continue;
- }
- MetaTag t =(MetaTag) em.createQuery("from MetaTag t where t.tag
=:token").setParameter("token", token).getSingleResult();
- if(t != null){
- t.addImage(image);
- image.addMetaTag(t);
- }else{
- MetaTag meta = new MetaTag();
- meta.setTag(token);
- t.addImage(image);
- image.addMetaTag(t);
- }
- }*/
em.persist(image);
image.getAlbum().addImage(image);
if(isFlushNeeded){
@@ -111,10 +108,20 @@
}
public MetaTag getTagByName(String tag) {
- return (MetaTag)em.createQuery("from MetaTag m where m.tag
=:tag").setParameter("tag", tag).getSingleResult();
+ MetaTag t;
+ try{
+ t = (MetaTag)em.createQuery("from MetaTag m where m.tag
=:tag").setParameter("tag", tag).getSingleResult();
+ }catch(NoResultException nre){
+ return null;
+ }
+ return t;
}
public List<MetaTag> popularTags() {
- return (List<MetaTag>)em.createQuery("from MetaTag m order by
count(m.images) desc").setMaxResults(20).getResultList();
+ return (List<MetaTag>)em.createQuery("select m from MetaTag
m").setMaxResults(20).getResultList();
}
+
+ public List<MetaTag> getTagsLikeString(String suggest) {
+ return (List<MetaTag>)em.createQuery("select m from MetaTag m where
lower(m.tag) like :tag").setParameter("tag", suggest +
"%").getResultList();
+ }
}
Modified: trunk/test-applications/realworld2/ejb/src/main/resources/import.sql
===================================================================
--- trunk/test-applications/realworld2/ejb/src/main/resources/import.sql 2009-03-24
15:02:53 UTC (rev 13136)
+++ trunk/test-applications/realworld2/ejb/src/main/resources/import.sql 2009-03-24
15:25:30 UTC (rev 13137)
@@ -65,7 +65,7 @@
---------------------------------------------------------------------
-- ALBUM - Building
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (1, 'Building', 'Building pictures', 2, 2, '2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (1, 'Building', 'Building pictures', 2, 3, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (1, 'Building');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (15, '1.jpg',
'Viking/1/1.jpg', 'Building - 1.jpg image', '2009-12-18', 1,
'Canon PowerShot SX110 IS', 1024, 1917, 768, '2009-12-01', true);
@@ -130,7 +130,7 @@
---------------------------------------------------------------------
-- ALBUM - Coasts
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (2, 'Coasts', 'Coasts pictures', 3, 3, '2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (2, 'Coasts', 'Coasts pictures', 3, 4, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (2, 'Coasts');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (30,
'203015.JPG', 'Noname/2/203015.JPG', 'Coasts - 203015.JPG image',
'2009-12-18', 2, 'Sony Alpha DSLR-A350', 1024, 1917, 768,
'2009-12-01', true);
@@ -194,7 +194,7 @@
---------------------------------------------------------------------
-- ALBUM - Flora
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (3, 'Flora', 'Flora pictures', 1, 4, '2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (3, 'Flora', 'Flora pictures', 1, 2, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (3, 'Flora');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (45,
'132000.JPG', 'amarkhel/3/132000.JPG', 'Flora - 132000.JPG image',
'2009-12-18', 3, 'Pentax Optio E40', 1024, 1917, 768,
'2009-12-01', true);
@@ -264,7 +264,7 @@
---------------------------------------------------------------------
-- ALBUM - Ices
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (4, 'Ices', 'Ices pictures', 2, 1, '2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (4, 'Ices', 'Ices pictures', 2, 3, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (4, 'Ices');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (60,
'184023.JPG', 'Viking/4/184023.JPG', 'Ices - 184023.JPG image',
'2009-12-18', 4, 'BBK DP810', 1024, 1917, 768, '2009-12-01',
true);
@@ -359,7 +359,7 @@
---------------------------------------------------------------------
-- ALBUM - Sport
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (5, 'Sport', 'Sport pictures', 3, 2, '2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (5, 'Sport', 'Sport pictures', 3, 4, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (5, 'Sport');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (80,
'23048.JPG', 'Noname/5/23048.JPG', 'Sport - 23048.JPG image',
'2009-12-18', 5, 'Canon PowerShot SX110 IS', 1024, 1917, 768,
'2009-12-01', true);
@@ -424,7 +424,7 @@
---------------------------------------------------------------------
-- ALBUM - Underwater
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (6, 'Underwater', 'Underwater pictures', 1, 3,
'2009-12-18');
+INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (6, 'Underwater', 'Underwater pictures', 1, 1,
'2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (6, 'Underwater');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (95,
'45000.JPG', 'amarkhel/6/45000.JPG', 'Underwater - 45000.JPG
image', '2009-12-18', 6, 'Sony Alpha DSLR-A350', 1024, 1917, 768,
'2009-12-01', true);