Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Final #13

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/main/java/edu/htc/gamedata/config/GameDataLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,18 @@ private void persistFinalFantasyViii() {
ffviii.setTags(ffviiiTags);
gameRepository.save(ffviii);
log.info("Saved Game - name: " + ffviii.getName() + ", game_id = " + ffviii.getId());
}

//@Transactional
private void persistFinalFantasyIv() {
Game ffiv = new Game();
ffiv.setName("Final Fantasy IV");
ffiv.setReleaseDate("2001");
ffiv.setPlatform("PlayStation");
ArrayList ffivTags = new ArrayList<Tag>();
ffivTags.add(tagRepository.findOrCreateTag("RPG"));
ffiv.setTags(ffivTags);
gameRepository.save(ffiv);
log.info("Saved Game - name: " + ffiv.getName() + ", game_id = " + ffiv.getId());
}
}
26 changes: 25 additions & 1 deletion src/main/java/edu/htc/gamedata/config/ReviewDataLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,20 @@ public void onApplicationEvent(ContextRefreshedEvent event) {

reviewRepository.save(review);
log.info("Saved Review for game: " + review.getGame().getName() + " review_id = " + review.getId());

reviewer = reviewerRepository.findOne("TestUser2");
if (reviewer == null) {
reviewer = new Reviewer();
reviewer.setUserName("TestUser2");
}

review = new Review();
game = createBanished();
review.setGame(game);
review.setReviewer(reviewer);

reviewRepository.save(review);
log.info("Saved Review for game: " + review.getGame().getName() + " review_id = " + review.getId());
}

private Game createFinalFantasyXiv() {
Expand All @@ -100,6 +114,16 @@ private Game createFinalFantasyXivReborn() {
game.setTags(ffxivtags);
return game;
}

private Game createBanished() {
Game game = new Game();
game.setName("Banished");
game.setReleaseDate("2013");
game.setPlatform("PC");
ArrayList tags = new ArrayList<Tag>();
tags.add(tagRepository.findOrCreateTag("Strategy"));
tags.add(tagRepository.findOrCreateTag("Simulation"));
game.setTags(tags);
return game;
}

}
63 changes: 63 additions & 0 deletions src/main/java/edu/htc/gamedata/config/ReviewerDataLoader.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
package edu.htc.gamedata.config;

import edu.htc.gamedata.entities.Reviewer;
import edu.htc.gamedata.repositories.GameRepository;
import edu.htc.gamedata.repositories.ReviewerRepository;
import edu.htc.gamedata.repositories.TagRepository;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import java.util.ArrayList;

/**
* Created by Prince Roka on 5/9/16.
*/
@Component
public class ReviewerDataLoader implements ApplicationListener<ContextRefreshedEvent> {

private ReviewerRepository reviewerRepository;

private Logger log = Logger.getLogger(GameDataLoader.class);

@Autowired
public void setReviewerRepository(ReviewerRepository reviewerRepository) {
this.reviewerRepository = reviewerRepository;
}

@Override
@Transactional
public void onApplicationEvent(ContextRefreshedEvent event) {
persistJerome();
persistIma();
}

//@Transactional
private void persistJerome() {
Reviewer jerome = new Reviewer();
jerome.setName("Jerome Nettle Opul");
jerome.setUserName("Jerry");
jerome.setAge(42);
jerome.setGender("Male");
jerome.setComments("Jerom e no");
jerome.setPassword("Splink");
reviewerRepository.save(jerome);
log.info("Saved Reviewer - name: " + jerome.getName() + ", username: = " + jerome.getUserName());
}

//@Transactional
private void persistIma() {
Reviewer ima = new Reviewer();
ima.setName("Ima Biga Kidnow");
ima.setUserName("Imacrazi");
ima.setAge(22);
ima.setGender("Female");
ima.setComments("All grown up");
ima.setPassword("Splunk");
reviewerRepository.save(ima);
log.info("Saved Reviewer - name: " + ima.getName() + ", username: = " + ima.getUserName());
}
}
9 changes: 9 additions & 0 deletions src/main/java/edu/htc/gamedata/entities/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@ public class Game {
private String releaseDate;
private String platform;

@Transient
private double avgRating;

@ManyToMany(cascade = {CascadeType.ALL})
private List<Tag> tags;

Expand Down Expand Up @@ -68,5 +71,11 @@ public void setReviews(List<Review> reviews) {
this.reviews = reviews;
}

public double getAvgRating() {
return avgRating;
}

public void setAvgRating(double avgRating) {
this.avgRating = avgRating;
}
}
11 changes: 11 additions & 0 deletions src/main/java/edu/htc/gamedata/entities/Reviewer.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
package edu.htc.gamedata.entities;


import edu.htc.gamedata.repositories.ReviewRepository;
import edu.htc.gamedata.repositories.ReviewerRepository;
import edu.htc.gamedata.services.GameController;
import org.apache.log4j.Logger;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.persistence.*;
import java.util.List;

Expand Down
15 changes: 14 additions & 1 deletion src/main/java/edu/htc/gamedata/repositories/GameRepository.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,25 @@
package edu.htc.gamedata.repositories;

import edu.htc.gamedata.entities.Game;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;


public interface GameRepository extends CrudRepository<Game, Integer> {

public List<Game> findByNameIgnoreCase(String name);
List<Game> findByName(String name);

List<Game> findByReleaseDate(String year);

@Query("SELECT g FROM Game g WHERE g.platform = :platform")
List<Game> findByPlatform(@Param("platform") String platform);

@Query("SELECT g FROM Game g ")
List<Game> findAllGames();

@Query("SELECT g FROM Game g WHERE g.platform = 'PC'")
List<Game> findAllPcGames();
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package edu.htc.gamedata.repositories;

import edu.htc.gamedata.entities.Review;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;


public interface ReviewRepository extends CrudRepository<Review, Integer> {

// @Query("SELECT AVG(r.starRating) FROM Review r WHERE r.game.id = :gameId")
// double getAverageRating(@Param("gameId") int gameId);
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
package edu.htc.gamedata.repositories;

import edu.htc.gamedata.entities.Reviewer;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;

import java.util.List;


public interface ReviewerRepository extends CrudRepository<Reviewer, String> {

@Query("SELECT r FROM Reviewer r WHERE r.userName = :userName")
Reviewer findByUserName(@Param("userName") String name);

List<Reviewer> findByGender(String gender);
}
53 changes: 51 additions & 2 deletions src/main/java/edu/htc/gamedata/services/GameController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,20 @@

import edu.htc.gamedata.entities.Game;
import edu.htc.gamedata.repositories.GameRepository;
import edu.htc.gamedata.repositories.ReviewRepository;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class GameController {

private GameRepository gameRepository;
private ReviewRepository reviewRepository;

private Logger log = Logger.getLogger(GameController.class);

Expand All @@ -20,9 +24,54 @@ public void setGameRepository(GameRepository gameRepository) {
this.gameRepository = gameRepository;
}

@RequestMapping("/search/game")
public Game findGame(@RequestParam(value="id") int id) {
@Autowired
public void setReviewRepository(ReviewRepository repository) {
this.reviewRepository = repository;
}


@RequestMapping("/search/gameById")
public Game findGameById(@RequestParam(value="id") int id) {
Game game = gameRepository.findOne(id);
// double avgRating = reviewRepository.getAverageRating(id);
// log.info("Average rating = " + avgRating);
// game.setAvgRating(avgRating);
return game;
}

@RequestMapping("/search/gamesByName")
public List<Game> findGamesByName(@RequestParam(value="name") String str) {
log.info("Find games by name " + str);
List<Game> game = gameRepository.findByName(str);
return game;
}

@RequestMapping("/search/gamesByReleaseDate")
public List<Game> findGamesByReleaseDate(@RequestParam(value="releaseDate") String str) {
log.info("Find games by release date " + str);
List<Game> game = gameRepository.findByReleaseDate(str);
return game;
}

@RequestMapping("/search/gamesByPlatform")
public List<Game> findGamesByPlatform(@RequestParam(value="platform") String str) {
log.info("Find games by platform " + str);
List<Game> game = gameRepository.findByPlatform(str);
return game;
}

@RequestMapping("/search/games")
public List<Game> findGames() {
log.info("Find all games.");
List<Game> game = gameRepository.findAllGames();
return game;
}

@RequestMapping("/search/games/pc")
public List<Game> findPCGames() {
log.info("Find all PC games.");
List<Game> game = gameRepository.findAllPcGames();
return game;
}

}
14 changes: 12 additions & 2 deletions src/main/java/edu/htc/gamedata/services/ReviewerController.java
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class ReviewerController {

Expand All @@ -21,8 +23,16 @@ public void setReviewerRepository(ReviewerRepository repository) {
}

@RequestMapping("/search/reviewer")
public Reviewer findReviewer(@RequestParam(value="username") String userName) {
Reviewer reviewer = reviewerRepository.findOne(userName);
public Reviewer findByUserName(@RequestParam(value="username") String str) {
log.info("Finding reviewer by username " + str);
Reviewer reviewer = reviewerRepository.findByUserName(str);
return reviewer;
}

@RequestMapping("/search/reviewersByGender")
public List<Reviewer> findReviewerGender(@RequestParam(value="gender") String gender) {
log.info("Finding reviewers of the " + gender + " gender");
List<Reviewer> reviewers = reviewerRepository.findByGender(gender);
return reviewers;
}
}