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

Work from 17th #1

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
6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

54 changes: 54 additions & 0 deletions src/main/java/com/qa/cdstore/model/CD.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,59 @@
package com.qa.cdstore.model;

import javax.persistence.*;

@Entity
public class CD {

@Id
@GeneratedValue
private int cdID;
private String artist;
private String song;
private String genre;

public CD(){
//Blank Constructor//
}

public CD(int cdID, String artist, String song, String genre) {
this.cdID = cdID;
this.artist = artist;
this.song = song;
this.genre = genre;
}

//Getters and Setters below//
public int getCdID() {
return cdID;
}

public void setCdID(int cdID) {
this.cdID = cdID;
}

public String getArtist() {
return artist;
}

public void setArtist(String artist) {
this.artist = artist;
}

public String getSong() {
return song;
}

public void setSong(String song) {
this.song = song;
}

public String getGenre() {
return genre;
}

public void setGenre(String genre) {
this.genre = genre;
}

}
52 changes: 52 additions & 0 deletions src/main/java/com/qa/cdstore/rest/CDEndpoint.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,57 @@
package com.qa.cdstore.rest;

import javax.inject.Inject;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;

import com.qa.cdstore.service.CDService;

@Path ("/cdstore")
public class CDEndpoint {

@Inject
private CDService cdService;

@GET
@Path("/json")
@Produces({ "application/json" })
public String getCDsAsJson(){
return cdService.getAllCDs();
}

@GET
@Path("/json/{id}")
@Produces({ "application/json" })
public String getSingleCDsAsJson(@PathParam("id") Integer id){
return cdService.getSingleCD(id);
}


@POST
@Path("/json")
@Produces({ "application/json" })
public String addNewBookToMap(String cdJson){
return cdService.addNewCD(cdJson);
}

@PUT
@Path("/json/{id}") //{id} is defined by the id passed into the method by stating id as the PathParam//
@Produces({ "application/json" })
public String replaceCdFromCdStore(@PathParam("id") Integer id, String cdJson){
return cdService.replaceCD(id, cdJson);
}

@DELETE
@Path("/json/{id}")
@Produces({ "application/json" })
public String deleteCdFromCdStore(@PathParam("id") Integer id){
return cdService.deleteCD(id);
}


}
71 changes: 70 additions & 1 deletion src/main/java/com/qa/cdstore/service/CDDBImpl.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,74 @@
package com.qa.cdstore.service;

import java.util.Collection;

import javax.ejb.Stateless;
import javax.enterprise.inject.Default;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import com.qa.cdstore.model.CD;
import com.qa.cdstore.util.JSONUtil;
import com.qa.cdstore.service.CDService;

@Stateless
@Default
public class CDDBImpl implements CDService {

@PersistenceContext(unitName = "primary")
private EntityManager em;

@Inject
private JSONUtil util;

@Override
public String getAllCDs() {
Query query = em.createQuery("SELECT c FROM CD c");
Collection<CD> cds = (Collection<CD>) query.getResultList();
return util.getJSONForObject(cds);
}

@Override
public String getSingleCD(Integer cdID) {
CD cd = em.find(CD.class, cdID);
return util.getJSONForObject(cd);
}

@Override
public String addNewCD(String cdJson) {
CD newCD = util.getObjectForJSON(cdJson, CD.class);
em.persist(newCD);
return cdJson;
}

@Override
public String replaceCD(Integer cdID, String updatedCD) {
CD updateCD = util.getObjectForJSON(updatedCD, CD.class);
CD cd = findCD(new Integer(cdID));
Integer storeID;
if (cd != null) {
storeID= cd.getCdID();
cd = updateCD;
cd.setCdID(storeID);
em.merge(cd);
}
return "{\"message\": \"CD updated!\"}";
}

@Override
public String deleteCD(Integer cdID) {
CD cd = findCD(new Integer(cdID));
if (cd != null) {
em.remove(cd);
}
return "{\"message\": \"CD removed!\"}";
}

private CD findCD(Integer id) {
return em.find(CD.class, id);
}

}

}
13 changes: 12 additions & 1 deletion src/main/java/com/qa/cdstore/service/CDService.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
package com.qa.cdstore.service;

public interface CDService {

String getAllCDs();

String addNewCD(String cdJson);

String replaceCD(Integer cdID, String updatedCD);

String deleteCD(Integer cdID);

String getSingleCD(Integer cdID);

}

}
72 changes: 72 additions & 0 deletions src/main/java/com/qa/cdstore/service/CDServiceImpl.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,77 @@
package com.qa.cdstore.service;

import java.util.HashMap;
import java.util.Map;

import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.inject.Alternative;
import javax.inject.Inject;

import org.apache.log4j.Logger;

import com.qa.cdstore.model.CD;
import com.qa.cdstore.util.JSONUtil;

@ApplicationScoped
@Alternative
public class CDServiceImpl implements CDService {

private static final Logger LOGGER = Logger.getLogger(CDServiceImpl.class);
private final int INITIAL_COUNT = 1;
private Map<Integer, CD> cdMap;
private int ID;

@Inject
private JSONUtil util;

public CDServiceImpl() {
this.cdMap = new HashMap<Integer, CD>();
ID = INITIAL_COUNT;
initCDStore();
}

@Override
public String getAllCDs() {
return util.getJSONForObject(cdMap.values());
}

@Override
public String getSingleCD(Integer cdID) {
return util.getJSONForObject(cdMap.get(cdID));
}

@Override
public String addNewCD(String cdJson) {
ID++;
CD newCD = util.getObjectForJSON(cdJson, CD.class);
LOGGER.info("In add cd method, about to add to map");
cdMap.put(ID, newCD);
LOGGER.info("In add cd method, cd added to map!");
return cdJson;
}

@Override
public String replaceCD(Integer cdID, String updatedCD) {
CD newCD = util.getObjectForJSON(updatedCD, CD.class);
cdMap.put(cdID, newCD);
return updatedCD;
}

@Override
public String deleteCD(Integer cdID) {
LOGGER.info("In delete cd method, about to remove cd");
cdMap.remove(cdID);
LOGGER.info("In delete cd method, cd removed!");
return "{\"message\": \"CD removed!\"}";
}

private void initCDStore() {
CD pureMorning = new CD(0001, "Placebo", "PureMorning", "Rock");
cdMap.put(1, pureMorning);
CD monkeyWrench = new CD(0002, "Foo Fighters", "Monkey Wrench", "Rock");
cdMap.put(2, monkeyWrench);
}

}


4 changes: 2 additions & 2 deletions src/main/java/com/qa/cdstore/util/JSONUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ public String getJSONForObject(Object obj) {
return gson.toJson(obj);
}

public <T> T getObjectForJSON(String jsonString, Class<T> clazz) {
return gson.fromJson(jsonString, clazz);
public <T> T getObjectForJSON(String jsonString, Class<T> class1) {
return gson.fromJson(jsonString, class1);
}

}
16 changes: 16 additions & 0 deletions src/main/webapp/app/app-state-manager.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
"use strict";

(function () {

angular.module('cdStore').config(function ($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise("/cd");

$stateProvider.state("cd", {
url: "/cd",
templateUrl: "app/feature/cd/cd.html"
}).state("dashboard", {
url: "/dashboard",
templateUrl: "app/feature/dashboard/dashboard.html"
})
});
}());
1 change: 1 addition & 0 deletions src/main/webapp/app/app.js
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
var demoApp = angular.module('cdStore',['ui.router']);
14 changes: 14 additions & 0 deletions src/main/webapp/app/feature/dashboard/dashboard.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<div class="dashboard panel panel-default" data-ng-controller="dashBoardController as dashboardCtrl">
<div class="panel-heading">Dashboard</div>
<div class="panel-body">
<p> "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
</p>
</div>
<h4>Technology Stack</h4>
<ul>
<li>AngularJS 1.4</li>
<li>Bootstrap 3</li>
<li>Bootstrap Dialog</li>
<li>lodash - Javascript utilities libary</li>
</ul>
</div>
3 changes: 3 additions & 0 deletions src/main/webapp/app/feature/dashboard/dashboardcontroller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/**
* Created by Administrator on 17/02/2017.
*/
26 changes: 26 additions & 0 deletions src/main/webapp/app/services/dal/cd.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
"use strict";

(function () {

angular.module("cdStore").service("cdDal", ["dal", CdDal]);

function CdDal (dal) {

this.getCds = function () {
return dal.http.GET("rest/cdstore/json");
};

this.saveCd = function (cdToSave) {
return dal.http.POST("rest/cdstore/json", cdToSave);
};

this.updateCd = function (cdToUpdate) {
return dal.http.PUT("rest/cdstore/json/", cdToUpdate);
};

this.deleteCd = function (cdToDelete) {
return dal.http.DELETE("/rest/cdstore/json/", cdToDelete);
};

}
}());
Loading