5 Commits

3 changed files with 134 additions and 20 deletions

View File

@ -39,6 +39,48 @@ public class DBConnection {
PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS trading(username text not null constraint trading_users_username_fk references users,id text not null constraint trading_pk primary key, cardtotrade text not null constraint trading_card_name_fk references card, mindamage float not null,reqcardtype text not null,reqelement text not null);", "Trading Table created"); PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS trading(username text not null constraint trading_users_username_fk references users,id text not null constraint trading_pk primary key, cardtotrade text not null constraint trading_card_name_fk references card, mindamage float not null,reqcardtype text not null,reqelement text not null);", "Trading Table created");
} }
/**
* Updated den Lock einer user card
* @param name Name der Card
* @param lock Zustand des Locks
* @return true bei erfolg, sonst false
*/
public boolean updateCardLock(String name, boolean lock){
return PostgresHelper.executeUpdate("Update user_cards set gesperrt = " + lock + " where name = \'" + name + "\';");
}
/**
* Prüft ob eine Card für das Deck gesperrt ist
* @param name Name der Card die zu prüfen ist
* @return True falls gesperrt, ansonst false
* @throws SQLException Locked Cards konnten nicht aus der DB geholt werden
*/
public boolean getCardLock(String name) throws SQLException {
this.c = PostgresHelper.con();
ArrayList<TradingDeal> tradingDeals = new ArrayList<TradingDeal>();
boolean locked = false;
stmt = this.c.createStatement();
ResultSet rs = stmt.executeQuery("select gesperrt from user_cards where name = \'" + name + "\';");
while (rs.next()) {
locked = rs.getBoolean("gesperrt");
}
rs.close();
stmt.close();
this.c.close();
System.out.println("Trading Deals pulled successfully");
return locked;
}
/**
* Löscht einen Trading Deal aus der Datenbank
* @param id Id des deals der gelöscht werden soll
* @return True bei erfolg, sonst false
*/
public boolean deleteTradingDeal(String id){
return PostgresHelper.executeUpdate("delete from trading where id = \'" + id + "\';");
}
/** /**
* Fügt der DB einen Trading deal hinzu * Fügt der DB einen Trading deal hinzu
* @param username User der den Trade hinzufügt * @param username User der den Trade hinzufügt
@ -110,6 +152,16 @@ public class DBConnection {
* @return True bei erfolg, sonst false * @return True bei erfolg, sonst false
*/ */
public boolean setDeck(String username, List<String> deck){ public boolean setDeck(String username, List<String> deck){
for (String st :deck) {
try {
if(getCardLock(st)){
return false;
}
} catch (SQLException throwables) {
throwables.printStackTrace();
return false;
}
}
if (!delDeck(username)){ if (!delDeck(username)){
return false; return false;
} }
@ -457,6 +509,7 @@ public class DBConnection {
* @return Null bei error * @return Null bei error
*/ */
public Card getCardFromID(String id){ public Card getCardFromID(String id){
System.out.println(id);
Connection b = PostgresHelper.con(); Connection b = PostgresHelper.con();
Card toreturn = null; Card toreturn = null;
try { try {

View File

@ -54,6 +54,22 @@ public class TradingDeal {
this(id, cardToTrade, EnumHelper.stringToElementType(type), requiredMinDamage, EnumHelper.stringToCardType(type), username); this(id, cardToTrade, EnumHelper.stringToElementType(type), requiredMinDamage, EnumHelper.stringToCardType(type), username);
} }
/**
* Holt die ID des Trading deals
* @return Id des Trading Deals
*/
public String getId() {
return id;
}
/**
* Setzt die id des TradingDeals
* @param id Id des TradingDeals
*/
public void setId(String id) {
this.id = id;
}
/** /**
* Holt den usernamen * Holt den usernamen
* @return Der username als String * @return Der username als String

View File

@ -129,6 +129,20 @@ public class Response {
} else { } else {
sendError("500"); sendError("500");
} }
}else if(this.url.startsWith("/tradings")) {
ArrayList<TradingDeal> allDeals = new DBConnection().getAllTradingDeals();
if(allDeals != null && !allDeals.isEmpty()){
String json = JsonHelper.objToJson(allDeals);
if(json != null && json != ""){
sendResponse(json, "200");
}else{
sendError("500");
}
}else{
sendError("500");
}
}else{
sendError("204");
} }
} }
@ -262,36 +276,46 @@ public class Response {
String id = (String)map.get("Id"); String id = (String)map.get("Id");
String cardtotrade = (String)map.get("CardToTrade"); String cardtotrade = (String)map.get("CardToTrade");
String type = (String)map.get("Type"); String type = (String)map.get("Type");
double mindamage = (double)map.get("MinimumDamage"); double mindamage = Double.parseDouble(map.get("MinimumDamage") + "");
ArrayList<String> cardname = new ArrayList<String>(); String username = basicAuthGetUsername(this.authString);
cardname.add(cardtotrade); if (username != null) {
Cards cards = new DBConnection().getCardsFromIDList(cardname); Card cardtoTradeC = new DBConnection().getCardFromID(cardtotrade);
Card cardtoTradeC = null; System.out.println("CARD TO TRAD: " + cardtoTradeC.getName());
if (cards != null){ if (cardtoTradeC != null) {
cardtoTradeC = cards.getCards().get(0); TradingDeal tradingDeal = new TradingDeal(id, cardtoTradeC, mindamage, type, username);
if (cardtoTradeC != null){ if (tradingDeal != null) {
TradingDeal tradingDeal = new TradingDeal(id, cardtoTradeC, mindamage, type, basicAuthGetUsername(this.authString));
if (tradingDeal != null){
String tradingJson = JsonHelper.objToJson(tradingDeal); String tradingJson = JsonHelper.objToJson(tradingDeal);
if (tradingDeal != null){ if (tradingDeal != null) {
//DB Trading deal add ArrayList<String> deckCards = new DBConnection().getDeck(username);
// Lock Card for deck if (deckCards != null) {
//Wenn card im deck, dann del aus deck if (deckCards.contains(cardtotrade)) {
//new DBConnection().; new DBConnection().delDeck(username);
}
if(new DBConnection().addTradingdeal(tradingDeal.getUsername(), tradingDeal.getId(), tradingDeal.getRequiredMinDamage(), tradingDeal.getRequiredCardType().name(), tradingDeal.getRequiredElementType().name(), tradingDeal.getCardToTrade().getName())){
if(new DBConnection().updateCardLock(tradingDeal.getCardToTrade().getName(), true)){
sendResponse(JsonHelper.objToJson(tradingDeal), "201");
}else{
sendError("500");
}
}else{
sendError("500");
}
} else {
sendError("500");
}
sendResponse(tradingJson, "201"); sendResponse(tradingJson, "201");
}else{ } else {
sendError("500"); sendError("500");
} }
}else{ } else {
sendError("500"); sendError("500");
} }
}else { } else {
sendError("500"); sendError("500");
} }
}else{ }else{
sendError("500"); sendError("500");
} }
}else{ }else{
sendError("401"); sendError("401");
} }
@ -381,7 +405,28 @@ public class Response {
* @throws JsonProcessingException Fehler beim de-/serialisieren * @throws JsonProcessingException Fehler beim de-/serialisieren
*/ */
private void deleteMethodes(){ private void deleteMethodes(){
if (this.url.startsWith("/messages")) { if (this.url.startsWith("/tradings")) {
String tradeid = this.url.substring(this.url.lastIndexOf('/') + 1);
System.out.println("Format in /tradings/{tradingid}: " + tradeid);
ArrayList<TradingDeal> allTradingDeals = new DBConnection().getAllTradingDeals();
TradingDeal tr = null;
if (allTradingDeals != null && !allTradingDeals.isEmpty()) {
for (TradingDeal i : allTradingDeals) {
if (i.getId().equals(tradeid)) {
tr = i;
}
}
if (tr != null) {
if (new DBConnection().deleteTradingDeal(tradeid)) {
if (new DBConnection().updateCardLock(tr.getCardToTrade().getName(), false))
sendResponse("", "204");
} else {
sendError("500");
}
}else{
sendError("500");
}
}
} }
} }