Skip to content

Commit

Permalink
Merge pull request #715 from caelum/removingMusicOwner
Browse files Browse the repository at this point in the history
[jungle] removing legacy MusicOwner
  • Loading branch information
Turini committed Jul 30, 2014
2 parents 3839d65 + ed60c43 commit 23b0df3
Show file tree
Hide file tree
Showing 20 changed files with 114 additions and 420 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,11 +37,12 @@
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.musicjungle.dao.MusicDao;
import br.com.caelum.vraptor.musicjungle.dao.UserDao;
import br.com.caelum.vraptor.musicjungle.files.Musics;
import br.com.caelum.vraptor.musicjungle.interceptor.Public;
import br.com.caelum.vraptor.musicjungle.interceptor.UserInfo;
import br.com.caelum.vraptor.musicjungle.model.Music;
import br.com.caelum.vraptor.musicjungle.model.MusicOwner;
import br.com.caelum.vraptor.musicjungle.model.User;
import br.com.caelum.vraptor.observer.download.Download;
import br.com.caelum.vraptor.observer.download.FileDownload;
import br.com.caelum.vraptor.observer.upload.UploadedFile;
Expand Down Expand Up @@ -70,12 +71,13 @@ public class MusicController {
private final UserInfo userInfo;
private final MusicDao musicDao;
private final Musics musics;
private final UserDao userDao;

/**
* @deprecated CDI eyes only
*/
protected MusicController() {
this(null, null, null, null, null);
this(null, null, null, null, null, null);
}


Expand All @@ -86,15 +88,17 @@ protected MusicController() {
* @param result VRaptor result handler.
* @param validator VRaptor validator.
* @param factory dao factory.
* @param userDao
*/
@Inject
public MusicController(MusicDao musicDao, UserInfo userInfo,
Result result, Validator validator, Musics musics) {
Result result, Validator validator, Musics musics, UserDao userDao) {
this.musicDao = musicDao;
this.result = result;
this.validator = validator;
this.userInfo = userInfo;
this.musics = musics;
this.userDao = userDao;
}

/**
Expand All @@ -115,7 +119,11 @@ public void add(final @NotNull @Valid Music music, UploadedFile file) {
validator.onErrorForwardTo(UsersController.class).home();

musicDao.add(music);
musicDao.add(new MusicOwner(userInfo.getUser(), music));

User currentUser = userInfo.getUser();
userDao.refresh(currentUser);

currentUser.add(music);

// is there a file?
if (file != null) {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,17 @@
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.musicjungle.dao.MusicDao;
import br.com.caelum.vraptor.musicjungle.dao.UserDao;
import br.com.caelum.vraptor.musicjungle.enums.MusicType;
import br.com.caelum.vraptor.musicjungle.interceptor.Public;
import br.com.caelum.vraptor.musicjungle.interceptor.UserInfo;
import br.com.caelum.vraptor.musicjungle.model.Music;
import br.com.caelum.vraptor.musicjungle.model.User;
import br.com.caelum.vraptor.musicjungle.validation.LoginAvailable;
import br.com.caelum.vraptor.validator.SimpleMessage;
import br.com.caelum.vraptor.validator.Validator;

/**
Expand All @@ -41,12 +46,14 @@ public class UsersController {
private final Validator validator;
private final Result result;
private final UserDao userDao;
private final UserInfo userInfo;
private final MusicDao musicDao;

/**
* @deprecated CDI eyes only
*/
protected UsersController() {
this(null, null, null);
this(null, null, null, null, null);
}

/**
Expand All @@ -56,12 +63,17 @@ protected UsersController() {
* @param userInfo info on the logged user.
* @param result VRaptor result handler.
* @param validator VRaptor validator.
* @param userInfo
*/
@Inject
public UsersController(UserDao dao, Result result, Validator validator) {
public UsersController(UserDao dao, Result result, Validator validator,
UserInfo userInfo, MusicDao musicDao) {

this.userDao = dao;
this.result = result;
this.validator = validator;
this.userInfo = userInfo;
this.musicDao = musicDao;
}

/**
Expand Down Expand Up @@ -141,4 +153,40 @@ public void show(User user) {
result.forwardTo("/WEB-INF/jsp/users/view.jsp");

}

/**
* Accepts HTTP PUT requests. <br>
*
* <strong>URL:</strong> /users/login/musics/id (for example,
* /users/john/musics/3 adds the music with id 3 to the john's
* collection)<br>
*
* <strong>View:</strong> redirects to user's home <br>
*
* You can use more than one variable on URI. Since the browsers
* don't support PUT method you have to pass an additional parameter:
* <strong>_method=PUT</strong> for calling this method.<br>
*
* This method adds a music to a user's collection.
*/
@Path("/users/{user.login}/musics/{music.id}")
@Put
public void addToMyList(User user, Music music) {
User currentUser = userInfo.getUser();
userDao.refresh(currentUser);

validator.check(user.getLogin().equals(currentUser.getLogin()),
new SimpleMessage("user", "you_cant_add_to_others_list"));

validator.check(!currentUser.getMusics().contains(music),
new SimpleMessage("music", "you_already_have_this_music"));

validator.onErrorUsePageOf(UsersController.class).home();

music = musicDao.load(music);
currentUser.add(music);

result.redirectTo(UsersController.class).home();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
import javax.persistence.EntityManager;

import br.com.caelum.vraptor.musicjungle.model.Music;
import br.com.caelum.vraptor.musicjungle.model.MusicOwner;

/**
* Default implementation for MusicDao.
Expand Down Expand Up @@ -56,11 +55,6 @@ public void add(Music music) {
entityManager.persist(music);
}

@Override
public void add(MusicOwner copy) {
entityManager.persist(copy);
}

@Override
public List<Music> searchSimilarTitle(String title) {
List<Music> musics = entityManager
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,8 @@ public void add(User user) {
}

@Override
public User refresh(User user) {
public void refresh(User user) {
getSession().refresh(user); // You still can use Hibernate Session
return user;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import java.util.List;

import br.com.caelum.vraptor.musicjungle.model.Music;
import br.com.caelum.vraptor.musicjungle.model.MusicOwner;

/**
* Data Access Object for the Music entity.
Expand All @@ -34,11 +33,6 @@ public interface MusicDao {
*/
void add(Music music);

/**
* Adds a copy of the music
*/
void add(MusicOwner copy);

/**
* Load the music from database
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public interface UserDao {
* Any not saved modification on user will be overwritten.
* @return
*/
User refresh(User user);
void refresh(User user);

/**
* Update the user on database.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ public boolean accepts(ControllerMethod method) {
@AroundCall
public void intercept(SimpleInterceptorStack stack) {

User current = null;
User current = info.getUser();
try {
current = dao.refresh(info.getUser());
dao.refresh(current);
} catch (Exception e) {
// could happen if the user does not exist in the database or if there's no user logged in.
}
Expand All @@ -74,7 +74,6 @@ public void intercept(SimpleInterceptorStack stack) {
result.redirectTo(HomeController.class).login();
return;
}

stack.next();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,15 @@
*/
package br.com.caelum.vraptor.musicjungle.model;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.ManyToMany;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

Expand Down Expand Up @@ -51,8 +52,8 @@ public class Music {
@Size(min = 6)
private String description;

@OneToMany(mappedBy = "music")
private Set<MusicOwner> musicOwners;
@ManyToMany(mappedBy = "musics")
private Set<User> owners = new HashSet<>();

@NotNull
@Enumerated(EnumType.STRING)
Expand Down Expand Up @@ -89,13 +90,9 @@ public MusicType getType() {
public void setType(MusicType type) {
this.type = type;
}

public Set<MusicOwner> getMusicOwners() {
return musicOwners;
}

public void setMusicOwners(Set<MusicOwner> copies) {
this.musicOwners = copies;

public Set<User> getOwners() {
return owners;
}

@Override
Expand Down
Loading

0 comments on commit 23b0df3

Please sign in to comment.