Author: amarkhel
Date: 2009-03-27 07:34:20 -0400 (Fri, 27 Mar 2009)
New Revision: 13250
Added:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/FlushStrategy.java
trunk/test-applications/realworld2/ejb/src/main/resources/realworld.properties
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Album.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Comment.java
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/domain/Shelf.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/User.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/AlbumAction.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/Constants.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IAlbumAction.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/IShelfAction.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IUserAction.java
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/ShelfAction.java
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/UserAction.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/Album.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Album.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Album.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -54,8 +54,6 @@
*
* @author Andrey Markhel
*/
-@NamedQueries({
- @NamedQuery(name = "album-byAlbumNameAndLogin", query = "from Album a
where a.name=:albumName and a.owner.login=:login")})
@Entity
@Name("album")
@Table(name = "albums")
@@ -72,18 +70,13 @@
@Column(length = 255, nullable = false)
@NotNull
@NotEmpty
- @Length(min = 3)
+ @Length(min = 3, max = 50)
//TODO nick - add maxLength validation here and everywhere?
private String name;
@Column(length = 1024)
private String description;
- @ManyToOne(fetch = FetchType.LAZY)
- @JoinColumn(name = "ALBUM_USER_ID", referencedColumnName =
"USER_ID")
- //TODO nick - add @NotNull?
- private User owner;
-
@OneToMany(cascade = CascadeType.ALL, mappedBy = "album")
@org.hibernate.annotations.Fetch(org.hibernate.annotations.FetchMode.SUBSELECT)
private List<Image> images = new ArrayList<Image>();
@@ -100,10 +93,6 @@
@Transient
private List<Image> unvisitedImages = new ArrayList<Image>();
- @Transient
- //TODO nick == unvisitedImages.size
- private Long countUnvisitedImages;
-
@OneToOne(cascade = CascadeType.ALL, optional = true)
private Image coveringImage;
@@ -179,7 +168,7 @@
}
if (image.getAlbum() != null && !this.equals(image.getAlbum())) {
//TODO nick - use removeImage()
- image.getAlbum().getImages().remove(image);
+ image.getAlbum().removeImage(image);
}
image.setAlbum(this);
images.add(image);
@@ -196,8 +185,12 @@
throw new IllegalArgumentException("Null image");
}
//TODO nick - check if image is in the current album
- image.setAlbum(null);
- images.remove(image);
+ if(image.getAlbum().equals(this)){
+ image.setAlbum(null);
+ images.remove(image);
+ }else{
+ throw new IllegalArgumentException("This album not contain this
image!");
+ }
}
/**
@@ -207,30 +200,20 @@
*/
public int getCountImages() {
return this.getImages() != null ? this.getImages().size() : 0;
-
}
public User getOwner() {
- return owner;
+ return getShelf().getOwner();
}
public List<Image> getImages() {
return images;
}
- public void setOwner(User owner) {
- this.owner = owner;
- }
-
public int getIndex(Image image) {
//TODO nick - use indexOf
//TODO nick - check images == null?
- for (int i = 0; i < this.images.size(); i++) {
- if (this.images.get(i).equals(image)) {
- return i;
- }
- }
- return -1;
+ return this.images.indexOf(image);
}
public Image getCoveringImage() {
@@ -265,12 +248,9 @@
}
public Long getCountUnvisitedImages() {
- return countUnvisitedImages;
+ return new Long(unvisitedImages.size());
}
- public void setCountUnvisitedImages(Long countUnvisitedImages) {
- this.countUnvisitedImages = countUnvisitedImages;
- }
public List<Image> getUnvisitedImages() {
return unvisitedImages;
@@ -283,7 +263,6 @@
public void visitImage(Image image) {
if (unvisitedImages.contains(image)) {
unvisitedImages.remove(image);
- countUnvisitedImages--;
}
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Comment.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Comment.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Comment.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -54,7 +54,7 @@
@Temporal(TemporalType.TIMESTAMP)
private Date date;
- @ManyToOne
+ @ManyToOne(optional=false)
@JoinColumn(name = "IMAGE_COMMENT_ID", referencedColumnName =
"IMAGE_ID")
//TODO nick - add @NotNull
private Image image;
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-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Image.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -89,7 +89,7 @@
private String name;
@Transient
//TODO nick - remove this
- private Boolean covering;
+ private boolean covering;
@Column(length = 1024, nullable = false)
@NotNull
@@ -237,8 +237,12 @@
throw new IllegalArgumentException("Null comment");
}
//TODO nick - check that comments belongs to "this" image
- comment.setImage(null);
- comments.remove(comment);
+ if(comment.getImage().equals(this)){
+ comment.setImage(null);
+ comments.remove(comment);
+ }else{
+ throw new IllegalArgumentException("Comment not belongs to this
image");
+ }
}
public List<Comment> getComments() {
@@ -263,9 +267,7 @@
if (s.length() >= 2) {
s.delete(s.length() - 2, s.length());
}
-
- String string = s.toString();
- return string;
+ return s.toString();
}
public void setMeta(String meta) {
@@ -358,15 +360,6 @@
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)) {
@@ -376,7 +369,6 @@
return null;
}
-
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
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-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/MetaTag.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -51,7 +51,7 @@
@Column(length = 255, nullable = false)
@NotNull
@NotEmpty
- @Length(min = 3)
+ @Length(min = 3, max=50)
//TODO nick - meta tags should not contain ',', add constraint
private String tag;
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Shelf.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Shelf.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/Shelf.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -29,7 +29,7 @@
@Entity
@Name("shelf")
@Scope(ScopeType.CONVERSATION)
-@Table(name = "shelfs")
+@Table(name = "shelves")
//TODO nick - rename table to "shelves"
//TODO nick - should we store this in conversation?
public class Shelf implements Serializable {
@@ -44,7 +44,7 @@
@Column(length = 255, nullable = false)
@NotNull
@NotEmpty
- @Length(min = 3)
+ @Length(min = 3, max = 50)
private String name;
@Column(length = 1024)
@@ -65,10 +65,6 @@
@Temporal(TemporalType.TIMESTAMP)
private Date created;
- @Transient
- //TODO nick - == unvisitedImages.size()
- private Long countUnvisitedImages;
-
/**
* Getter for property id
*
@@ -131,9 +127,10 @@
public void addAlbum(Album album) {
if (album == null)
throw new IllegalArgumentException("Null child!");
- if (album.getShelf() != null)
- //TODO nick - use removeChildAlbum()
- album.getShelf().getAlbums().remove(album);
+ if (album.getShelf() != null){
+ //TODO nick - use removeChildAlbum()
+ album.getShelf().removeChildAlbum(album);
+ }
album.setShelf(this);
albums.add(album);
}
@@ -142,13 +139,16 @@
if (album == null)
throw new IllegalArgumentException("Null child!");
//TODO nick - check that shelf is "this"
- album.setShelf(null);
- albums.remove(album);
+ if(album.getShelf().equals(this)){
+ album.setShelf(null);
+ albums.remove(album);
+ }else{
+ throw new IllegalArgumentException("This Shelf not contain this
album!");
+ }
}
public int getCountAlbums() {
return this.getAlbums() != null ? this.getAlbums().size() : 0;
-
}
public int getCountImages() {
@@ -184,13 +184,9 @@
}
public Long getCountUnvisitedImages() {
- return countUnvisitedImages;
+ return new Long(unvisitedImages.size());
}
- public void setCountUnvisitedImages(Long countUnvisitedImages) {
- this.countUnvisitedImages = countUnvisitedImages;
- }
-
public List<Image> getUnvisitedImages() {
return unvisitedImages;
}
@@ -202,7 +198,6 @@
public void visitImage(Image image) {
if (unvisitedImages.contains(image)) {
unvisitedImages.remove(image);
- countUnvisitedImages--;
}
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/User.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/User.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/domain/User.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -28,7 +28,6 @@
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
-import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
@@ -45,6 +44,7 @@
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Pattern;
import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Role;
import org.jboss.seam.annotations.Scope;
@@ -67,6 +67,7 @@
@Entity
@Scope(ScopeType.CONVERSATION)
@Name("user")
+@AutoCreate
@Role(name="selectedUser", scope=ScopeType.CONVERSATION)
@Table(name = "Users", uniqueConstraints = {
@UniqueConstraint(columnNames = "login"),
@@ -121,18 +122,8 @@
@NotNull
private Sex sex;
- //TODO nick - this should be persistent, right?
- private Boolean doNotShowMail;
-
- private Boolean informAboutNews;
-
private Boolean hasAvatar;
- @OneToMany(mappedBy = "owner", cascade = { CascadeType.ALL}, fetch =
FetchType.LAZY)
-
@org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.EXTRA)
- @org.hibernate.annotations.OrderBy(clause = "NAME asc")
- private List<Album> albums = new ArrayList<Album>();
-
@OneToMany(mappedBy = "owner", cascade = { CascadeType.ALL})
@org.hibernate.annotations.LazyCollection(org.hibernate.annotations.LazyCollectionOption.EXTRA)
@org.hibernate.annotations.OrderBy(clause = "NAME asc")
@@ -194,31 +185,8 @@
public Long getId() {
return id;
}
-
- public List<Album> getAlbums() {
- return albums;
- }
//---------------------------Business methods
-
- //TODO nick - do we really need this? we can just aggregate data from all albums
- public void addAlbum(Album album) {
- if (album == null) {
- throw new IllegalArgumentException("Null album!");
- }
- //TODO nick - remove album from the previous user?
- album.setOwner(this);
- albums.add(album);
- }
-
- public void removeAlbum(Album album) {
- if (album == null) {
- throw new IllegalArgumentException("Null album");
- }
- //TODO nick - check if owner is current user?
- album.setOwner(null);
- albums.remove(album);
- }
public void addShelf(Shelf shelf) {
if (shelf == null) {
@@ -234,12 +202,12 @@
throw new IllegalArgumentException("Null shelf");
}
//TODO nick - check if owner is current user?
- shelf.setOwner(null);
- //TODO nick - why to remove albums?
- for(Album a : shelf.getAlbums()){
- removeAlbum(a);
+ if(shelf.getOwner().equals(this)){
+ shelf.setOwner(null);
+ shelfs.remove(shelf);
+ }else{
+ throw new IllegalArgumentException("Shelf not belonfs to this
user!");
}
- shelfs.remove(shelf);
}
public String getConfirmPassword() {
@@ -270,22 +238,6 @@
this.sex = sex;
}
- public Boolean getDoNotShowMail() {
- return doNotShowMail;
- }
-
- public void setDoNotShowMail(Boolean doNotShowMail) {
- this.doNotShowMail = doNotShowMail;
- }
-
- public Boolean getInformAboutNews() {
- return informAboutNews;
- }
-
- public void setInformAboutNews(Boolean informAboutNews) {
- this.informAboutNews = informAboutNews;
- }
-
public Boolean getHasAvatar() {
return hasAvatar;
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/AlbumAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/AlbumAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/AlbumAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -44,46 +44,31 @@
@In(value="entityManager")
EntityManager em;
- //TODO nick - do we need @Out here?
- @In @Out
- private User user;
+ @In FlushStrategy flushStrategy;
- public void addAlbum(Album album, boolean isFlushNeeded) {
+ public void addAlbum(Album album) {
em.persist(album);
- user.addAlbum(album);
album.getShelf().addAlbum(album);
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
- public void deleteAlbum(Album album, boolean isFlushNeeded){
+ public void deleteAlbum(Album album){
if(album.getShelf()!=null){
album.getShelf().removeChildAlbum(album);
- album.getShelf().setCountUnvisitedImages(null);
album.getShelf().setUnvisitedImages(null);
- }else{
- user.removeAlbum(album);
}
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
- public void editAlbum(Album album, boolean isFlushNeeded){
- if(isFlushNeeded){
+ public void editAlbum(Album album){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
-
- public void flush(){
- em.flush();
- }
-
- public Long getCountUnvisitedImages(Album album){
- //TODO nick - use Shelf/Album.unvisitedImages
- return (Long)em.createQuery("select count(i) from Image i where i.album=:album and
i.created >= :date").setParameter("album",
album).setParameter("date", getDate()).getSingleResult();
- }
public List<Image> getUnvisitedImages(Album album){
//TODO nick - use Shelf/Album.unvisitedImages
@@ -92,9 +77,9 @@
private Date getDate() {
//TODO nick - use Calendar.getInstance()
- Calendar c = new GregorianCalendar();
+ Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -15);
//TODO nick - return c.getTime()
- return c.getInstance().getTime();
+ return c.getTime();
}
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/Constants.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/Constants.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/Constants.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -28,16 +28,10 @@
public static final String CLEAR_ERROR_EVENT = "clearErrorEvent";
public static final String ADD_ERROR_EVENT = "addErrorEvent";
- public static final String UPLOAD_ROOT = "uploadRoot";
public static final String SLASH = "/";
public static final String DOT = ".";
- public static final String JPG = "JPG";
public static final String ADD_IMAGE_EVENT = "addImage";
-
- public static final int KB = 1024;
- public static final String FILE_UPLOAD_CLEAR_EVENT = "fileUploadClear";
- public static final String SHOW_FILE_UPLOAD_EVENT = "showFileUpload";
public static final String JPEG = "jpeg";
public static final String MAIN_OUTCOME = "main";
@@ -48,52 +42,17 @@
public static final String ADMIN_ROLE = "admin";
public static final String GUEST_ROLE = "guest";
public static final String UPDATE_MAIN_AREA_EVENT = "updateMainArea";
-
- public static final String TREE_ID = "tree";
public static final String CLEAR_EDITOR_EVENT = "clearEditor";
-
- public static final String HTTPS = "https://";
- public static final String HTTP = "http://";
- public static final String HTTP_1_0 = "HTTP/1.0";
- public static final String HTTP_1_1 = "HTTP/1.1";
- public static final String PICTURE_FOLDER_PATH = "/picture/";
- public static final String MINI_FORMAT = "_mini";
- public static final String MEDIUM_FORMAT = "_medium";
- public static String URL = "URL";
- public static String HTML = "HTML";
- public static String FORUM = "Forum";
- public static String HTML_PATTERN = "<a href='%s'><img
src='%s' border='0'></a>";
- public static String FORUM_PATTERN = "[URL=%s][IMG]%s[/IMG][/URL]";
- public static final String ERROR_PAGE = "/error.seam";
- public static final String IMAGE_JPG = "image/jpg";
- public static final String PATH_PARAMETER = "path";
- public static final String FILE_MANAGER = "fileManager";
- public static final String ENTITY_MANAGER = "entityManager";
- public static final String USER_ID = "userId";
public static final int INITIAL_DELAY = 4000;
public static final int DELAY = 3000;
- public static final String ALBUM_NODE_TYPE = "album";
- public static final String USER_MANAGER = "userManager";
- public static final String USER = "user";
- public static final String TREE_ROOT_NODE_TYPE = "treeRoot";
- public static final String DATASCROLLER_ID = "mainform:imageScroller";
- public static final String DATASCROLLER2_ID =
"mainform:slideShowImageScroller";
-
public static final String USER_EXIST_QUERY = "user-exist";
public static final String USER_LOGIN_QUERY = "user-login";
- public static final String PERCENT = "%";
public static final String LOGIN_PARAMETER = "login";
public static final String PASSWORD_PARAMETER = "password";
public static final String USERNAME_PARAMETER = "username";
- public static final String IMAGE_CAMERA_QUERY = "image-camera";
- public static final String USER_USER_QUERY = "user-user";
-
- public static final String ALBUM_BY_ALBUM_NAME_AND_LOGIN_QUERY =
"album-byAlbumNameAndLogin";
- public static final String ALBUM_NAME_PARAMETER = "albumName";
-
private Constants(){
}
Copied:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/FlushStrategy.java
(from rev 13202,
trunk/test-applications/realworld2/web/src/main/java/org/richfaces/realworld/util/FlushStrategy.java)
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/FlushStrategy.java
(rev 0)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/FlushStrategy.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -0,0 +1,51 @@
+package org.richfaces.realworld.service;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.util.Properties;
+
+import org.jboss.seam.ScopeType;
+import org.jboss.seam.annotations.Name;
+import org.jboss.seam.annotations.Scope;
+import org.jboss.seam.annotations.Startup;
+
+@Name("flushStrategy")
+(a)Scope(ScopeType.APPLICATION)
+@Startup
+public class FlushStrategy {
+
+ public FlushStrategy(){
+ getStrategy();
+ }
+ private static String strategy;
+
+ public String getStrategy() {
+ if(strategy == null){
+ try { InputStream in = this.getClass().getClassLoader()
+ .getResourceAsStream("realworld.properties");
+ if(in != null){
+ Properties p = new Properties();
+ p.load(in);
+ strategy = p.getProperty("flushStrategy");
+ }else{
+ strategy = "database";
+ }
+ } catch (FileNotFoundException e) {
+ strategy = "database";
+ } catch (IOException e) {
+ strategy = "database";
+ }
+ }
+ return strategy;
+ }
+
+
+ //TODO nick - make this a static method
+ public boolean isDatabaseStoreStrategy(){
+ return getStrategy().equals("database");
+ }
+}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IAlbumAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IAlbumAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IAlbumAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -30,17 +30,12 @@
@Local
public interface IAlbumAction {
- public abstract void addAlbum(Album album, boolean isFlushNeeded);
+ public abstract void addAlbum(Album album);
- public void deleteAlbum(Album album, boolean isFlushNeeded);
+ public void deleteAlbum(Album album);
- public void editAlbum(Album album, boolean isFlushNeeded);
+ public void editAlbum(Album album);
- //TODO nick - explicit flush doesn't seem like a good solution
- public abstract void flush();
-
- public Long getCountUnvisitedImages(Album album);
-
public List<Image> getUnvisitedImages(Album album);
}
\ No newline at end of file
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-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IImageAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -33,20 +33,20 @@
//TODO nick - remove isFlushNeeded
- public abstract void deleteImage(Image image, boolean isFlushNeeded);
+ public abstract void deleteImage(Image image);
- public abstract void editImage(Image image, boolean isFlushNeeded);
+ public abstract void editImage(Image image);
- public abstract void addImage(Image image, boolean isFlushNeeded);
+ public abstract void addImage(Image image);
- public void deleteComment(Comment comment, boolean isFlushNeeded);
+ public void deleteComment(Comment comment);
- public void addComment(Comment comment, boolean isFlushNeeded);
+ public void addComment(Comment comment);
public abstract MetaTag getTagByName(String tag);
//TODO nick - rename to getPopularTags()
- public abstract List<MetaTag> popularTags();
+ public abstract List<MetaTag> getPopularTags();
public abstract List<MetaTag> getTagsLikeString(String suggest);
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IShelfAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IShelfAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IShelfAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -12,15 +12,13 @@
@Local
public interface IShelfAction {
- public abstract void addShelf(Shelf shelf, boolean isFlushNeeded);
+ public abstract void addShelf(Shelf shelf);
- public void deleteShelf(Shelf shelf, boolean isFlushNeeded);
+ public void deleteShelf(Shelf shelf);
- public void editShelf(Shelf shelf, boolean isFlushNeeded);
+ public void editShelf(Shelf shelf);
public List<Shelf> getShelfs(User user);
-
- public Long getCountUnvisitedImages(Shelf shelf);
public List<Image> getUnvisitedImages(Shelf shelf);
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IUserAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IUserAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/IUserAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -31,11 +31,10 @@
@Local
public interface IUserAction {
public User login(String username, String password);
- public void register(User user, boolean isFlushNeeded);
+ public void register(User user);
public boolean isUserExist(String login);
- public void updateUser(User user, boolean isFlushNeeded);
- public void resetUser(User user, boolean isFlushNeeded);
- public void loginAnonymous();
+ public User updateUser();
+ public User resetUser();
public Long countAlbums(User user);
public Long countImages(User user);
public Long countSharedImages(User u);
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-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ImageAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -43,18 +43,20 @@
@In(value = "entityManager")
EntityManager em;
+
+ @In FlushStrategy flushStrategy;
- public void deleteImage(Image image, boolean isFlushNeeded) {
+ public void deleteImage(Image image) {
if(image.getAlbum().getCoveringImage().equals(image)){
image.getAlbum().setCoveringImage(null);
}
image.getAlbum().removeImage(image);
- if (isFlushNeeded) {
+ if (flushStrategy.isDatabaseStoreStrategy()) {
em.flush();
}
}
- public void editImage(Image image, boolean isFlushNeeded) {
+ public void editImage(Image image) {
List<MetaTag> removals = new
ArrayList<MetaTag>(image.getImageTags());
String[] tokens = image.getMetaString().split(",");
Set<String> toks = new HashSet<String>();
@@ -62,17 +64,14 @@
toks.add(s.trim());
}
for (String s : toks) {
- if (!image.containTag(s)) {
- MetaTag tag = getTagByName(s);
- if (tag == null) {
+ MetaTag t = image.getTagByName(s);
+ if (t != null) {
//TODO nick - how about concurrent creation of meta tags with the same
name?
- tag = new MetaTag();
- tag.setTag(s);
- }
- image.addMetaTag(tag);
- } else {
- MetaTag t = image.getTagByName(s);
removals.remove(t);
+ } else {
+ t = new MetaTag();
+ t.setTag(s);
+ image.addMetaTag(t);
}
}
for (MetaTag tag : removals) {
@@ -84,29 +83,29 @@
image.getAlbum().setCoveringImage(image);
}
}
- if (isFlushNeeded) {
+ if (flushStrategy.isDatabaseStoreStrategy()) {
em.flush();
}
}
- public void addImage(Image image, boolean isFlushNeeded) {
+ public void addImage(Image image) {
em.persist(image);
image.getAlbum().addImage(image);
- if (isFlushNeeded) {
+ if (flushStrategy.isDatabaseStoreStrategy()) {
em.flush();
}
}
- public void deleteComment(Comment comment, boolean isFlushNeeded) {
+ public void deleteComment(Comment comment) {
comment.getImage().removeComment(comment);
- if (isFlushNeeded) {
+ if (flushStrategy.isDatabaseStoreStrategy()) {
em.flush();
}
}
- public void addComment(Comment comment, boolean isFlushNeeded) {
+ public void addComment(Comment comment) {
comment.getImage().addComment(comment);
- if (isFlushNeeded) {
+ if (flushStrategy.isDatabaseStoreStrategy()) {
em.flush();
}
}
@@ -121,7 +120,7 @@
return t;
}
- public List<MetaTag> popularTags() {
+ public List<MetaTag> getPopularTags() {
return em.createQuery("select new MetaTag(m.id, m.tag) from MetaTag m join
m.images img group by m.id, m.tag order by count(img)
desc").setMaxResults(20).getResultList();
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ShelfAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ShelfAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/ShelfAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -45,28 +45,28 @@
@In(value="entityManager")
EntityManager em;
-
+ @In FlushStrategy flushStrategy;
@In @Out
private User user;
- public void addShelf(Shelf shelf, boolean isFlushNeeded) {
+ public void addShelf(Shelf shelf) {
em.persist(shelf);
user.addShelf(shelf);
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
- public void deleteShelf(Shelf shelf, boolean isFlushNeeded){
+ public void deleteShelf(Shelf shelf){
user.removeShelf(shelf);
em.remove(shelf);
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
- public void editShelf(Shelf shelf, boolean isFlushNeeded){
- if(isFlushNeeded){
+ public void editShelf(Shelf shelf){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
@@ -82,11 +82,6 @@
shelfs.addAll(sh);
return shelfs;
}
-
- public Long getCountUnvisitedImages(Shelf shelf){
- //TODO nick - use data from user
- return (Long)em.createQuery("select count(i) from Image i where
i.album.shelf=:shelf and i.uploaded > :date").setParameter("shelf",
shelf).setParameter("date", getDate()).getSingleResult();
- }
public List<Image> getUnvisitedImages(Shelf shelf){
//TODO nick - use data from user
@@ -95,8 +90,8 @@
private Date getDate() {
//TODO nick - copy-pasted from AlbumAction, see TODOs there
- Calendar c = new GregorianCalendar();
+ Calendar c = Calendar.getInstance();
c.add(Calendar.DAY_OF_YEAR, -15);
- return c.getInstance().getTime();
+ return c.getTime();
}
}
Modified:
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/UserAction.java
===================================================================
---
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/UserAction.java 2009-03-27
11:34:00 UTC (rev 13249)
+++
trunk/test-applications/realworld2/ejb/src/main/java/org/richfaces/realworld/service/UserAction.java 2009-03-27
11:34:20 UTC (rev 13250)
@@ -28,7 +28,6 @@
import org.jboss.seam.annotations.AutoCreate;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
-import org.jboss.seam.annotations.Out;
import org.richfaces.realworld.domain.Album;
import org.richfaces.realworld.domain.Image;
import org.richfaces.realworld.domain.User;
@@ -40,37 +39,37 @@
@In(value="entityManager")
EntityManager em;
-
- @In(create = true, required = true) @Out
+ @In FlushStrategy flushStrategy;
+ @In
private User user;
public User login(String username, String password) {
- return user = (User)em.createNamedQuery(Constants.USER_LOGIN_QUERY)
+ return (User)em.createNamedQuery(Constants.USER_LOGIN_QUERY)
.setParameter(Constants.USERNAME_PARAMETER, username)
.setParameter(Constants.PASSWORD_PARAMETER, password)
.getSingleResult();
}
- public void register(User user, boolean isFlushNeeded) {
+ public void register(User user) {
em.persist(user);
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
}
- public void updateUser(User user, boolean isFlushNeeded) {
- if(isFlushNeeded){
+ public User updateUser() {
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
- this.user = user;
+ return user;
}
- public void resetUser(User user, boolean isFlushNeeded) {
+ public User resetUser() {
em.refresh(user);
- if(isFlushNeeded){
+ if(flushStrategy.isDatabaseStoreStrategy()){
em.flush();
}
- this.user = user;
+ return user;
}
public boolean isUserExist(String login) {
@@ -78,32 +77,28 @@
.setParameter(Constants.LOGIN_PARAMETER, login)
.getResultList().size() != 0;
}
-
- public void loginAnonymous() {
- user = new User();
- }
public List<Album> getSharedAlbums(User user){
- return (List<Album>)em.createQuery("from Album a where a.owner=:user and
a.shelf.shared=true").setParameter("user", user).getResultList();
+ return (List<Album>)em.createQuery("from Album a where a.shelf.owner=:user
and a.shelf.shared=true").setParameter("user", user).getResultList();
}
public List<Image> getSharedImages(User user){
- return (List<Image>)em.createQuery("from Image i where i.album.owner=:user
and i.album.shelf.shared=true").setParameter("user",
user).getResultList();
+ return (List<Image>)em.createQuery("from Image i where
i.album.shelf.owner=:user and
i.album.shelf.shared=true").setParameter("user", user).getResultList();
}
public Long countAlbums(User user){
- return (Long)em.createQuery("select count(a) from Album a where
a.owner=:user").setParameter("user", user).getSingleResult();
+ return (Long)em.createQuery("select count(a) from Album a where
a.shelf.owner=:user").setParameter("user", user).getSingleResult();
}
public Long countSharedAlbums(User user){
- return (Long)em.createQuery("select count(a) from Album a where a.owner=:user and
a.shelf.shared=true").setParameter("user", user).getSingleResult();
+ return (Long)em.createQuery("select count(a) from Album a where
a.shelf.owner=:user and a.shelf.shared=true").setParameter("user",
user).getSingleResult();
}
public Long countImages(User user){
- return (Long)em.createQuery("select count(i) from Image i where
i.album.owner=:user").setParameter("user", user).getSingleResult();
+ return (Long)em.createQuery("select count(i) from Image i where
i.album.shelf.owner=:user").setParameter("user", user).getSingleResult();
}
public Long countSharedImages(User user){
- return (Long)em.createQuery("select count(i) from Image i where
i.album.owner=:user and i.album.shelf.shared=true").setParameter("user",
user).getSingleResult();
+ return (Long)em.createQuery("select count(i) from Image i where
i.album.shelf.owner=:user and
i.album.shelf.shared=true").setParameter("user", user).getSingleResult();
}
}
\ No newline at end of file
Modified: trunk/test-applications/realworld2/ejb/src/main/resources/import.sql
===================================================================
--- trunk/test-applications/realworld2/ejb/src/main/resources/import.sql 2009-03-27
11:34:00 UTC (rev 13249)
+++ trunk/test-applications/realworld2/ejb/src/main/resources/import.sql 2009-03-27
11:34:20 UTC (rev 13250)
@@ -1,16 +1,16 @@
-INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, doNotShowMail, informAboutNews, hasAvatar) VALUES (1, 'Andrey',
'Markhel', 'amarkhel(a)exadel.com', 'amarkhel',
'8cb2237d0679ca88db6464eac60da96345513964', '1985-01-08', 0, 1, 1, 0);
-INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, doNotShowMail, informAboutNews, hasAvatar) VALUES (2, 'Nick',
'Curtis', 'nkurtis(a)iba.com', 'Viking',
'8cb2237d0679ca88db6464eac60da96345513964', '1978-01-08', 1, 1, 1, 0);
-INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, doNotShowMail, informAboutNews, hasAvatar) VALUES (3, 'John',
'Smith', 'jsmith(a)jboss.com', 'Noname',
'8cb2237d0679ca88db6464eac60da96345513964', '1970-01-08', 1, 1, 1, 0);
+INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, hasAvatar) VALUES (1, 'Andrey', 'Markhel',
'amarkhel(a)exadel.com', 'amarkhel',
'8cb2237d0679ca88db6464eac60da96345513964', '1985-01-08', 0, 0);
+INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, hasAvatar) VALUES (2, 'Nick', 'Curtis', 'nkurtis(a)iba.com',
'Viking', '8cb2237d0679ca88db6464eac60da96345513964',
'1978-01-08', 1, 0);
+INSERT INTO Users(user_id, firstname, secondname, email, login, passwordHash, birthdate,
sex, hasAvatar) VALUES (3, 'John', 'Smith', 'jsmith(a)jboss.com',
'Noname', '8cb2237d0679ca88db6464eac60da96345513964',
'1970-01-08', 1, 0);
-INSERT INTO shelfs(shelf_id, name, description, shelf_user_id, created, shared) VALUES
(1, 'Nature', 'Nature pictures', 1, '2009-12-18', true);
-INSERT INTO shelfs(shelf_id, name, description, shelf_user_id, created,shared) VALUES (2,
'Sport', 'Nature pictures', 1, '2009-12-18', false);
-INSERT INTO shelfs(shelf_id, name, description, shelf_user_id, created,shared) VALUES (3,
'Water', 'Nature pictures', 2, '2009-12-18', true);
-INSERT INTO shelfs(shelf_id, name, description, shelf_user_id, created,shared) VALUES (4,
'Flowers', 'Nature pictures', 3, '2009-12-18', true);
+INSERT INTO shelves(shelf_id, name, description, shelf_user_id, created, shared) VALUES
(1, 'Nature', 'Nature pictures', 1, '2009-12-18', true);
+INSERT INTO shelves(shelf_id, name, description, shelf_user_id, created,shared) VALUES
(2, 'Sport', 'Nature pictures', 1, '2009-12-18', false);
+INSERT INTO shelves(shelf_id, name, description, shelf_user_id, created,shared) VALUES
(3, 'Water', 'Nature pictures', 2, '2009-12-18', true);
+INSERT INTO shelves(shelf_id, name, description, shelf_user_id, created,shared) VALUES
(4, 'Flowers', 'Nature pictures', 3, '2009-12-18', true);
---------------------------------------------------------------------
-- ALBUM - Animals
---------------------------------------------------------------------
-INSERT INTO albums(album_id, name, description, album_user_id, parent_shelf_id, created)
VALUES (0, 'Animals', 'Animals pictures', 1, 1, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (0,
'Animals', 'Animals pictures', 1, '2009-12-18');
INSERT INTO metatags(metatag_id, tag) VALUES (0, 'Animals');
INSERT INTO images(image_id, name, path, description, created, img_album_id,
cameraModel, width, size, height, uploaded, allowComments) VALUES (0, '067.JPG',
'amarkhel/0/067.JPG', 'Animals - 067.JPG image', '2009-12-18', 0,
'Canon EOS 450D', 1024, 1917, 768, '2009-12-01', true);
@@ -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, 3, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (1,
'Building', 'Building pictures', 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, 4, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (2,
'Coasts', 'Coasts pictures', 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, 2, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (3,
'Flora', 'Flora pictures', 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, 3, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (4,
'Ices', 'Ices pictures', 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, 4, '2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (5,
'Sport', 'Sport pictures', 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, 1,
'2009-12-18');
+INSERT INTO albums(album_id, name, description, parent_shelf_id, created) VALUES (6,
'Underwater', 'Underwater pictures', 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);
Added: trunk/test-applications/realworld2/ejb/src/main/resources/realworld.properties
===================================================================
--- trunk/test-applications/realworld2/ejb/src/main/resources/realworld.properties
(rev 0)
+++
trunk/test-applications/realworld2/ejb/src/main/resources/realworld.properties 2009-03-27
11:34:20 UTC (rev 13250)
@@ -0,0 +1 @@
+flushStrategy=database
\ No newline at end of file
Property changes on:
trunk/test-applications/realworld2/ejb/src/main/resources/realworld.properties
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Name: svn:eol-style
+ native