Compare commits
16 Commits
Author | SHA1 | Date | |
---|---|---|---|
b8da579784 | |||
b610f21eb6 | |||
3aa29d664a | |||
4497c67c11 | |||
e590ccd3e0 | |||
514ac3553f | |||
39fb8de502 | |||
1909e1e780 | |||
5f69e90124 | |||
3d67d2ad16 | |||
012b8bb532 | |||
6c59901d2b | |||
920e0d0e27 | |||
b4f0edafe3 | |||
93cbd8aae2 | |||
224f08737e |
2
.gitignore
vendored
2
.gitignore
vendored
@ -10,7 +10,7 @@
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# at.reisinger.Package Files #
|
||||
# at.reisinger.obj.Package Files #
|
||||
*.jar
|
||||
*.war
|
||||
*.nar
|
||||
|
8
.idea/.gitignore
generated
vendored
8
.idea/.gitignore
generated
vendored
@ -1,8 +0,0 @@
|
||||
# Default ignored files
|
||||
/shelf/
|
||||
/workspace.xml
|
||||
# Datasource local storage ignored files
|
||||
/../../../../../../../../../:\Users\georg\OneDrive\FH\SWE\Monster Card Trading Game\code\.idea/dataSources/
|
||||
/dataSources.local.xml
|
||||
# Editor-based HTTP Client requests
|
||||
/httpRequests/
|
1
.idea/.name
generated
1
.idea/.name
generated
@ -1 +0,0 @@
|
||||
MTCG
|
14
.idea/compiler.xml
generated
14
.idea/compiler.xml
generated
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<annotationProcessing>
|
||||
<profile name="Maven default annotation processors profile" enabled="true">
|
||||
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||
<outputRelativeToContentRoot value="true" />
|
||||
<module name="MTCG" />
|
||||
<module name="code" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
20
.idea/jarRepositories.xml
generated
20
.idea/jarRepositories.xml
generated
@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="RemoteRepositoriesConfiguration">
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Central Repository" />
|
||||
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="central" />
|
||||
<option name="name" value="Maven Central repository" />
|
||||
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||
</remote-repository>
|
||||
<remote-repository>
|
||||
<option name="id" value="jboss.community" />
|
||||
<option name="name" value="JBoss Community repository" />
|
||||
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||
</remote-repository>
|
||||
</component>
|
||||
</project>
|
14
.idea/misc.xml
generated
14
.idea/misc.xml
generated
@ -1,14 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="MavenProjectsManager">
|
||||
<option name="originalFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/pom.xml" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_14" default="false" project-jdk-name="15" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/out" />
|
||||
</component>
|
||||
</project>
|
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
2
MTCG.iml
2
MTCG.iml
@ -1,2 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4" />
|
80
README.md
80
README.md
@ -1,2 +1,78 @@
|
||||
# SWE1-MTCG
|
||||
Monster Trading at.reisinger.Card Game
|
||||
# Monster Trading Card Game
|
||||
Created by *Georg Reisinger*
|
||||
* RestServer von https://github.com/DerGeorg/RESTServer
|
||||
* MTCG Git Repo https://github.com/DerGeorg/SWE1-MTCG
|
||||
* JavaDoc online auf: http://mtcg.dergeorg.at
|
||||
* Postgres Server läuft auf einem Raspberry Pi 4 --> http://postgres.dergeorg.at
|
||||
* User Table
|
||||
* *Alle User die in MTCG registriert sind*
|
||||
* User_cards Table
|
||||
* *Alle Cards der User*
|
||||
* User_deck Table
|
||||
* *Deck der User*
|
||||
* Battle Table
|
||||
* *Battle Einladungen*
|
||||
* Battle_log Table
|
||||
* *Nach beendetem battle wird hier das Log gespeichert*
|
||||
* Package Table
|
||||
* *Alle Packages die die User bekommen können*
|
||||
* Card Table
|
||||
* *Alle Cards die in dem Spiel verwendet werden*
|
||||
* *Typ der Card wird automatisch in Card und Element Typ getrennt*
|
||||
* Trading Table
|
||||
* *Alle aktiven Trading deals*
|
||||
## Protokoll
|
||||
*Um für Testzwecke die DB zu leeren, die Route DELETE /db/all beachten. Setzt die DB zurück und erstellt alle Tabellen neu.*
|
||||
#### Cards
|
||||
* Card Type (z.B. FireSpell) wird zu ElementTyp(Fire) und CardType(Spell) aufgespalten
|
||||
* Alle Cards sind in der Cards Tabelle gespeichert
|
||||
* Wenn ein User Cards acquired, dann wird das passende package gelöscht und die Cards in seine user_card Table geschrieben
|
||||
#### Deck
|
||||
* Die Deckkarten werden in der Tabelle User_deck gespeichert
|
||||
* Wird eine Card getradet, die im Deck ist, so wird das Deck des Users zurückgesetzt
|
||||
* Wird ein Battle begonnen, dann muss der user 4 cards im deck haben.
|
||||
#### Battle
|
||||
* Beginnt ein User ein Battle und ist der erste, so wird in der Battle tabelle eine "Einladung" erstellt.
|
||||
Die Einladung besteht aus: **Username, Userdeck, Battleid**
|
||||
* Beginnt ein 2. User ein Battle, so sieht er das in der Battle Tabelle ein Spiel ohne 2. spieler ist, und kann beitreten.
|
||||
#### Score & Stats
|
||||
* Score zeigt das Ergebnis des letzten spieles an
|
||||
* Stats zeigt die Ergebnisse aller vergangen Spiele
|
||||
## API Beschreibung
|
||||
#### GET
|
||||
| ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER |
|
||||
|--------------------|------------------------------------|-----------|-------------------------|------------------------------------------------------|
|
||||
| /cards | show all acquired cards | / | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /deck | show deck | / | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /deck?format=plain | show deck different representation | / | Card names Array | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /users/{username} | get user | / | User Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /stats | get stats about all battles | / | All battle Logs | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /score | get score, about last battle | / | Last Battle Log | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /tradings | get trading deals | / | List TradingDeal Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
#### POST
|
||||
| ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER |
|
||||
|------------------------|---------------------------|--------------------------------------|---------------------|------------------------------------------------------|
|
||||
| /users | create user | Username, Password | User Object | / |
|
||||
| /sessions | login user | Username, Password | login token | / |
|
||||
| /packages | create package | [ID, Name, Damage]x5 | Package Object | --header "Authorization: Basic admin-mtcgToken" |
|
||||
| /transactions/packages | acquire packages kienboec | / | Package Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /battles | Battle | / | Anweisungen String | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /tradings | create tradingdeal | Id, CardToTrade, Type, MinimumDamage | TradingDeal Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /tradings/{TradeID} | Do Trade | CardID | New Card Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
#### PUT
|
||||
| ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER |
|
||||
|-------------------|----------------|------------------|--------------|------------------------------------------------------|
|
||||
| /deck | configure deck | [ID, ID, ID, ID] | Cards Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /users/{username} | / | Name, Bio, Image | User Object | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
#### DELETE
|
||||
| ROUTE | BESCHREIBUNG | ATTRIBUTE | RETURN | HEADER |
|
||||
|---------------------|---------------------|-----------|--------|------------------------------------------------------|
|
||||
| /tradings/{TradeID} | delete trading deal | / | / | --header "Authorization: Basic kienboec-mtcgToken" |
|
||||
| /db/all | Reset DB + Recreate | / | / |--header "Authorization: Basic admin-mtcgToken" |
|
||||
## Insomnia Requests
|
||||
Basierend auf dem [Curl Script](https://github.com/DerGeorg/SWE1-MTCG/blob/master/curl.bat) habe ich die Requests in Insomnia erstellt.
|
||||
[Öffne insomnia.json](https://github.com/DerGeorg/SWE1-MTCG/blob/master/insomnia.json)
|
||||
## UML
|
||||
* [UML.png](https://github.com/DerGeorg/SWE1-MTCG/blob/master/UML2021.png)
|
||||
* [UML.svg](https://github.com/DerGeorg/SWE1-MTCG/blob/master/UML2021.svg)
|
||||

|
||||
|
BIN
UML2021.png
Normal file
BIN
UML2021.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 MiB |
3405
UML2021.svg
Normal file
3405
UML2021.svg
Normal file
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 251 KiB |
276
curl.bat
Normal file
276
curl.bat
Normal file
@ -0,0 +1,276 @@
|
||||
@echo off
|
||||
|
||||
REM --------------------------------------------------
|
||||
REM Monster Trading Cards Game
|
||||
REM --------------------------------------------------
|
||||
title Monster Trading Cards Game
|
||||
echo CURL Testing for Monster Trading Cards Game
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 1) Create Users (Registration)
|
||||
REM Create User
|
||||
curl -X POST http://localhost:10001/users --header "Content-Type: application/json" -d "{\"Username\":\"kienboec\", \"Password\":\"daniel\"}"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/users --header "Content-Type: application/json" -d "{\"Username\":\"altenhof\", \"Password\":\"markus\"}"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/users --header "Content-Type: application/json" -d "{\"Username\":\"admin\", \"Password\":\"istrator\"}"
|
||||
echo.
|
||||
|
||||
echo should fail:
|
||||
curl -X POST http://localhost:10001/users --header "Content-Type: application/json" -d "{\"Username\":\"kienboec\", \"Password\":\"daniel\"}"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/users --header "Content-Type: application/json" -d "{\"Username\":\"kienboec\", \"Password\":\"different\"}"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 2) Login Users
|
||||
curl -X POST http://localhost:10001/sessions --header "Content-Type: application/json" -d "{\"Username\":\"kienboec\", \"Password\":\"daniel\"}"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/sessions --header "Content-Type: application/json" -d "{\"Username\":\"altenhof\", \"Password\":\"markus\"}"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/sessions --header "Content-Type: application/json" -d "{\"Username\":\"admin\", \"Password\":\"istrator\"}"
|
||||
echo.
|
||||
|
||||
echo should fail:
|
||||
curl -X POST http://localhost:10001/sessions --header "Content-Type: application/json" -d "{\"Username\":\"kienboec\", \"Password\":\"different\"}"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 3) create packages (done by "admin")
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"845f0dc7-37d0-426e-994e-43fc3ac83c08\", \"Name\":\"WaterGoblin\", \"Damage\": 10.0}, {\"Id\":\"99f8f8dc-e25e-4a95-aa2c-782823f36e2a\", \"Name\":\"Dragon\", \"Damage\": 50.0}, {\"Id\":\"e85e3976-7c86-4d06-9a10001-641c2019a79f\", \"Name\":\"WaterSpell\", \"Damage\": 20.0}, {\"Id\":\"1cb6ab86-bdb2-47e5-b6e4-68c5ab389334\", \"Name\":\"Ork\", \"Damage\": 45.0}, {\"Id\":\"dfdd758f-649c-40f9-ba3a-8657f4b3439f\", \"Name\":\"FireSpell\", \"Damage\": 25.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"644100018c2-f87a-4600-b313-122b02322fd5\", \"Name\":\"WaterGoblin\", \"Damage\": 9.0}, {\"Id\":\"4a2757d6-b1c3-47ac-b9a3-91deab093531\", \"Name\":\"Dragon\", \"Damage\": 55.0}, {\"Id\":\"91a6471b-1426-43f6-ad65-6fc473e16f9f\", \"Name\":\"WaterSpell\", \"Damage\": 21.0}, {\"Id\":\"4ec8b269-0dfa-4f97-100019a-2c63fe2a0025\", \"Name\":\"Ork\", \"Damage\": 55.0}, {\"Id\":\"f1000143c23-1534-4487-b66b-238e0c3c39b5\", \"Name\":\"WaterSpell\", \"Damage\": 23.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"b017ee50-1c14-44e2-bfd6-2c0c5653a37c\", \"Name\":\"WaterGoblin\", \"Damage\": 11.0}, {\"Id\":\"d04b736a-e874-4137-b191-638e0ff3b4e7\", \"Name\":\"Dragon\", \"Damage\": 70.0}, {\"Id\":\"88221cfe-1f84-41b9-8152-8e36c6a354de\", \"Name\":\"WaterSpell\", \"Damage\": 22.0}, {\"Id\":\"1d3f175b-c067-4359-989d-96562bfa382c\", \"Name\":\"Ork\", \"Damage\": 40.0}, {\"Id\":\"171f6076-4eb5-4a7d-b3f2-2d650cc3d237\", \"Name\":\"RegularSpell\", \"Damage\": 28.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"ed1dc1bc-f0aa-4a0c-8d43-1402189b33c8\", \"Name\":\"WaterGoblin\", \"Damage\": 10.0}, {\"Id\":\"65ff5f23-1e70-4b79-b3bd-f6eb679dd3b5\", \"Name\":\"Dragon\", \"Damage\": 50.0}, {\"Id\":\"55ef46c4-016c-4168-bc43-6b9b1e86414f\", \"Name\":\"WaterSpell\", \"Damage\": 20.0}, {\"Id\":\"f3fad0f2-a1af-45df-b10001d-2e48825773d9\", \"Name\":\"Ork\", \"Damage\": 45.0}, {\"Id\":\"8c20639d-6400-4534-bd0f-ae563f11f57a\", \"Name\":\"WaterSpell\", \"Damage\": 25.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"d7d0cb94-2cbf-4f97-8ccf-9933dc5354b8\", \"Name\":\"WaterGoblin\", \"Damage\": 9.0}, {\"Id\":\"44c82fbc-ef6d-44ab-8c7a-9fb19a0e7c6e\", \"Name\":\"Dragon\", \"Damage\": 55.0}, {\"Id\":\"2c98cd06-518b-464c-b911-8d787216cddd\", \"Name\":\"WaterSpell\", \"Damage\": 21.0}, {\"Id\":\"951e886a-0fbf-425d-8df5-af2ee4830d85\", \"Name\":\"Ork\", \"Damage\": 55.0}, {\"Id\":\"dcd93250-25a7-4dca-85da-cad2789f7198\", \"Name\":\"FireSpell\", \"Damage\": 23.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"b2237eca-0271-43bd-87f6-b22f70d42ca4\", \"Name\":\"WaterGoblin\", \"Damage\": 11.0}, {\"Id\":\"9e8238a4-8a7a-487f-9f7d-a8c97899eb48\", \"Name\":\"Dragon\", \"Damage\": 70.0}, {\"Id\":\"d60e23cf-2238-4d49-844f-c7589ee5342e\", \"Name\":\"WaterSpell\", \"Damage\": 22.0}, {\"Id\":\"fc305a7a-36f7-4d30-ad27-462ca0445649\", \"Name\":\"Ork\", \"Damage\": 40.0}, {\"Id\":\"84d276ee-21ec-4171-a509-c1b88162831c\", \"Name\":\"RegularSpell\", \"Damage\": 28.0}]"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 4) acquire packages kienboec
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d ""
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d ""
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d ""
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d ""
|
||||
echo.
|
||||
echo should fail (no money):
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d ""
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 5) acquire packages altenhof
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
echo should fail (no package):
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 6) add new packages
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"67f9048f-99b8-4ae4-b866-d1000108d00c53d\", \"Name\":\"WaterGoblin\", \"Damage\": 10.0}, {\"Id\":\"aa9999a0-734c-49c6-8f4a-651864b14e62\", \"Name\":\"RegularSpell\", \"Damage\": 50.0}, {\"Id\":\"d6e9c720-9b5a-40c7-a6b2-bc34752e3463\", \"Name\":\"Knight\", \"Damage\": 20.0}, {\"Id\":\"02a9c76e-b17d-427f-9240-2dd49b0d3bfd\", \"Name\":\"RegularSpell\", \"Damage\": 45.0}, {\"Id\":\"2508bf5c-20d7-43b4-8c77-bc677decadef\", \"Name\":\"FireElf\", \"Damage\": 25.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"70962948-2bf7-44a9-9ded-8c68eeac7793\", \"Name\":\"WaterGoblin\", \"Damage\": 9.0}, {\"Id\":\"74635fae-8ad3-4295-9139-320ab89c2844\", \"Name\":\"FireSpell\", \"Damage\": 55.0}, {\"Id\":\"ce6bcaee-47e1-4011-a49e-5a4d7d4245f3\", \"Name\":\"Knight\", \"Damage\": 21.0}, {\"Id\":\"a6fde738-c65a-4b10-b400-6fef0fdb28ba\", \"Name\":\"FireSpell\", \"Damage\": 55.0}, {\"Id\":\"a1618f1e-4f4c-4e09-9647-87e16f1edd2d\", \"Name\":\"FireElf\", \"Damage\": 23.0}]"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/packages --header "Content-Type: application/json" --header "Authorization: Basic YWRtaW46aXN0cmF0b3I=" -d "[{\"Id\":\"2272ba48-6662-404d-a9a1-41a9bed316d9\", \"Name\":\"WaterGoblin\", \"Damage\": 11.0}, {\"Id\":\"3871d45b-b630-4a0d-8bc6-a5fc56b6a043\", \"Name\":\"Dragon\", \"Damage\": 70.0}, {\"Id\":\"166c1fd5-4dcb-41a8-91cb-f45dcd57cef3\", \"Name\":\"Knight\", \"Damage\": 22.0}, {\"Id\":\"237dbaef-49e3-4c23-b64b-abf5c087b276\", \"Name\":\"WaterSpell\", \"Damage\": 40.0}, {\"Id\":\"27051a20-8510001-43ff-a473-e986b52f297a\", \"Name\":\"FireElf\", \"Damage\": 28.0}]"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 7) acquire newly created packages altenhof
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
echo should fail (no money):
|
||||
curl -X POST http://localhost:10001/transactions/packages --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d ""
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 8) show all acquired cards kienboec
|
||||
curl -X GET http://localhost:10001/cards --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo should fail (no token)
|
||||
curl -X GET http://localhost:10001/cards
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 9) show all acquired cards altenhof
|
||||
curl -X GET http://localhost:10001/cards --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 10) show unconfigured deck
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 11) configure deck
|
||||
curl -X PUT http://localhost:10001/deck --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "[\"845f0dc7-37d0-426e-994e-43fc3ac83c08\", \"99f8f8dc-e25e-4a95-aa2c-782823f36e2a\", \"e85e3976-7c86-4d06-9a10001-641c2019a79f\", \"171f6076-4eb5-4a7d-b3f2-2d650cc3d237\"]"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X PUT http://localhost:10001/deck --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "[\"aa9999a0-734c-49c6-8f4a-651864b14e62\", \"d6e9c720-9b5a-40c7-a6b2-bc34752e3463\", \"d60e23cf-2238-4d49-844f-c7589ee5342e\", \"02a9c76e-b17d-427f-9240-2dd49b0d3bfd\"]"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
echo should fail and show original from before:
|
||||
curl -X PUT http://localhost:10001/deck --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "[\"845f0dc7-37d0-426e-994e-43fc3ac83c08\", \"99f8f8dc-e25e-4a95-aa2c-782823f36e2a\", \"e85e3976-7c86-4d06-9a10001-641c2019a79f\", \"171f6076-4eb5-4a7d-b3f2-2d650cc3d237\"]"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
echo should fail ... only 3 cards set
|
||||
curl -X PUT http://localhost:10001/deck --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "[\"aa9999a0-734c-49c6-8f4a-651864b14e62\", \"d6e9c720-9b5a-40c7-a6b2-bc34752e3463\", \"d60e23cf-2238-4d49-844f-c7589ee5342e\"]"
|
||||
echo.
|
||||
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 12) show configured deck
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/deck --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 13) show configured deck different representation
|
||||
echo kienboec
|
||||
curl -X GET http://localhost:10001/deck?format=plain --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo.
|
||||
echo altenhof
|
||||
curl -X GET http://localhost:10001/deck?format=plain --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 14) edit user data
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/kienboec --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/altenhof --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
curl -X PUT http://localhost:10001/users/kienboec --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "{\"Name\": \"Kienboeck\", \"Bio\": \"me playin...\", \"Image\": \":-)\"}"
|
||||
echo.
|
||||
curl -X PUT http://localhost:10001/users/altenhof --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "{\"Name\": \"Altenhofer\", \"Bio\": \"me codin...\", \"Image\": \":-D\"}"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/kienboec --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/altenhof --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
echo should fail:
|
||||
curl -X GET http://localhost:10001/users/altenhof --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/kienboec --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
curl -X PUT http://localhost:10001/users/kienboec --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "{\"Name\": \"Hoax\", \"Bio\": \"me playin...\", \"Image\": \":-)\"}"
|
||||
echo.
|
||||
curl -X PUT http://localhost:10001/users/altenhof --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "{\"Name\": \"Hoax\", \"Bio\": \"me codin...\", \"Image\": \":-D\"}"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/users/someGuy --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo.
|
||||
REM --------------------------------------------------
|
||||
echo 15) stats
|
||||
curl -X GET http://localhost:10001/stats --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/stats --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 16) scoreboard
|
||||
curl -X GET http://localhost:10001/score --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 17) battle
|
||||
start /b "kienboec battle" curl -X POST http://localhost:10001/battles --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
start /b "altenhof battle" curl -X POST http://localhost:10001/battles --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
ping localhost -n 10 >NUL 2>NUL
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 18) Stats
|
||||
echo kienboec
|
||||
curl -X GET http://localhost:10001/stats --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo altenhof
|
||||
curl -X GET http://localhost:10001/stats --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 19) scoreboard
|
||||
curl -X GET http://localhost:10001/score --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 20) trade
|
||||
echo check trading deals
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo create trading deal
|
||||
curl -X POST http://localhost:10001/tradings --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "{\"Id\": \"6cd85277-4590-49d4-b0cf-ba0a921faad0\", \"CardToTrade\": \"1cb6ab86-bdb2-47e5-b6e4-68c5ab389334\", \"Type\": \"monster\", \"MinimumDamage\": 15}"
|
||||
echo.
|
||||
echo check trading deals
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo delete trading deals
|
||||
curl -X DELETE http://localhost:10001/tradings/6cd85277-4590-49d4-b0cf-ba0a921faad0 --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo 21) check trading deals
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/tradings --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "{\"Id\": \"6cd85277-4590-49d4-b0cf-ba0a921faad0\", \"CardToTrade\": \"1cb6ab86-bdb2-47e5-b6e4-68c5ab389334\", \"Type\": \"monster\", \"MinimumDamage\": 15}"
|
||||
echo check trading deals
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
echo try to trade with yourself (should fail)
|
||||
curl -X POST http://localhost:10001/tradings/6cd85277-4590-49d4-b0cf-ba0a921faad0 --header "Content-Type: application/json" --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs" -d "\"4ec8b269-0dfa-4f97-100019a-2c63fe2a0025\""
|
||||
echo.
|
||||
echo try to trade
|
||||
echo.
|
||||
curl -X POST http://localhost:10001/tradings/6cd85277-4590-49d4-b0cf-ba0a921faad0 --header "Content-Type: application/json" --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz" -d "\"951e886a-0fbf-425d-8df5-af2ee4830d85\""
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic a2llbmJvZWM6ZGFuaWVs"
|
||||
echo.
|
||||
curl -X GET http://localhost:10001/tradings --header "Authorization: Basic YWx0ZW5ob2Y6bWFya3Vz"
|
||||
echo.
|
||||
|
||||
REM --------------------------------------------------
|
||||
echo end...
|
||||
|
||||
REM this is approx a sleep
|
||||
ping localhost -n 100 >NUL 2>NUL
|
||||
@echo on
|
1
insomnia.json
Normal file
1
insomnia.json
Normal file
File diff suppressed because one or more lines are too long
@ -1,521 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
|
||||
public class Battle {
|
||||
|
||||
private User player1, player2;
|
||||
private int scorePlayer1, scorePlayer2, id;
|
||||
private Cards deckPlayer1, deckPlayer2, deckPlayer1Init, deckPlayer2Init;
|
||||
private Card spielfeldCardPlayer1, spielfeldCardPlayer2;
|
||||
private ArrayList<String> log = new ArrayList<String>();
|
||||
|
||||
|
||||
/**
|
||||
* Erstellt ein neues Battle
|
||||
* @param player1 Player 1 Obj
|
||||
* @param player2 Player 2 Obj
|
||||
* @param scorePlayer1 Score PLayer 1
|
||||
* @param scorePlayer2 Score player 2
|
||||
* @param deckPlayer1 Deck Player 1
|
||||
* @param deckPlayer2 Deck Player 2
|
||||
*/
|
||||
public Battle(int id, User player1, User player2, int scorePlayer1, int scorePlayer2, Cards deckPlayer1, Cards deckPlayer2) {
|
||||
this.id = id;
|
||||
this.player1 = player1;
|
||||
this.player2 = player2;
|
||||
this.scorePlayer1 = scorePlayer1;
|
||||
this.scorePlayer2 = scorePlayer2;
|
||||
this.deckPlayer1 = deckPlayer1;
|
||||
this.deckPlayer2 = deckPlayer2;
|
||||
this.deckPlayer1Init = deckPlayer1;
|
||||
this.deckPlayer2Init = deckPlayer2;
|
||||
this.spielfeldCardPlayer1 = null;
|
||||
this.spielfeldCardPlayer2 = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt ein neues Battle, im zustand offenes battle
|
||||
* @param id
|
||||
* @param player1
|
||||
* @param deckPlayer1
|
||||
*/
|
||||
public Battle(int id, User player1, Cards deckPlayer1){
|
||||
this.id = id;
|
||||
this.player1 = player1;
|
||||
this.deckPlayer1 = deckPlayer1;
|
||||
this.scorePlayer1 = 100;
|
||||
this.scorePlayer2 = 100;
|
||||
this.deckPlayer2 = null;
|
||||
this.deckPlayer1Init = deckPlayer1;
|
||||
this.deckPlayer2Init = null;
|
||||
this.spielfeldCardPlayer1 = null;
|
||||
this.spielfeldCardPlayer2 = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Startet einen Kampf zw den beiden Playern
|
||||
* @return true bei erfolg, sonst false
|
||||
*/
|
||||
public boolean doFight(){
|
||||
System.out.println("DAS IS DAS BATTTTLLLLLLLEEEEEEEEEE FIIIIIGHT!");
|
||||
System.out.println(player1.getName() + " |vs|" + player2.getName());
|
||||
System.out.println(deckPlayer1.getCards().toString()+ " |vs| " + deckPlayer2.getCards().toString());
|
||||
|
||||
if(deckPlayer1.getCards().size() == 4 && deckPlayer2.getCards().size() == 4) {
|
||||
//SHUFFLE DECK
|
||||
ArrayList<Card> d1 = deckPlayer1.getCards();
|
||||
ArrayList<Card> d2 = deckPlayer2.getCards();
|
||||
Collections.shuffle(d1);
|
||||
Collections.shuffle(d2);
|
||||
deckPlayer1.setCards(d1);
|
||||
deckPlayer1.setCards(d2);
|
||||
|
||||
//Runden
|
||||
int maxroundcount = 100;
|
||||
for(int i = 0; d1.size()>i && d2.size()>i && i<maxroundcount; i++) {
|
||||
System.out.println("Runde: " + i);
|
||||
Card c1 = d1.get(i);
|
||||
Card c2 = d2.get(i);
|
||||
System.out.println("Card 1: " + c1.getElementTyp()+c1.getCardType() + "\nCard 2: "+c2.getElementTyp()+c2.getCardType());
|
||||
//GLEICHER TYP Monster
|
||||
if (!c1.getCardType().name().toUpperCase().equals("SPELL") && !c2.getCardType().name().toUpperCase().equals("SPELL")) {
|
||||
System.out.println("Same Monster");
|
||||
//Check ob eine der beiden Carten ein Dragon ist
|
||||
if ((c1.getCardType().name().toUpperCase().equals("DRANGON") && !c2.getCardType().name().toUpperCase().equals("DRANGON") || (!c1.getCardType().name().toUpperCase().equals("DRANGON") && c2.getCardType().name().toUpperCase().equals("DRANGON")))) {
|
||||
//Eine der Karten is Dragon
|
||||
System.out.println("Eine ist ein dragon");
|
||||
Card dragon = null;
|
||||
int dragonOwner = 0;
|
||||
if (c1.getCardType().name().toUpperCase().equals("DRAGON")) {
|
||||
dragon = c1;
|
||||
dragonOwner = 1;
|
||||
} else if (c2.getCardType().name().toUpperCase().equals("DRAGON")) {
|
||||
dragon = c2;
|
||||
dragonOwner = 2;
|
||||
} else {
|
||||
System.out.println("KEIN DRAGON GEFUNDEN");
|
||||
return false;
|
||||
}
|
||||
if ((c1.getCardType().name().toUpperCase().equals("GOBLIN") && !c2.getCardType().name().toUpperCase().equals("GOBLIN") || (!c1.getCardType().name().toUpperCase().equals("GOBLIN") && c2.getCardType().name().toUpperCase().equals("GOBLIN")))) {
|
||||
//Eine der Karten ist Goblin
|
||||
System.out.println("Andere ist ein goblin");
|
||||
Card goblin = null;
|
||||
if (c1.getCardType().name().toUpperCase().equals("GOBLIN")) {
|
||||
goblin = c1;
|
||||
} else if (c2.getCardType().name().toUpperCase().equals("GOBLIN")) {
|
||||
goblin = c2;
|
||||
} else {
|
||||
System.out.println("KEIN GOBLIN GEFUNDEN");
|
||||
return false;
|
||||
}
|
||||
if (dragon.getDamage() > goblin.getDamage()) {
|
||||
//Drache ist stärker
|
||||
if (dragonOwner == 1) {
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
} else if (dragonOwner == 2) {
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer1 -= 5;
|
||||
this.scorePlayer2 += 3;
|
||||
}
|
||||
log.add("Player "+dragonOwner+" gewinnt!\nDrache ist stärker! Drache: " + dragon.getDamage() + " vs Goblin: " + goblin.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
} else {
|
||||
System.out.println("DRAW: Drache zu schwach um anzugreifen und GOBLIN zu feige.");
|
||||
}
|
||||
} else if ((c1.getCardType().name().toUpperCase().equals("ELF") && c1.getElementTyp().name().toUpperCase().equals("FIRE") && !c2.getCardType().name().toUpperCase().equals("ELF") || (!c1.getCardType().name().toUpperCase().equals("ELF") && c2.getElementTyp().name().toUpperCase().equals("FIRE") && c2.getCardType().name().toUpperCase().equals("ELF")))) {
|
||||
//Eine der Karten ist der Fire Elf die andere Karte ist der drache
|
||||
System.out.println("Andere ist ein elf");
|
||||
Card fireelf = null;
|
||||
if (dragonOwner == 1) {
|
||||
fireelf = c2;
|
||||
} else if (dragonOwner == 2) {
|
||||
fireelf = c1;
|
||||
}
|
||||
|
||||
if (fireelf.getDamage() > dragon.getDamage()) {
|
||||
//Fireelf ist stärker
|
||||
if (dragonOwner == 1) {
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
} else if (dragonOwner == 2) {
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer2 -= 5;
|
||||
this.scorePlayer1 += 3;
|
||||
}
|
||||
log.add("Player "+dragonOwner+" gewinnt!\nWizzard ist stärker! Drache: " + dragon.getDamage() + " vs FireElves: " + fireelf.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
//Sonst nix tun, weil der drache den elf ned angreifen kann
|
||||
}else{
|
||||
if(c1.getDamage() > c2.getDamage()){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + c1.getDamage() + " vs "+c2.getElementTyp()+c2.getCardType()+": " + c2.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}else if (c1.getDamage() < c2.getDamage()){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + c2.getDamage() + " vs "+c1.getElementTyp()+c1.getCardType()+": " + c1.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
}
|
||||
|
||||
//Checkt ob eine der beiden karten ein wizzard ist und der andere ein ork
|
||||
} else if((c1.getCardType().name().toUpperCase().equals("WIZZARD") && c2.getCardType().name().toUpperCase().equals("ORK") || (c2.getCardType().name().toUpperCase().equals("WIZZARD") && c1.getCardType().name().toUpperCase().equals("ORK")))){
|
||||
System.out.println("Eine wizzard Andere ist ein ork");
|
||||
Card wizzard = null;
|
||||
Card ork = null;
|
||||
int wizzardOwner = 0;
|
||||
if(c1.getCardType().name().toUpperCase().equals("WIZZARD")){
|
||||
wizzardOwner = 1;
|
||||
wizzard = c1;
|
||||
ork = c2;
|
||||
}else if(c1.getCardType().name().toUpperCase().equals("WIZZARD")){
|
||||
wizzardOwner = 2;
|
||||
wizzard = c2;
|
||||
ork = c1;
|
||||
}
|
||||
if(wizzard.getDamage() > ork.getDamage()){
|
||||
if(wizzardOwner == 1){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
}else if (wizzardOwner == 2){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
}
|
||||
|
||||
log.add("Player "+wizzardOwner+" gewinnt!\nWizzard ist stärker! Wizzard: " + wizzard.getDamage() + " vs Ork: " + ork.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
//Sonst nix tun, weil der ork dem wizzard keinen schaden machen kann
|
||||
}else{
|
||||
//PURE MONSTER
|
||||
if(c1.getDamage() > c2.getDamage()){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + c1.getDamage() + " vs "+c2.getElementTyp()+c2.getCardType()+": " + c2.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}else if (c1.getDamage() < c2.getDamage()){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + c2.getDamage() + " vs "+c1.getElementTyp()+c1.getCardType()+": " + c1.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
//sonst nix weil bei gleichen damage --> draw
|
||||
}
|
||||
} else {//PURE SPELL & mixed
|
||||
double damagePlayer1 = -1, damagePlayer2 = -1;
|
||||
|
||||
if(c1.getCardType().name().toUpperCase().equals("KNIGHT") || c2.getCardType().name().toUpperCase().equals("KNIGHT")){
|
||||
//Mixed mit "Spezialeffekt" KNIGHT
|
||||
System.out.println("Spell und knight");
|
||||
Card knight =null, other = null;
|
||||
int knightOwner = 0;
|
||||
if(c1.getCardType().name().toUpperCase().equals("KNIGHT")){
|
||||
knight = c1;
|
||||
other = c2;
|
||||
knightOwner = 1;
|
||||
}else if(c2.getCardType().name().toUpperCase().equals("KNIGHT")){
|
||||
knight = c2;
|
||||
other = c1;
|
||||
knightOwner = 2;
|
||||
}
|
||||
double damageKnight = -1, damageOther = -1;
|
||||
if (other.getElementTyp().name().toUpperCase().equals("WATER")){
|
||||
//tot
|
||||
damageKnight = 0;
|
||||
damageOther = other.getDamage();
|
||||
}else if (other.getElementTyp().name().toUpperCase().equals("FIRE") && knight.getElementTyp().name().equals("REGULAR")) {
|
||||
//not effective
|
||||
damageKnight = knight.getDamage() / 2;
|
||||
//effective
|
||||
damageOther = other.getDamage() *2;
|
||||
} else if (other.getElementTyp().name().toUpperCase().equals("FIRE") && knight.getElementTyp().name().equals("FIRE")) {
|
||||
//no effect
|
||||
damageKnight = knight.getDamage();
|
||||
//no effect
|
||||
damageOther = other.getDamage();
|
||||
}else if (other.getElementTyp().name().toUpperCase().equals("FIRE") && knight.getElementTyp().name().equals("WATER")) {
|
||||
//effective
|
||||
damageKnight = knight.getDamage() * 2;
|
||||
//not effective
|
||||
damageOther = other.getDamage() / 2;
|
||||
}else if (other.getElementTyp().name().toUpperCase().equals("REGULAR") && knight.getElementTyp().name().equals("REGULAR")) {
|
||||
//no effect
|
||||
damageKnight = knight.getDamage();
|
||||
//no effect
|
||||
damageOther = other.getDamage();
|
||||
} else if (other.getElementTyp().name().toUpperCase().equals("REGULAR") && knight.getElementTyp().name().equals("FIRE")) {
|
||||
//effective
|
||||
damageKnight = knight.getDamage() * 2;
|
||||
//not effective
|
||||
damageOther = other.getDamage() / 2;
|
||||
}else if (other.getElementTyp().name().toUpperCase().equals("REGULAR") && knight.getElementTyp().name().equals("WATER")) {
|
||||
//not effective
|
||||
damageKnight = knight.getDamage() / 2;
|
||||
//effective
|
||||
damageOther = other.getDamage() * 2;
|
||||
}
|
||||
if(damageKnight > damageOther){
|
||||
if(knightOwner == 1){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + damageKnight + " vs "+c2.getElementTyp()+c2.getCardType()+": " + damageOther + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}else if(knightOwner == 2){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + damageKnight + " vs "+c1.getElementTyp()+c1.getCardType()+": " + damageOther + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
}else if(damageKnight < damageOther){
|
||||
if(knightOwner == 2){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + damageOther + " vs "+c2.getElementTyp()+c2.getCardType()+": " + damageKnight + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}else if(knightOwner == 1){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + damageOther + " vs "+c1.getElementTyp()+c1.getCardType()+": " + damageKnight + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
}
|
||||
}else if(c1.getCardType().name().toUpperCase().equals("KRAKEN") || c2.getCardType().name().toUpperCase().equals("KRAKEN")){
|
||||
//Mixed mit "Spezialeffekt" KRAKEN
|
||||
if(c1.getCardType().name().toUpperCase().equals("KRAKEN")){
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + c1.getDamage() + " vs "+c2.getElementTyp()+c2.getCardType()+": 0\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}else if(c2.getCardType().name().toUpperCase().equals("KRAKEN")){
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + c2.getDamage() + " vs "+c1.getElementTyp()+c1.getCardType()+": 0\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
}else{
|
||||
////PURE SPELL & mixed mit elementen
|
||||
System.out.println("Spell und mixed mit elementen");
|
||||
//Player 1 Damage berechnen
|
||||
if (c1.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
if (c2.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
}
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
if (c2.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
}
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
if (c2.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
}
|
||||
}
|
||||
//P2 damage
|
||||
if (c2.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
if (c1.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//effective
|
||||
damagePlayer2 = c2.getDamage() * 2;
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//not effective
|
||||
damagePlayer2 = c2.getDamage() / 2;
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//no effect
|
||||
damagePlayer2 = c2.getDamage();
|
||||
}
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
if (c1.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//effective
|
||||
damagePlayer2 = c2.getDamage() * 2;
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//no effect
|
||||
damagePlayer2 = c2.getDamage();
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//not effective
|
||||
damagePlayer2 = c2.getDamage() / 2;
|
||||
}
|
||||
} else if (c2.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
if (c1.getElementTyp().name().toUpperCase().equals("WATER")) {
|
||||
//effective
|
||||
damagePlayer2 = c2.getDamage() * 2;
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("FIRE")) {
|
||||
//not effective
|
||||
damagePlayer2 = c2.getDamage() / 2;
|
||||
} else if (c1.getElementTyp().name().toUpperCase().equals("REGULAR")) {
|
||||
//no effect
|
||||
damagePlayer2 = c2.getDamage();
|
||||
}
|
||||
}
|
||||
|
||||
if (damagePlayer1 > -1 && damagePlayer2 > -1) {
|
||||
if (damagePlayer1 > damagePlayer2) {
|
||||
d1.add(c2);
|
||||
d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
log.add("Player 1 gewinnt!\n"+c1.getElementTyp()+c1.getCardType()+" ist stärker! "+c1.getElementTyp()+c1.getCardType()+": " + damagePlayer1 + " vs "+c2.getElementTyp()+c2.getCardType()+": " + damagePlayer2 + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
} else if (damagePlayer2 > damagePlayer1) {
|
||||
d2.add(c1);
|
||||
d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
log.add("Player 2 gewinnt!\n"+c2.getElementTyp()+c2.getCardType()+" ist stärker! "+c2.getElementTyp()+c2.getCardType()+": " + damagePlayer2 + " vs "+c1.getElementTyp()+c1.getCardType()+": " + damagePlayer1 + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: "+ scorePlayer2);
|
||||
}
|
||||
} else {
|
||||
System.out.println("Damage konnte nicht berechnet werden");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
this.deckPlayer1 = new Cards(d1);
|
||||
this.deckPlayer2 = new Cards(d2);
|
||||
}else{
|
||||
System.out.println("Einer der Spieler hat zu wenige Karten im Deck");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Vergleicht 2 Card Typen von 2 Karten
|
||||
* @param c1 Card 1
|
||||
* @param c2 Card 2
|
||||
* @return True wenn die CardType übereinstimmt, sonst false
|
||||
*/
|
||||
private boolean sameCardType(Card c1, Card c2){
|
||||
if(c1.getCardType().name().equals(c2.getCardType().name())){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public ArrayList<String> getLog() {
|
||||
return log;
|
||||
}
|
||||
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public User getPlayer1() {
|
||||
return player1;
|
||||
}
|
||||
|
||||
public void setPlayer1(User player1) {
|
||||
this.player1 = player1;
|
||||
}
|
||||
|
||||
public User getPlayer2() {
|
||||
return player2;
|
||||
}
|
||||
|
||||
public void setPlayer2(User player2) {
|
||||
this.player2 = player2;
|
||||
}
|
||||
|
||||
public int getScorePlayer1() {
|
||||
return scorePlayer1;
|
||||
}
|
||||
|
||||
public void setScorePlayer1(int scorePlayer1) {
|
||||
this.scorePlayer1 = scorePlayer1;
|
||||
|
||||
}
|
||||
|
||||
public int getScorePlayer2() {
|
||||
return scorePlayer2;
|
||||
}
|
||||
|
||||
public void setScorePlayer2(int scorePlayer2) {
|
||||
this.scorePlayer2 = scorePlayer2;
|
||||
}
|
||||
|
||||
public Cards getDeckPlayer1() {
|
||||
return deckPlayer1;
|
||||
}
|
||||
|
||||
public void setDeckPlayer1(Cards deckPlayer1) {
|
||||
this.deckPlayer1 = deckPlayer1;
|
||||
this.deckPlayer1Init = deckPlayer1;
|
||||
}
|
||||
|
||||
public Cards getDeckPlayer2() {
|
||||
return deckPlayer2;
|
||||
}
|
||||
|
||||
public void setDeckPlayer2(Cards deckPlayer2) {
|
||||
this.deckPlayer2 = deckPlayer2;
|
||||
this.deckPlayer2Init = deckPlayer2;
|
||||
}
|
||||
|
||||
public Card getSpielfeldCardPlayer1() {
|
||||
return spielfeldCardPlayer1;
|
||||
}
|
||||
|
||||
public void setSpielfeldCardPlayer1(Card spielfeldCardPlayer1) {
|
||||
this.spielfeldCardPlayer1 = spielfeldCardPlayer1;
|
||||
}
|
||||
|
||||
public Card getSpielfeldCardPlayer2() {
|
||||
return spielfeldCardPlayer2;
|
||||
}
|
||||
|
||||
public void setSpielfeldCardPlayer2(Card spielfeldCardPlayer2) {
|
||||
this.spielfeldCardPlayer2 = spielfeldCardPlayer2;
|
||||
}
|
||||
|
||||
public Cards getDeckPlayer1Init() {
|
||||
return deckPlayer1Init;
|
||||
}
|
||||
|
||||
public Cards getDeckPlayer2Init() {
|
||||
return deckPlayer2Init;
|
||||
}
|
||||
}
|
@ -1,213 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
import at.reisinger.server.helper.EnumHelper;
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
/**
|
||||
* Object einer at.reisinger.Card
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class Card {
|
||||
@JsonProperty
|
||||
private String name;
|
||||
@JsonProperty
|
||||
private double damage;
|
||||
@JsonProperty
|
||||
private ElementTyp elementTyp;
|
||||
@JsonProperty
|
||||
private CardType cardType;
|
||||
@JsonProperty
|
||||
private boolean locked;
|
||||
|
||||
/**
|
||||
* Erstellt eine neue at.reisinger.Card mit gegebenen Eigenschaften
|
||||
* @param name Name der at.reisinger.Card
|
||||
* @param damage Damage den die at.reisinger.Card macht
|
||||
* @param elementTyp ElementType der at.reisinger.Card
|
||||
* @param cardType at.reisinger.CardType der at.reisinger.Card
|
||||
*/
|
||||
public Card(String name, double damage, ElementTyp elementTyp, CardType cardType) {
|
||||
this.name = name;
|
||||
this.damage = damage;
|
||||
this.elementTyp = elementTyp;
|
||||
this.cardType = cardType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt eine neue Card mit, anhand des cardNamen werden der ElementType und der CardType automatisch bestimmt
|
||||
* @param name Name der Card (ID)
|
||||
* @param elementCardTyp ElementTyp und CardType in einem String. Beide Enums werden durch diesen String gewählt.
|
||||
* Wird kein passender Typ gefunden, dann bleibt diese Eigenschaft auf null
|
||||
* @param damage Damage der Card
|
||||
*/
|
||||
@JsonCreator
|
||||
public Card(@JsonProperty("Id") String name, @JsonProperty("Name") String elementCardTyp, @JsonProperty("Damage") double damage){
|
||||
CardType tmpCard = EnumHelper.stringToCardType(elementCardTyp);
|
||||
ElementTyp tmpElement = null;
|
||||
if(tmpCard == null){
|
||||
tmpCard = CardType.UNDEF;
|
||||
}
|
||||
|
||||
//Spezialkarten die kein element besitzen, bekommen hier ihr natürliches element zugewiesen
|
||||
if (tmpCard.name().toLowerCase().equals("dragon")){
|
||||
tmpElement = ElementTyp.FIRE;
|
||||
}else if (tmpCard.name().toLowerCase().equals("ork")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}
|
||||
else if (tmpCard.name().toLowerCase().equals("wizzard")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}else if (tmpCard.name().toLowerCase().equals("kraken")){
|
||||
tmpElement = ElementTyp.WATER;
|
||||
}else if (tmpCard.name().toLowerCase().equals("elf")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}else if (tmpCard.name().toLowerCase().equals("goblin")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}else if (tmpCard.name().toLowerCase().equals("troll")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}else if (tmpCard.name().toLowerCase().equals("knight")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}else if (tmpCard.name().toLowerCase().equals("fireelves")){
|
||||
tmpElement = ElementTyp.FIRE;
|
||||
}
|
||||
|
||||
if(tmpElement == null){
|
||||
tmpElement = EnumHelper.stringToElementType(elementCardTyp);
|
||||
//Deutsch übersetzung
|
||||
if (tmpElement.name().toLowerCase().equals("feuer")){
|
||||
tmpElement = ElementTyp.FIRE;
|
||||
}else if (tmpElement.name().toLowerCase().equals("wasser")){
|
||||
tmpElement = ElementTyp.WATER;
|
||||
}else if (tmpElement.name().toLowerCase().equals("normal")){
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
}
|
||||
if(tmpElement == null) {
|
||||
tmpElement = ElementTyp.UNDEF;
|
||||
}
|
||||
}
|
||||
this.name = name;
|
||||
this.damage = damage;
|
||||
this.elementTyp = tmpElement;
|
||||
this.cardType = tmpCard;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Prüft ob die Karte gesperrt ist
|
||||
* @return True wenn die Karte gesperrt ist
|
||||
*/
|
||||
public boolean isLocked() {
|
||||
return locked;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die sperre der Karte
|
||||
* @param locked True bedeuted gesperrt
|
||||
*/
|
||||
public void setLocked(boolean locked) {
|
||||
this.locked = locked;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den Namen der at.reisinger.Card
|
||||
* @return Name der at.reisinger.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den Damage der at.reisinger.Card
|
||||
* @return Damage der at.reisinger.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public double getDamage() {
|
||||
return this.damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den ElementType der at.reisinger.Card
|
||||
* @return ElementType der at.reisinger.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public ElementTyp getElementTyp() {
|
||||
return this.elementTyp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den at.reisinger.CardType der at.reisinger.Card
|
||||
* @return at.reisinger.CardType der at.reisinger.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public CardType getCardType() {
|
||||
return this.cardType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet die Wirksamkeit gegen eine Andere card. Die at.reisinger.Card im Parameter wird angegriffen
|
||||
* @param toCeck at.reisinger.Card gegen welche die Wirksamkeit geprüft werden soll
|
||||
* @return Gibt die Wirksamkeit zurück
|
||||
* @throws InternalError Wenn die Effectifeness von den 2 at.reisinger.Cards nicht berechnet werden kann
|
||||
*/
|
||||
@JsonGetter
|
||||
public EffectivnessType getEffectivenessAgainst(Card toCeck) {
|
||||
if(toCeck.getCardType() == CardType.MONSTER){
|
||||
if(this.cardType == CardType.MONSTER){
|
||||
return EffectivnessType.NOEFFECT;
|
||||
}else if (this.cardType == CardType.SPELL){
|
||||
|
||||
}
|
||||
}else if (toCeck.getCardType() == CardType.SPELL){
|
||||
if ((toCeck.getElementTyp() == ElementTyp.FIRE && this.elementTyp == ElementTyp.WATER) || (toCeck.getElementTyp() == ElementTyp.NORMAL && this.elementTyp == ElementTyp.FIRE) || (toCeck.getElementTyp() == ElementTyp.WATER && this.elementTyp == ElementTyp.NORMAL)){
|
||||
return EffectivnessType.EFFECTIVE;
|
||||
}else if (this.elementTyp == ElementTyp.FIRE && toCeck.getElementTyp() == ElementTyp.WATER){
|
||||
return EffectivnessType.NOTEFFECTIVE;
|
||||
}else if ((toCeck.getElementTyp() == ElementTyp.NORMAL && this.cardType == CardType.MONSTER && this.elementTyp == ElementTyp.NORMAL)){
|
||||
return EffectivnessType.NOEFFECT;
|
||||
}
|
||||
}
|
||||
throw new InternalError("Konnte die Effectiveness von den at.reisinger.Cards nicht berechnen");
|
||||
}
|
||||
|
||||
/**
|
||||
* Setztden namen der at.reisinger.Card
|
||||
* @param neuerName Name der at.reisinger.Card
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setName(String neuerName) {
|
||||
this.name = neuerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Damage der at.reisinger.Card
|
||||
* @param damage Der Damage
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setDamage(int damage) {
|
||||
this.damage = damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den ElementType der at.reisinger.Card
|
||||
* @param elementTyp Der ElementType
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setElementType(ElementTyp elementTyp) {
|
||||
this.elementTyp = elementTyp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Testet ob die beiden Karten gleich sind
|
||||
* @param card at.reisinger.Card die geprüft werden soll
|
||||
* @return True wenn die Karten übereinstimmen
|
||||
*/
|
||||
public boolean equals(Card card){
|
||||
if(card == null) return false;
|
||||
if(this.name == card.getName() && this.cardType == card.getCardType() && this.elementTyp == card.getElementTyp() && this.damage == card.getDamage()){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,67 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
/**
|
||||
* Alle coins eines Users
|
||||
*/
|
||||
public class Coins {
|
||||
private int amount;
|
||||
|
||||
/**
|
||||
* Erstellt ein neues Münzen Obj
|
||||
* @param coins Alle münzen des Users
|
||||
*/
|
||||
public Coins(int coins) {
|
||||
this.amount = coins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle münzen
|
||||
* @return Alle münzen
|
||||
*/
|
||||
public int getCoinAmount() {
|
||||
return this.amount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt münzen hinzu
|
||||
* @param coins Münzen die hinzugefügt werden -> Positiv
|
||||
* @throws NegativAmountException Wenn negative münzen hinzugefüght werden
|
||||
*/
|
||||
public void addCoin(int coins) throws NegativAmountException{
|
||||
if(coins < 0) {
|
||||
throw new NegativAmountException("Es kann kein negativer amount an at.reisinger.Coins hinzugefügt werden");
|
||||
}else {
|
||||
this.amount += coins;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Entfernt münzen
|
||||
* @param coins Münzen die entfernt werden sollen, muss positiv sein
|
||||
* @return True wenn erfolgreich
|
||||
* @throws NegativAmountException Wenn ein negativer betrag abgezogen werden soll
|
||||
*/
|
||||
public boolean removeCoin(int coins) throws NegativAmountException{
|
||||
if(coins < 0) {
|
||||
throw new NegativAmountException("Es kann kein negativer amount an at.reisinger.Coins hinzugefügt werden");
|
||||
}else {
|
||||
this.amount -= coins;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ändert den Absoluten Coin amount
|
||||
* @param coins Neue Coin anzahl, muss positiv sein
|
||||
* @return true wenn erfolgreich
|
||||
* @throws NegativAmountException Wenn ein negativer wert eingegeben wird
|
||||
*/
|
||||
public boolean changeCoinAmmount(int coins) throws NegativAmountException{
|
||||
if(coins < 0) {
|
||||
throw new NegativAmountException("Es kann kein negativer amount an at.reisinger.Coins hinzugefügt werden");
|
||||
}else {
|
||||
this.amount = coins;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
public enum EffectivnessType {
|
||||
EFFECTIVE,
|
||||
NOTEFFECTIVE,
|
||||
NOEFFECT
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
public class MonsterCard extends Card{
|
||||
public MonsterCard(String name, double damage, ElementTyp elementTyp, CardType cardType) {
|
||||
super(name, damage, elementTyp, cardType);
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
/**
|
||||
* Wenn ein negativer wert eingegeben wird aber ein Positiver erwartet wird, dann kann diese Exception geworfen werden
|
||||
*/
|
||||
public class NegativAmountException extends Exception {
|
||||
|
||||
/**
|
||||
* Aufruf des Constructors der Super class Exception
|
||||
* @param message Fehler Nachrichgt
|
||||
* @param cause Fehler Ursache
|
||||
*/
|
||||
public NegativAmountException(String message){
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
@ -1,7 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
public class SpellCard extends Card{
|
||||
public SpellCard(String name, double damage, ElementTyp elementTyp, CardType cardType) {
|
||||
super(name, damage, elementTyp, cardType);
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
/**
|
||||
* Erweitert at.reisinger.Cards insofern, dass es im at.reisinger.Stack auch ein Deck gibt
|
||||
*/
|
||||
public class Stack extends Cards{
|
||||
private Cards deck;
|
||||
|
||||
/**
|
||||
* Erstellt einen neuen at.reisinger.Stack aus den at.reisinger.User at.reisinger.Cards und seinem Deck
|
||||
* @param cards Alle at.reisinger.Cards des Users
|
||||
* @param deck Sein Deck
|
||||
*/
|
||||
public Stack(Cards cards, Cards deck) {
|
||||
super(cards.getCards());
|
||||
this.deck = deck;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt ein neues Deck in den at.reisinger.Stack ein
|
||||
* @param newCards Gesamtes Deck
|
||||
*/
|
||||
public void addDeck(Cards newCards) {
|
||||
this.deck = newCards;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das gesamte Deck
|
||||
* @return Gesamtes Deck
|
||||
*/
|
||||
public Cards getDeck() {
|
||||
return this.deck;
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht eine at.reisinger.Card aus dem Deck
|
||||
* @param toDel at.reisinger.Card zum löschen
|
||||
*/
|
||||
public void delDeck(Card toDel) {
|
||||
this.deck.delCard(toDel);
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Fügt dem deck eine neue at.reisinger.Card ein
|
||||
// * @param toAdd Neue at.reisinger.Card
|
||||
// */
|
||||
// public void addDeckCard(at.reisinger.Card toAdd){
|
||||
// this.deck.addCard(toAdd);
|
||||
// }
|
||||
}
|
@ -1,15 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface Store {
|
||||
//DBConnection db = new DBConnection();
|
||||
|
||||
void addTradingDeal(TradingDeal tradingDeal);
|
||||
|
||||
ArrayList<TradingDeal> getTradingDeals();
|
||||
|
||||
boolean doTrading(TradingDeal tradingDeal1, TradingDeal tradingDeal2);
|
||||
|
||||
ArrayList<TradingDeal> getPossibleTradingDeals(Card toTrade);
|
||||
}
|
@ -1,306 +0,0 @@
|
||||
package at.reisinger;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* at.reisinger.User & at.reisinger.Store Logik
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class User{
|
||||
@JsonProperty
|
||||
private String name, nachname, email, bio, image;
|
||||
/*
|
||||
@JsonProperty
|
||||
private Stack stack;
|
||||
*/
|
||||
//private DBConnection db;
|
||||
@JsonProperty
|
||||
private Credentials credentials;
|
||||
@JsonProperty
|
||||
private Coins coins;
|
||||
|
||||
/*
|
||||
* Erstellt einen neuen at.reisinger.User
|
||||
* @param credentials Zugangsdaten des Users
|
||||
* @param name Name des Users
|
||||
* @param nachname Nachname des Users
|
||||
* @param email Email des Users
|
||||
* @param stack Alle Karten des Users
|
||||
* @param coins Alle Münzen des Users
|
||||
|
||||
@JsonCreator
|
||||
public User(@JsonProperty Credentials credentials,@JsonProperty String name,@JsonProperty String nachname,@JsonProperty String email,@JsonProperty Stack stack,@JsonProperty Coins coins) {
|
||||
this.credentials = credentials;
|
||||
this.name = name;
|
||||
this.nachname = nachname;
|
||||
this.email = email;
|
||||
this.stack = stack;
|
||||
this.coins = coins;
|
||||
//this.db = new at.reisinger.DBConnection();
|
||||
}
|
||||
*/
|
||||
@JsonCreator
|
||||
public User(@JsonProperty Credentials credentials,@JsonProperty String name,@JsonProperty String nachname,@JsonProperty String email,@JsonProperty Coins coins, @JsonProperty String bio, @JsonProperty String image) {
|
||||
this.credentials = credentials;
|
||||
this.name = name;
|
||||
this.nachname = nachname;
|
||||
this.email = email;
|
||||
//this.stack = null;
|
||||
this.coins = coins;
|
||||
this.bio = bio;
|
||||
this.image = image;
|
||||
//this.db = new at.reisinger.DBConnection();
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt die Bio vom User
|
||||
* @return Bio des Users
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getBio() {
|
||||
return bio;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Bio vom User
|
||||
* @param bio Bio des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setBio(String bio) {
|
||||
this.bio = bio;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das image vom user
|
||||
* @return Image vom user
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt das image vom user
|
||||
* @param image Image vom user
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setImage(String image) {
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den at.reisinger.Stack des Users
|
||||
* @return at.reisinger.Stack des Users
|
||||
|
||||
@JsonGetter
|
||||
public Stack getStack() {
|
||||
return stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den at.reisinger.Stack eines Users
|
||||
* @param stack Der neue at.reisinger.Stack des Users
|
||||
|
||||
@JsonSetter
|
||||
public void setStack(Stack stack) {
|
||||
this.stack = stack;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das DB Obj
|
||||
* @return Das DB Obj
|
||||
|
||||
@JsonGetter
|
||||
public DBConnection getDb() {
|
||||
return new DBConnection();
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt ein neues DB Obj
|
||||
* @param db Das neue DB Obj
|
||||
|
||||
|
||||
@JsonSetter
|
||||
public void setDb(DBConnection db) {
|
||||
this.db = db;
|
||||
}
|
||||
|
||||
*/
|
||||
|
||||
/**
|
||||
* Holt die eindeutigen Logindaten des Users
|
||||
* @return Eindeutige Logindaten
|
||||
*/
|
||||
@JsonGetter
|
||||
public Credentials getCredentials() {
|
||||
return credentials;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die eindeutigen Logindaten
|
||||
* @param credentials Die neuen at.reisinger.Credentials des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setCredentials(Credentials credentials) {
|
||||
this.credentials = credentials;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle at.reisinger.Coins des Users
|
||||
* @return at.reisinger.Coins des Users
|
||||
*/
|
||||
@JsonGetter
|
||||
public Coins getCoins() {
|
||||
return coins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt alle at.reisinger.Coins des Users
|
||||
* @param coins Neue at.reisinger.Coins des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setCoins(Coins coins) {
|
||||
this.coins = coins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Name of at.reisinger.User
|
||||
* @return Name of at.reisinger.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Nachname of at.reisinger.User
|
||||
* @return Nachname of at.reisinger.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getNachname() {
|
||||
return this.nachname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Email of at.reisinger.User
|
||||
* @return Email of at.reisinger.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getEmail() {
|
||||
return this.email;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Namen des Users
|
||||
* @param name Neuer Name des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Nachnamen
|
||||
* @param nachname Neuer Nachname
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setNachname(String nachname) {
|
||||
this.nachname = nachname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Email des Users
|
||||
* @param email Neue Email des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
//at.reisinger.Store Methoden
|
||||
|
||||
/**
|
||||
* Kauft ein at.reisinger.Package
|
||||
* @param mypackage at.reisinger.Package welches gekauft werden soll
|
||||
* @return Alle Karten des neuen at.reisinger.Package
|
||||
* @throws NegativAmountException Wenn ein negativer Preis im at.reisinger.Package gesetzt wird.
|
||||
*/
|
||||
public ArrayList<Card> buyPackage(Package mypackage) throws NegativAmountException {
|
||||
//ArrayList<Package> availablePackages = new DBConnection().getAllPackages();
|
||||
//availablePackages.removeIf(obj -> obj.equals(mypackage));
|
||||
this.coins.removeCoin(mypackage.getPrice());
|
||||
return mypackage.getCards();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt dem at.reisinger.Store einen neuen Tradingdeal hinzu
|
||||
* @param tradingDeal Der neue Tradingdeal
|
||||
*
|
||||
public void addTradingDeal(TradingDeal tradingDeal) {
|
||||
new DBConnection().addTradingDeal(tradingDeal);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Holt alle verfügbaren Tradingdeals
|
||||
* @return Alle verfügbaren Deals
|
||||
*
|
||||
public ArrayList<TradingDeal> getTradingDeals() {
|
||||
return new DBConnection().getAllTradingDeals();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean doTrading(TradingDeal tradingDeal1, TradingDeal tradingDeal2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Startet ein Trading zw 2 TradingDeals
|
||||
* @param myTradingDeal Wenn der Deal passt, wird diese Karte aus dem at.reisinger.Stack entfernt
|
||||
* @param storeTradingDeal Wenn der Deal passt, wird diese Karte dem at.reisinger.Stack hinzugefügt
|
||||
* @return True wenn erfolgreich, False wenn die Deals nicht zusammenpassen
|
||||
|
||||
public boolean doTrading(TradingDeal myTradingDeal, TradingDeal storeTradingDeal) {
|
||||
if (storeTradingDeal.dealOk(myTradingDeal)){
|
||||
stack.delCard(myTradingDeal.getCardToTrade());
|
||||
stack.addCard(storeTradingDeal.getCardToTrade());
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Gibt alle Möglichen Trading Deals zurück
|
||||
* @param toTrade Prüft nach diesem Deal
|
||||
* @return
|
||||
*
|
||||
@Override
|
||||
public ArrayList<TradingDeal> getPossibleTradingDeals(Card toTrade) {
|
||||
ArrayList<TradingDeal> storeList = new DBConnection().getAllTradingDeals();
|
||||
ArrayList<TradingDeal> possible = new ArrayList<TradingDeal>();
|
||||
storeList.forEach(item -> {
|
||||
if(item.cardOk(toTrade)){
|
||||
System.out.println("ADDED ein item");
|
||||
possible.add(item);
|
||||
}
|
||||
});
|
||||
return possible;
|
||||
}
|
||||
|
||||
*/
|
||||
/**
|
||||
* Checkt ob es sich um den selben at.reisinger.User handelt
|
||||
* @param toCheck Mit diesem at.reisinger.User wird verglichen
|
||||
* @return True wenn es der selbe at.reisinger.User ist
|
||||
*/
|
||||
public boolean equals(User toCheck){
|
||||
if (toCheck.getCredentials().getUsername() == this.credentials.getUsername() && toCheck.getCredentials().getPasswort() == this.credentials.getPasswort()){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.enums;
|
||||
|
||||
public enum CardType {
|
||||
MONSTER, SPELL, UNDEF, GOBLIN, TROLL, ELF, KNIGHT, DRAGON, WIZZARD, ORK, KRAKEN, FIREELVES
|
@ -1,4 +1,4 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.enums;
|
||||
|
||||
public enum ElementTyp {
|
||||
WATER, FIRE, NORMAL, UNDEF, REGULAR, FEUER, WASSER
|
473
src/main/java/at/reisinger/obj/Battle.java
Normal file
473
src/main/java/at/reisinger/obj/Battle.java
Normal file
@ -0,0 +1,473 @@
|
||||
package at.reisinger.obj;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Battle {
|
||||
|
||||
private final User player1;
|
||||
private User player2;
|
||||
private int scorePlayer1;
|
||||
private int scorePlayer2;
|
||||
private final int id;
|
||||
private Cards deckPlayer1;
|
||||
private Cards deckPlayer2;
|
||||
private final Cards deckPlayer1Init;
|
||||
private Cards deckPlayer2Init;
|
||||
private final ArrayList<String> log = new ArrayList<>();
|
||||
private ArrayList<Card> d1 = new ArrayList<>(), d2 = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Erstellt ein neues Battle, im zustand offenes battle
|
||||
* @param id Id des Battles
|
||||
* @param player1 Player 1 des Battles
|
||||
* @param deckPlayer1 Deck vom Player 1 als json
|
||||
*/
|
||||
public Battle(int id, User player1, Cards deckPlayer1){
|
||||
this.id = id;
|
||||
this.player1 = player1;
|
||||
this.deckPlayer1 = deckPlayer1;
|
||||
this.scorePlayer1 = 100;
|
||||
this.scorePlayer2 = 100;
|
||||
this.deckPlayer2 = null;
|
||||
this.deckPlayer1Init = deckPlayer1;
|
||||
this.deckPlayer2Init = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Startet einen Kampf zw den beiden Playern
|
||||
* @return true bei erfolg, sonst false
|
||||
*/
|
||||
public boolean doFight(){
|
||||
System.out.println(player1.getName() + " |vs|" + player2.getName());
|
||||
|
||||
if(deckPlayer1.getCards().size() == 4 && deckPlayer2.getCards().size() == 4) {
|
||||
//SHUFFLE DECK
|
||||
this.d1 = deckPlayer1.getCards();
|
||||
this.d2 = deckPlayer2.getCards();
|
||||
Collections.shuffle(this.d1);
|
||||
Collections.shuffle(this.d2);
|
||||
deckPlayer1.setCards(this.d1);
|
||||
deckPlayer1.setCards(this.d2);
|
||||
|
||||
//Runden
|
||||
int maxroundcount = 100, counter = 0, counter2 = 0;
|
||||
while(counter<maxroundcount) {
|
||||
counter++;
|
||||
counter2++;
|
||||
if(counter2 < this.d1.size() || counter2 < this.d2.size()){
|
||||
counter2 = 0;
|
||||
}
|
||||
if (this.d1.size() > 0 && this.d2.size() > 0 && counter<=maxroundcount) {
|
||||
System.out.println("Runde: " + counter);
|
||||
System.out.println("deck 1 size: " + this.d1.size() + " Deck 2 size: " + this.d2.size() + " counter2: " + counter2);
|
||||
Card c1 = this.d1.get(counter2);
|
||||
Card c2 = this.d2.get(counter2);
|
||||
System.out.println("Card 1: " + c1.getElementTyp() + c1.getCardType() + "\nCard 2: " + c2.getElementTyp() + c2.getCardType());
|
||||
//GLEICHER TYP Monster
|
||||
if (!c1.getCardType().name().equalsIgnoreCase("SPELL") && !c2.getCardType().name().equalsIgnoreCase("SPELL")) {
|
||||
//Check ob eine der beiden Carten ein Dragon ist
|
||||
if ((c1.getCardType().name().equalsIgnoreCase("DRAGON") && !c2.getCardType().name().equalsIgnoreCase("DRAGON") || (!c1.getCardType().name().equalsIgnoreCase("DRAGON") && c2.getCardType().name().equalsIgnoreCase("DRAGON")))) {
|
||||
//Eine der Karten is Dragon
|
||||
Card dragon;
|
||||
int dragonOwner;
|
||||
if (c1.getCardType().name().equalsIgnoreCase("DRAGON")) {
|
||||
dragon = c1;
|
||||
dragonOwner = 1;
|
||||
} else if (c2.getCardType().name().equalsIgnoreCase("DRAGON")) {
|
||||
dragon = c2;
|
||||
dragonOwner = 2;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
if ((c1.getCardType().name().equalsIgnoreCase("GOBLIN") && !c2.getCardType().name().equalsIgnoreCase("GOBLIN") || (!c1.getCardType().name().equalsIgnoreCase("GOBLIN") && c2.getCardType().name().equalsIgnoreCase("GOBLIN")))) {
|
||||
//Eine der Karten ist Goblin
|
||||
Card goblin;
|
||||
if (c1.getCardType().name().equalsIgnoreCase("GOBLIN")) {
|
||||
goblin = c1;
|
||||
} else if (c2.getCardType().name().equalsIgnoreCase("GOBLIN")) {
|
||||
goblin = c2;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
if (dragon.getDamage() > goblin.getDamage()) {
|
||||
//Drache ist stärker
|
||||
if (dragonOwner == 1) {
|
||||
this.d1.add(c2);
|
||||
this.d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
} else {
|
||||
this.d2.add(c1);
|
||||
this.d1.remove(c1);
|
||||
this.scorePlayer1 -= 5;
|
||||
this.scorePlayer2 += 3;
|
||||
}
|
||||
this.log.add("Player " + dragonOwner + " gewinnt!\nDrache ist stärker! Drache: " + dragon.getDamage() + " vs Goblin: " + goblin.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: " + scorePlayer2);
|
||||
}
|
||||
} else if ((c1.getCardType().name().equalsIgnoreCase("ELF") && c1.getElementTyp().name().equalsIgnoreCase("FIRE") && !c2.getCardType().name().equalsIgnoreCase("ELF") || (!c1.getCardType().name().equalsIgnoreCase("ELF") && c2.getElementTyp().name().equalsIgnoreCase("FIRE") && c2.getCardType().name().equalsIgnoreCase("ELF")))) {
|
||||
//Eine der Karten ist der Fire Elf die andere Karte ist der drache
|
||||
Card fireelf;
|
||||
if (dragonOwner == 1) {
|
||||
fireelf = c2;
|
||||
} else {
|
||||
fireelf = c1;
|
||||
}
|
||||
|
||||
if (fireelf.getDamage() > dragon.getDamage()) {
|
||||
//Fireelf ist stärker
|
||||
if (dragonOwner == 1) {
|
||||
this.d2.add(c1);
|
||||
this.d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
} else {
|
||||
this.d1.add(c2);
|
||||
this.d2.remove(c2);
|
||||
this.scorePlayer2 -= 5;
|
||||
this.scorePlayer1 += 3;
|
||||
}
|
||||
this.log.add("Player " + dragonOwner + " gewinnt!\nWizzard ist stärker! Drache: " + dragon.getDamage() + " vs FireElves: " + fireelf.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: " + scorePlayer2);
|
||||
}
|
||||
//Sonst nix tun, weil der drache den elf ned angreifen kann
|
||||
} else {
|
||||
calculateWinnerMoveCards(c1, c2);
|
||||
}
|
||||
|
||||
//Checkt ob eine der beiden karten ein wizzard ist und der andere ein ork
|
||||
} else if ((c1.getCardType().name().equalsIgnoreCase("WIZZARD") && c2.getCardType().name().equalsIgnoreCase("ORK") || (c2.getCardType().name().equalsIgnoreCase("WIZZARD") && c1.getCardType().name().equalsIgnoreCase("ORK")))) {
|
||||
Card wizzard = null;
|
||||
Card ork = null;
|
||||
int wizzardOwner = 0;
|
||||
if (c1.getCardType().name().equalsIgnoreCase("WIZZARD")) {
|
||||
wizzardOwner = 1;
|
||||
wizzard = c1;
|
||||
ork = c2;
|
||||
} else if (c2.getCardType().name().equalsIgnoreCase("WIZZARD")) {
|
||||
wizzardOwner = 2;
|
||||
wizzard = c2;
|
||||
ork = c1;
|
||||
}
|
||||
if (wizzard != null && wizzard.getDamage() > ork.getDamage()) {
|
||||
if (wizzardOwner == 1) {
|
||||
this.d1.add(c2);
|
||||
this.d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
} else {
|
||||
this.d2.add(c1);
|
||||
this.d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
}
|
||||
|
||||
this.log.add("Player " + wizzardOwner + " gewinnt!\nWizzard ist stärker! Wizzard: " + wizzard.getDamage() + " vs Ork: " + ork.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: " + scorePlayer2);
|
||||
}
|
||||
//Sonst nix tun, weil der ork dem wizzard keinen schaden machen kann
|
||||
} else {
|
||||
//PURE MONSTER
|
||||
calculateWinnerMoveCards(c1, c2);
|
||||
//sonst nix weil bei gleichen damage --> draw
|
||||
}
|
||||
} else {//PURE SPELL & mixed
|
||||
double damagePlayer1, damagePlayer2;
|
||||
|
||||
if (c1.getCardType().name().equalsIgnoreCase("KNIGHT") || c2.getCardType().name().equalsIgnoreCase("KNIGHT")) {
|
||||
//Mixed mit "Spezialeffekt" KNIGHT
|
||||
Card knight = null, other = null;
|
||||
int knightOwner = 0;
|
||||
if (c1.getCardType().name().equalsIgnoreCase("KNIGHT")) {
|
||||
knight = c1;
|
||||
other = c2;
|
||||
knightOwner = 1;
|
||||
} else if (c2.getCardType().name().equalsIgnoreCase("KNIGHT")) {
|
||||
knight = c2;
|
||||
other = c1;
|
||||
knightOwner = 2;
|
||||
}
|
||||
double damageKnight = -1, damageOther = -1;
|
||||
if (Objects.requireNonNull(other).getElementTyp().name().equalsIgnoreCase("WATER")) {
|
||||
//tot
|
||||
damageKnight = 0;
|
||||
damageOther = other.getDamage();
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("FIRE") && Objects.requireNonNull(knight).getElementTyp().name().equals("REGULAR")) {
|
||||
//not effective
|
||||
damageKnight = knight.getDamage() / 2;
|
||||
//effective
|
||||
damageOther = other.getDamage() * 2;
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("FIRE") && Objects.requireNonNull(knight).getElementTyp().name().equals("FIRE")) {
|
||||
//no effect
|
||||
damageKnight = knight.getDamage();
|
||||
//no effect
|
||||
damageOther = other.getDamage();
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("FIRE") && Objects.requireNonNull(knight).getElementTyp().name().equals("WATER")) {
|
||||
//effective
|
||||
damageKnight = knight.getDamage() * 2;
|
||||
//not effective
|
||||
damageOther = other.getDamage() / 2;
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("REGULAR") && Objects.requireNonNull(knight).getElementTyp().name().equals("REGULAR")) {
|
||||
//no effect
|
||||
damageKnight = knight.getDamage();
|
||||
//no effect
|
||||
damageOther = other.getDamage();
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("REGULAR") && Objects.requireNonNull(knight).getElementTyp().name().equals("FIRE")) {
|
||||
//effective
|
||||
damageKnight = knight.getDamage() * 2;
|
||||
//not effective
|
||||
damageOther = other.getDamage() / 2;
|
||||
} else if (other.getElementTyp().name().equalsIgnoreCase("REGULAR") && Objects.requireNonNull(knight).getElementTyp().name().equals("WATER")) {
|
||||
//not effective
|
||||
damageKnight = knight.getDamage() / 2;
|
||||
//effective
|
||||
damageOther = other.getDamage() * 2;
|
||||
}
|
||||
if (damageKnight > damageOther) {
|
||||
if (knightOwner == 1) {
|
||||
p1win(c1,c2);
|
||||
} else {
|
||||
p2win(c1, c2);
|
||||
}
|
||||
} else if (damageKnight < damageOther) {
|
||||
if (knightOwner == 2) {
|
||||
p1win(c1, c2);
|
||||
} else {
|
||||
p2win(c1, c2);
|
||||
}
|
||||
}
|
||||
} else if (c1.getCardType().name().equalsIgnoreCase("KRAKEN") || c2.getCardType().name().equalsIgnoreCase("KRAKEN")) {
|
||||
//Mixed mit "Spezialeffekt" KRAKEN
|
||||
if (c1.getCardType().name().equalsIgnoreCase("KRAKEN")) {
|
||||
p1win(c1, c2);
|
||||
} else if (c2.getCardType().name().equalsIgnoreCase("KRAKEN")) {
|
||||
p2win(c1, c2);
|
||||
}
|
||||
} else {
|
||||
////PURE SPELL & mixed mit elementen
|
||||
//Player 1 Damage berechnen
|
||||
damagePlayer1 = calculateEffectiveness(c1, c2);
|
||||
//P2 damage
|
||||
damagePlayer2 = calculateEffectiveness(c2, c1);
|
||||
|
||||
if (damagePlayer1 > -1 && damagePlayer2 > -1) {
|
||||
if (damagePlayer1 > damagePlayer2) {
|
||||
p1win(c1, c2);
|
||||
} else if (damagePlayer2 > damagePlayer1) {
|
||||
p2win(c1, c2);
|
||||
}
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
this.deckPlayer1 = new Cards(this.d1);
|
||||
this.deckPlayer2 = new Cards(this.d2);
|
||||
}else{
|
||||
System.err.println("Einer der Spieler hat zu wenige Karten im Deck");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktion wenn Player 1 gewinnt
|
||||
* @param c1 Card player 1
|
||||
* @param c2 Card player 2
|
||||
*/
|
||||
private void p1win(Card c1, Card c2){
|
||||
this.d1.add(c2);
|
||||
this.d2.remove(c2);
|
||||
this.scorePlayer1 += 3;
|
||||
this.scorePlayer2 -= 5;
|
||||
this.log.add("Player 1 gewinnt!\n" + c1.getElementTyp() + c1.getCardType() + " ist stärker! " + c1.getElementTyp() + c1.getCardType() + ": " + c1.getDamage() + " vs " + c2.getElementTyp() + c2.getCardType() + ": " + c2.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: " + scorePlayer2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Aktion wenn Player 2 gewinnt
|
||||
* @param c1 Card player 1
|
||||
* @param c2 Card player 2
|
||||
*/
|
||||
private void p2win(Card c1, Card c2){
|
||||
this.d2.add(c1);
|
||||
this.d1.remove(c1);
|
||||
this.scorePlayer2 += 3;
|
||||
this.scorePlayer1 -= 5;
|
||||
this.log.add("Player 2 gewinnt!\n" + c2.getElementTyp() + c2.getCardType() + " ist stärker! " + c2.getElementTyp() + c2.getCardType() + ": " + c1.getDamage() + " vs " + c1.getElementTyp() + c1.getCardType() + ": " + c2.getDamage() + "\nPlayer 1 score: " + scorePlayer1 + "\nPlayer 2 score: " + scorePlayer2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Ermittelt den gewinner der Runde, moved die deck cards und setzt den score
|
||||
* @param c1 Card p1
|
||||
* @param c2 Card p2
|
||||
*/
|
||||
private void calculateWinnerMoveCards(Card c1, Card c2) {
|
||||
if (c1.getDamage() > c2.getDamage()) {
|
||||
p1win(c1, c2);
|
||||
} else if (c1.getDamage() < c2.getDamage()) {
|
||||
p2win(c1, c2);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Berechnet den Damage der Karten
|
||||
* @param c1 Card von p1
|
||||
* @param c2 Card von p2
|
||||
* @return Damage
|
||||
*/
|
||||
private double calculateEffectiveness(Card c1, Card c2){
|
||||
double damagePlayer1 = 0;
|
||||
switch (c1.getElementTyp().name().toUpperCase()) {
|
||||
case "FIRE":
|
||||
switch (c2.getElementTyp().name().toUpperCase()) {
|
||||
case "REGULAR":
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
break;
|
||||
case "WATER":
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
break;
|
||||
case "FIRE":
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "WATER":
|
||||
switch (c2.getElementTyp().name().toUpperCase()) {
|
||||
case "FIRE":
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
break;
|
||||
case "WATER":
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
break;
|
||||
case "REGULAR":
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case "REGULAR":
|
||||
switch (c2.getElementTyp().name().toUpperCase()) {
|
||||
case "WATER":
|
||||
//effective
|
||||
damagePlayer1 = c1.getDamage() * 2;
|
||||
break;
|
||||
case "FIRE":
|
||||
//not effective
|
||||
damagePlayer1 = c1.getDamage() / 2;
|
||||
break;
|
||||
case "REGULAR":
|
||||
//no effect
|
||||
damagePlayer1 = c1.getDamage();
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return damagePlayer1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the log
|
||||
* @return Das log als ArrayList
|
||||
*/
|
||||
public ArrayList<String> getLog() {
|
||||
return this.log;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get Battle id
|
||||
* @return battleID
|
||||
*/
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player 1 als User
|
||||
* @return User Obj
|
||||
*/
|
||||
public User getPlayer1() {
|
||||
return player1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Player 2 als User
|
||||
* @return User Obj
|
||||
*/
|
||||
public User getPlayer2() {
|
||||
return player2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Player 1 als User
|
||||
* @param player2 User Obj
|
||||
*/
|
||||
public void setPlayer2(User player2) {
|
||||
this.player2 = player2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Score von Player 1
|
||||
* @return Score von player
|
||||
*/
|
||||
public int getScorePlayer1() {
|
||||
return scorePlayer1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Score von Player 2
|
||||
* @return Score von player
|
||||
*/
|
||||
public int getScorePlayer2() {
|
||||
return scorePlayer2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Deck Player 1
|
||||
* @return Deck als Cards von player
|
||||
*/
|
||||
public Cards getDeckPlayer1() {
|
||||
return deckPlayer1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Deck Player 2
|
||||
* @return Deck als Cards von player
|
||||
*/
|
||||
public Cards getDeckPlayer2() {
|
||||
return deckPlayer2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Deck Player 1
|
||||
* @param deckPlayer2 Deck als Cards von player
|
||||
*/
|
||||
public void setDeckPlayer2(Cards deckPlayer2) {
|
||||
this.deckPlayer2 = deckPlayer2;
|
||||
this.deckPlayer2Init = deckPlayer2;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get starting deck von player 1
|
||||
* @return Deck wie es zu beginn des Battles war
|
||||
*/
|
||||
public Cards getDeckPlayer1Init() {
|
||||
return deckPlayer1Init;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get starting deck von player 2
|
||||
* @return Deck wie es zu beginn des Battles war
|
||||
*/
|
||||
public Cards getDeckPlayer2Init() {
|
||||
return deckPlayer2Init;
|
||||
}
|
||||
}
|
168
src/main/java/at/reisinger/obj/Card.java
Normal file
168
src/main/java/at/reisinger/obj/Card.java
Normal file
@ -0,0 +1,168 @@
|
||||
package at.reisinger.obj;
|
||||
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import at.reisinger.server.helper.EnumHelper;
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Object einer at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class Card {
|
||||
@JsonProperty
|
||||
private String name;
|
||||
@JsonProperty
|
||||
private double damage;
|
||||
@JsonProperty
|
||||
private ElementTyp elementTyp;
|
||||
@JsonProperty
|
||||
private final CardType cardType;
|
||||
@SuppressWarnings("unused")
|
||||
@JsonProperty
|
||||
private boolean locked;
|
||||
|
||||
/**
|
||||
* Erstellt eine neue at.reisinger.obj.Card mit gegebenen Eigenschaften
|
||||
* @param name Name der at.reisinger.obj.Card
|
||||
* @param damage Damage den die at.reisinger.obj.Card macht
|
||||
* @param elementTyp ElementType der at.reisinger.obj.Card
|
||||
* @param cardType at.reisinger.enums.CardType der at.reisinger.obj.Card
|
||||
*/
|
||||
public Card(String name, double damage, ElementTyp elementTyp, CardType cardType) {
|
||||
this.name = name;
|
||||
this.damage = damage;
|
||||
this.elementTyp = elementTyp;
|
||||
this.cardType = cardType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt eine neue Card mit, anhand des cardNamen werden der ElementType und der CardType automatisch bestimmt
|
||||
* @param name Name der Card (ID)
|
||||
* @param elementCardTyp ElementTyp und CardType in einem String. Beide Enums werden durch diesen String gewählt.
|
||||
* Wird kein passender Typ gefunden, dann bleibt diese Eigenschaft auf null
|
||||
* @param damage Damage der Card
|
||||
*/
|
||||
@JsonCreator
|
||||
public Card(@JsonProperty("Id") String name, @JsonProperty("Name") String elementCardTyp, @JsonProperty("Damage") double damage){
|
||||
CardType tmpCard = EnumHelper.stringToCardType(elementCardTyp);
|
||||
ElementTyp tmpElement = null;
|
||||
if(tmpCard == null){
|
||||
tmpCard = CardType.UNDEF;
|
||||
}
|
||||
|
||||
//Spezialkarten die kein element besitzen, bekommen hier ihr natürliches element zugewiesen
|
||||
switch (tmpCard.name().toLowerCase()) {
|
||||
case "dragon":
|
||||
case "fireelves":
|
||||
tmpElement = ElementTyp.FIRE;
|
||||
break;
|
||||
case "ork":
|
||||
case "wizzard":
|
||||
case "knight":
|
||||
case "troll":
|
||||
case "goblin":
|
||||
case "elf":
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
break;
|
||||
case "kraken":
|
||||
tmpElement = ElementTyp.WATER;
|
||||
break;
|
||||
}
|
||||
|
||||
if(tmpElement == null){
|
||||
tmpElement = EnumHelper.stringToElementType(elementCardTyp);
|
||||
//Deutsch übersetzung
|
||||
switch (Objects.requireNonNull(tmpElement).name().toLowerCase()) {
|
||||
case "feuer":
|
||||
tmpElement = ElementTyp.FIRE;
|
||||
break;
|
||||
case "wasser":
|
||||
tmpElement = ElementTyp.WATER;
|
||||
break;
|
||||
case "normal":
|
||||
tmpElement = ElementTyp.REGULAR;
|
||||
break;
|
||||
}
|
||||
}
|
||||
this.name = name;
|
||||
this.damage = damage;
|
||||
this.elementTyp = tmpElement;
|
||||
this.cardType = tmpCard;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den Namen der at.reisinger.obj.Card
|
||||
* @return Name der at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den Damage der at.reisinger.obj.Card
|
||||
* @return Damage der at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public double getDamage() {
|
||||
return this.damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den ElementType der at.reisinger.obj.Card
|
||||
* @return ElementType der at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public ElementTyp getElementTyp() {
|
||||
return this.elementTyp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den at.reisinger.enums.CardType der at.reisinger.obj.Card
|
||||
* @return at.reisinger.enums.CardType der at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonGetter
|
||||
public CardType getCardType() {
|
||||
return this.cardType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den namen der Card
|
||||
* @param neuerName Name der at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setName(String neuerName) {
|
||||
this.name = neuerName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Damage der at.reisinger.obj.Card
|
||||
* @param damage Der Damage
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setDamage(int damage) {
|
||||
this.damage = damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den ElementType der at.reisinger.obj.Card
|
||||
* @param elementTyp Der ElementType
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setElementType(ElementTyp elementTyp) {
|
||||
this.elementTyp = elementTyp;
|
||||
}
|
||||
|
||||
/**
|
||||
* Testet ob die beiden Karten gleich sind
|
||||
* @param card at.reisinger.obj.Card die geprüft werden soll
|
||||
* @return True wenn die Karten übereinstimmen
|
||||
*/
|
||||
public boolean equals(Card card){
|
||||
if(card == null) return false;
|
||||
return this.name.equals(card.getName()) && this.cardType == card.getCardType() && this.elementTyp == card.getElementTyp() && this.damage == card.getDamage();
|
||||
}
|
||||
}
|
@ -1,13 +1,14 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.obj;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
/**
|
||||
* Verwaltet eine Liste vo at.reisinger.Cards
|
||||
* Verwaltet eine Liste vo at.reisinger.obj.Cards
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class Cards {
|
||||
@ -16,7 +17,7 @@ public class Cards {
|
||||
|
||||
/**
|
||||
* Erstellt ein nues obj mit gegebenen Karten
|
||||
* @param cardsArrayList Die at.reisinger.Cards zum erstellen des Obj
|
||||
* @param cardsArrayList Die at.reisinger.obj.Cards zum erstellen des Obj
|
||||
*/
|
||||
@JsonCreator
|
||||
public Cards(@JsonProperty("cards") ArrayList<Card> cardsArrayList) {
|
||||
@ -32,8 +33,8 @@ public class Cards {
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt eine neue at.reisinger.Card hinzu
|
||||
* @param newCard neue at.reisinger.Card
|
||||
* Fügt eine neue at.reisinger.obj.Card hinzu
|
||||
* @param newCard neue at.reisinger.obj.Card
|
||||
*/
|
||||
@JsonSetter
|
||||
public void addCard(Card newCard) {
|
||||
@ -41,8 +42,8 @@ public class Cards {
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle at.reisinger.Cards
|
||||
* @return Alle at.reisinger.Cards
|
||||
* Holt alle at.reisinger.obj.Cards
|
||||
* @return Alle at.reisinger.obj.Cards
|
||||
*/
|
||||
@JsonGetter
|
||||
public ArrayList<Card> getCards() {
|
||||
@ -50,44 +51,34 @@ public class Cards {
|
||||
}
|
||||
|
||||
/**
|
||||
* Löscht die gegebene at.reisinger.Card
|
||||
* @param delCard at.reisinger.Card zum löschen
|
||||
* Löscht die gegebene at.reisinger.obj.Card
|
||||
* @param delCard at.reisinger.obj.Card zum löschen
|
||||
*/
|
||||
public void delCard(Card delCard) {
|
||||
this.cards.removeIf(obj -> obj.equals(delCard));
|
||||
}
|
||||
|
||||
/**
|
||||
* Prüft ob eine at.reisinger.Card in den at.reisinger.Cards vorhanden ist
|
||||
* @param toCeck at.reisinger.Card nach der in den at.reisinger.Cards gesucht werden soll
|
||||
* @return True wenn die at.reisinger.Card in den at.reisinger.Cards ist
|
||||
* Prüft ob eine at.reisinger.obj.Card in den at.reisinger.obj.Cards vorhanden ist
|
||||
* @param toCeck at.reisinger.obj.Card nach der in den at.reisinger.obj.Cards gesucht werden soll
|
||||
* @return True wenn die at.reisinger.obj.Card in den at.reisinger.obj.Cards ist
|
||||
*/
|
||||
public boolean containsCard(String toCeck){
|
||||
AtomicBoolean returnval = new AtomicBoolean(false);
|
||||
this.cards.forEach(item -> {
|
||||
if(item.getName().equals(toCeck)){
|
||||
returnval.set(true);
|
||||
}else{
|
||||
returnval.set(false);
|
||||
}
|
||||
});
|
||||
this.cards.forEach(item -> returnval.set(item.getName().equals(toCeck)));
|
||||
return returnval.get();
|
||||
}
|
||||
|
||||
/**
|
||||
* Vergleicht 2 at.reisinger.Cards Obj miteinander
|
||||
* @param toCompare at.reisinger.Cards zum vergleichen
|
||||
* @return True wenn es aus den selben at.reisinger.Cards besteht
|
||||
* Vergleicht 2 at.reisinger.obj.Cards Obj miteinander
|
||||
* @param toCompare at.reisinger.obj.Cards zum vergleichen
|
||||
* @return True wenn es aus den selben at.reisinger.obj.Cards besteht
|
||||
*/
|
||||
public boolean equals(Cards toCompare){
|
||||
if (this.cards == null && toCompare.getCards() == null){
|
||||
return true;
|
||||
}else if ((this.cards == null && toCompare.getCards() != null) || (this.cards != null && toCompare.getCards() == null)){
|
||||
return false;
|
||||
}else if(this.cards.containsAll(toCompare.getCards()) && toCompare.getCards().containsAll(this.cards)){
|
||||
return true;
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
}else return Objects.requireNonNull(this.cards).containsAll(toCompare.getCards()) && toCompare.getCards().containsAll(this.cards);
|
||||
}
|
||||
}
|
24
src/main/java/at/reisinger/obj/Coins.java
Normal file
24
src/main/java/at/reisinger/obj/Coins.java
Normal file
@ -0,0 +1,24 @@
|
||||
package at.reisinger.obj;
|
||||
|
||||
/**
|
||||
* Alle coins eines Users
|
||||
*/
|
||||
public class Coins {
|
||||
private final int amount;
|
||||
|
||||
/**
|
||||
* Erstellt ein neues Münzen Obj
|
||||
* @param coins Alle münzen des Users
|
||||
*/
|
||||
public Coins(int coins) {
|
||||
this.amount = coins;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle münzen
|
||||
* @return Alle münzen
|
||||
*/
|
||||
public int getCoinAmount() {
|
||||
return this.amount;
|
||||
}
|
||||
}
|
@ -1,13 +1,14 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.obj;
|
||||
|
||||
/**
|
||||
* at.reisinger.User Login Daten
|
||||
* at.reisinger.obj.User Login Daten
|
||||
*/
|
||||
public class Credentials {
|
||||
private String passwort, username;
|
||||
private final String passwort;
|
||||
private final String username;
|
||||
|
||||
/**
|
||||
* Startet einen neuen at.reisinger.User mit folgenden Daten
|
||||
* Startet einen neuen at.reisinger.obj.User mit folgenden Daten
|
||||
* @param username Diesem Usernamen
|
||||
* @param passwort Diesem Passwort
|
||||
*/
|
||||
@ -24,14 +25,6 @@ public class Credentials {
|
||||
return passwort;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Setzt das at.reisinger.User Passwort
|
||||
// * @param passwort Neues Passwort
|
||||
// */
|
||||
// public void setPasswort(String passwort) {
|
||||
// this.passwort = passwort;
|
||||
// }
|
||||
|
||||
/**
|
||||
* Holt den Usernamen des Users
|
||||
* @return Username
|
||||
@ -40,11 +33,4 @@ public class Credentials {
|
||||
return username;
|
||||
}
|
||||
|
||||
// /**
|
||||
// * Setzt einen neuen Usernamen
|
||||
// * @param username Neuer Username
|
||||
// */
|
||||
// public void setUsername(String username) {
|
||||
// this.username = username;
|
||||
// }
|
||||
}
|
@ -1,20 +1,20 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.obj;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
/**
|
||||
* at.reisinger.Package besteht aus 4 Karten. Ist eine Erweiterung der at.reisinger.Cards, zeigt für 4 at.reisinger.Cards den Preis und einen Packagenamen an
|
||||
* at.reisinger.obj.Package besteht aus 4 Karten. Ist eine Erweiterung der at.reisinger.obj.Cards, zeigt für 4 at.reisinger.obj.Cards den Preis und einen Packagenamen an
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class Package extends Cards{
|
||||
@JsonProperty
|
||||
private String name;
|
||||
@JsonProperty
|
||||
private int price;
|
||||
private final int price;
|
||||
|
||||
/**
|
||||
* Erstellt ein neues at.reisinger.Package mit den gegebenen Stats
|
||||
* @param stack at.reisinger.Cards des Packages
|
||||
* Erstellt ein neues at.reisinger.obj.Package mit den gegebenen Stats
|
||||
* @param stack at.reisinger.obj.Cards des Packages
|
||||
* @param name Name des Packages
|
||||
* @param price Price des Packages
|
||||
*/
|
@ -1,5 +1,7 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.obj;
|
||||
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import at.reisinger.server.helper.EnumHelper;
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
@ -9,7 +11,9 @@ import com.fasterxml.jackson.annotation.*;
|
||||
@JsonAutoDetect
|
||||
public class TradingDeal {
|
||||
@JsonProperty
|
||||
private String id, username;
|
||||
private final String id;
|
||||
@JsonProperty
|
||||
private final String username;
|
||||
@JsonProperty
|
||||
private Card cardToTrade;
|
||||
@JsonProperty
|
||||
@ -22,10 +26,11 @@ public class TradingDeal {
|
||||
/**
|
||||
* Ein TradingDeal wird erstellt
|
||||
* @param id Id des Trading deals
|
||||
* @param cardToTrade at.reisinger.Card die getauscht werden soll
|
||||
* @param cardToTrade at.reisinger.obj.Card die getauscht werden soll
|
||||
* @param requiredElementType Req ElementType für den Tausch
|
||||
* @param requiredMinDamage Req min damage für den Tausch
|
||||
* @param requiredCardType Req at.reisinger.Card Type für den Tausch
|
||||
* @param requiredCardType Req at.reisinger.obj.Card Type für den Tausch
|
||||
* @param username Username der den Deal erstellt
|
||||
*/
|
||||
public TradingDeal(String id, Card cardToTrade, ElementTyp requiredElementType, double requiredMinDamage, CardType requiredCardType, String username) {
|
||||
this.id = id;
|
||||
@ -45,9 +50,11 @@ public class TradingDeal {
|
||||
/**
|
||||
* Ein TradingDeal wird erstellt, anhand des type werden der ElementType und der CardType automatisch bestimmt
|
||||
* @param id Id des Trading deals
|
||||
* @param cardToTrade at.reisinger.Card die getauscht werden soll
|
||||
* @param cardToTrade at.reisinger.obj.Card die getauscht werden soll
|
||||
* @param type ElementTyp und CardType in einem String. Beide Enums werden durch diesen String gewählt.
|
||||
* Wird kein passender Typ gefunden, dann bleibt diese Eigenschaft auf null
|
||||
* @param username Username der den TradingDeal erstellt
|
||||
* @param requiredMinDamage Required Min Damage
|
||||
*/
|
||||
@JsonCreator
|
||||
public TradingDeal(@JsonProperty("Id") String id, @JsonProperty("CardToTrade") Card cardToTrade, @JsonProperty("MinimumDamage") double requiredMinDamage, @JsonProperty("Type") String type, String username) {
|
||||
@ -62,14 +69,6 @@ public class TradingDeal {
|
||||
return id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die id des TradingDeals
|
||||
* @param id Id des TradingDeals
|
||||
*/
|
||||
public void setId(String id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt den usernamen
|
||||
* @return Der username als String
|
||||
@ -80,18 +79,8 @@ public class TradingDeal {
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den usernamen
|
||||
* @param username Der username als String
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setUsername(String username) {
|
||||
this.username = username;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* at.reisinger.Card die getraded werden soll
|
||||
* @return at.reisinger.Card die getradet werden soll
|
||||
* at.reisinger.obj.Card die getraded werden soll
|
||||
* @return at.reisinger.obj.Card die getradet werden soll
|
||||
*/
|
||||
@JsonGetter
|
||||
public Card getCardToTrade() {
|
||||
@ -118,24 +107,16 @@ public class TradingDeal {
|
||||
|
||||
/**
|
||||
* Hole req cardtype
|
||||
* @return Req at.reisinger.CardType
|
||||
* @return Req at.reisinger.enums.CardType
|
||||
*/
|
||||
@JsonGetter
|
||||
public CardType getRequiredCardType() {
|
||||
return this.requiredCardType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den at.reisinger.User des Trades
|
||||
* @param tradingUser at.reisinger.User der Traded
|
||||
|
||||
public void setTradingUser(User tradingUser) {
|
||||
this.tradingUser = tradingUser;
|
||||
}
|
||||
*/
|
||||
/**
|
||||
* Setzt die Karte die Getradet werden soll
|
||||
* @param cardToTrade at.reisinger.Card zum tauschen
|
||||
* @param cardToTrade at.reisinger.obj.Card zum tauschen
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setCardToTrade(Card cardToTrade) {
|
||||
@ -162,7 +143,7 @@ public class TradingDeal {
|
||||
|
||||
/**
|
||||
* Setzt req cardType
|
||||
* @param requiredCardType Der Req at.reisinger.CardType
|
||||
* @param requiredCardType Der Req at.reisinger.enums.CardType
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setRequiredCardType(CardType requiredCardType) {
|
||||
@ -170,37 +151,11 @@ public class TradingDeal {
|
||||
}
|
||||
|
||||
/**
|
||||
* Vom deal im Parameter wird die at.reisinger.Card mit den Requirements von THIS verglichen
|
||||
* @param checkDeal Von diesem Deal wird die CardToTrade geprüft
|
||||
* @return True wenn der Deal passt
|
||||
*/
|
||||
public boolean dealOk(TradingDeal checkDeal){
|
||||
return this.cardOk(checkDeal.getCardToTrade());
|
||||
}
|
||||
|
||||
/**
|
||||
* Von der at.reisinger.Card im Parameter wird die at.reisinger.Card mit den Requirements von THIS verglichen
|
||||
* @param checkCard at.reisinger.Card die mit dem Deal verglichen wird
|
||||
* Von der at.reisinger.obj.Card im Parameter wird die at.reisinger.obj.Card mit den Requirements von THIS verglichen
|
||||
* @param checkCard at.reisinger.obj.Card die mit dem Deal verglichen wird
|
||||
* @return True wenn der Deal passt
|
||||
*/
|
||||
public boolean cardOk(Card checkCard){
|
||||
System.out.println(checkCard.getCardType().equals(this.requiredCardType));
|
||||
System.out.println(checkCard.getCardType().toString());
|
||||
System.out.println(this.requiredCardType.toString());
|
||||
System.out.println(" ");
|
||||
System.out.println(checkCard.getElementTyp().equals(this.requiredElementType));
|
||||
System.out.println(checkCard.getElementTyp().toString());
|
||||
System.out.println(this.requiredElementType);
|
||||
System.out.println(" ");
|
||||
System.out.println(checkCard.getDamage() >= this.requiredMinDamage);
|
||||
System.out.println(checkCard.getDamage());
|
||||
System.out.println(this.requiredMinDamage);
|
||||
if(checkCard.getCardType().equals(this.requiredCardType) && checkCard.getElementTyp().equals(this.requiredElementType) && checkCard.getDamage() >= this.requiredMinDamage){
|
||||
System.out.println("Da simma true");
|
||||
return true;
|
||||
}else {
|
||||
System.out.println("da simma false");
|
||||
return false;
|
||||
}
|
||||
return checkCard.getCardType().equals(this.requiredCardType) && (checkCard.getElementTyp().equals(this.requiredElementType) || this.requiredElementType.name().equalsIgnoreCase("undef")) && checkCard.getDamage() >= this.requiredMinDamage;
|
||||
}
|
||||
}
|
124
src/main/java/at/reisinger/obj/User.java
Normal file
124
src/main/java/at/reisinger/obj/User.java
Normal file
@ -0,0 +1,124 @@
|
||||
package at.reisinger.obj;
|
||||
|
||||
import com.fasterxml.jackson.annotation.*;
|
||||
|
||||
/**
|
||||
* User Objekt
|
||||
*/
|
||||
@JsonAutoDetect
|
||||
public class User{
|
||||
@JsonProperty
|
||||
private String name, nachname, email, bio, image;
|
||||
@JsonProperty
|
||||
private final Credentials credentials;
|
||||
|
||||
@JsonCreator
|
||||
public User(@JsonProperty Credentials credentials, @JsonProperty String name, @JsonProperty String nachname, @JsonProperty String email, @SuppressWarnings("unused") @JsonProperty Coins coins, @JsonProperty String bio, @JsonProperty String image) {
|
||||
this.credentials = credentials;
|
||||
this.name = name;
|
||||
this.nachname = nachname;
|
||||
this.email = email;
|
||||
this.bio = bio;
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt die Bio vom User
|
||||
* @return Bio des Users
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getBio() {
|
||||
return bio;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Bio vom User
|
||||
* @param bio Bio des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setBio(String bio) {
|
||||
this.bio = bio;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das image vom user
|
||||
* @return Image vom user
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getImage() {
|
||||
return image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt das image vom user
|
||||
* @param image Image vom user
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setImage(String image) {
|
||||
this.image = image;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt die eindeutigen Logindaten des Users
|
||||
* @return Eindeutige Logindaten
|
||||
*/
|
||||
@JsonGetter
|
||||
public Credentials getCredentials() {
|
||||
return credentials;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Name of at.reisinger.obj.User
|
||||
* @return Name of at.reisinger.obj.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getName() {
|
||||
return this.name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get Nachname of at.reisinger.obj.User
|
||||
* @return Nachname of at.reisinger.obj.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getNachname() {
|
||||
return this.nachname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Email of at.reisinger.obj.User
|
||||
* @return Email of at.reisinger.obj.User
|
||||
*/
|
||||
@JsonGetter
|
||||
public String getEmail() {
|
||||
return this.email;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Namen des Users
|
||||
* @param name Neuer Name des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt den Nachnamen
|
||||
* @param nachname Neuer Nachname
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setNachname(String nachname) {
|
||||
this.nachname = nachname;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt die Email des Users
|
||||
* @param email Neue Email des Users
|
||||
*/
|
||||
@JsonSetter
|
||||
public void setEmail(String email) {
|
||||
this.email = email;
|
||||
}
|
||||
|
||||
}
|
@ -1,5 +1,7 @@
|
||||
package at.reisinger;
|
||||
package at.reisinger.server;
|
||||
|
||||
import at.reisinger.obj.*;
|
||||
import at.reisinger.obj.Package;
|
||||
import at.reisinger.server.helper.JsonHelper;
|
||||
import at.reisinger.server.helper.PostgresHelper;
|
||||
|
||||
@ -14,8 +16,6 @@ import java.util.Map;
|
||||
* Die "Datenbank" sind hier nur beispieldaten.
|
||||
*/
|
||||
public class DBConnection {
|
||||
//private ArrayList<TradingDeal> tradingDeals;
|
||||
//private ArrayList<Package> packages;
|
||||
private Connection c;
|
||||
private Statement stmt;
|
||||
|
||||
@ -25,28 +25,137 @@ public class DBConnection {
|
||||
* Verbindungsaufbau zu einer DB
|
||||
*/
|
||||
public DBConnection() {
|
||||
this.c = PostgresHelper.con();
|
||||
this.c = null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Erstellt alle Tabellen die für den Betrieb der Software bennötigt werden
|
||||
* @return True bei erfolg, sonst error
|
||||
*/
|
||||
public void init() {
|
||||
PostgresHelper.executeUpdateMessage("CREATE TABLE IF NOT EXISTS USERS (username TEXT PRIMARY KEY NOT NULL, nachname TEXT NOT NULL, email TEXT NOT NULL, password TEXT NOT NULL, bio TEXT, image TEXT, coins integer default 20 not null)", "User Table created");
|
||||
PostgresHelper.executeUpdate("CREATE TABLE IF NOT EXISTS CARD(NAME TEXT not null,DAMAGE FLOAT not null,ELEMENTTYP TEXT not null,CARDTYPE TEXT not null, PRIMARY KEY (\"name\"));");
|
||||
PostgresHelper.executeUpdateMessage("create unique index IF NOT EXISTS card_name_uindex on CARD (NAME);", "Card Table created");
|
||||
PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS package(\"ID\" varchar(255) not null,name varchar(255) not null constraint name references card, i serial not null constraint package_i primary key );", "Package Table created");
|
||||
PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS user_cards(username TEXT not null constraint user_cards_users_username_fk references users,name text not null, gesperrt boolean not null);", "UserCards Table created");
|
||||
PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS user_deck(username text not null constraint user_deck_users_username_fk references users,cardname text not null);", "UserDeck 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");
|
||||
PostgresHelper.executeUpdate("create table if not exists battle(usernamecreator text not null constraint battle_users_username_fk references users,usernameplayer text constraint battle_users_username_fk_2 references users, battleid serial, deckcreator text not null);");
|
||||
PostgresHelper.executeUpdateMessage("create unique index if not exists battle_battleid_uindex on battle (battleid);", "Battle Table created");
|
||||
PostgresHelper.executeUpdate("create table IF NOT EXISTS battle_log(id int not null constraint battle_log_pk primary key, playerone text not null,playertwo text not null,playeronescore text not null,playertwoscore text not null);");
|
||||
PostgresHelper.executeUpdateMessage("create unique index IF NOT EXISTS battle_log_id_uindex on battle_log (id);", "Battle_lgo Table created");
|
||||
public boolean init() {
|
||||
ArrayList<Boolean> errors = new ArrayList<>();
|
||||
errors.add(PostgresHelper.executeUpdateMessage("CREATE TABLE IF NOT EXISTS USERS (username TEXT PRIMARY KEY NOT NULL, nachname TEXT NOT NULL, email TEXT NOT NULL, password TEXT NOT NULL, bio TEXT, image TEXT, coins integer default 20 not null)", "User Table created"));
|
||||
errors.add(PostgresHelper.executeUpdate("CREATE TABLE IF NOT EXISTS CARD(NAME TEXT not null,DAMAGE FLOAT not null,ELEMENTTYP TEXT not null,CARDTYPE TEXT not null, PRIMARY KEY (\"name\"));"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create unique index IF NOT EXISTS card_name_uindex on CARD (NAME);", "Card Table created"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS package(\"ID\" varchar(255) not null,name varchar(255) not null constraint name references card, i serial not null constraint package_i primary key );", "Package Table created"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS user_cards(username TEXT not null constraint user_cards_users_username_fk references users,name text not null, gesperrt boolean not null);", "UserCards Table created"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create table IF NOT EXISTS user_deck(username text not null constraint user_deck_users_username_fk references users,cardname text not null);", "UserDeck Table created"));
|
||||
errors.add(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"));
|
||||
errors.add(PostgresHelper.executeUpdate("create table if not exists battle(usernamecreator text not null constraint battle_users_username_fk references users,usernameplayer text constraint battle_users_username_fk_2 references users, battleid serial, deckcreator text not null);"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create unique index if not exists battle_battleid_uindex on battle (battleid);", "Battle Table created"));
|
||||
errors.add(PostgresHelper.executeUpdate("create table IF NOT EXISTS battle_log(id int not null constraint battle_log_pk primary key, playerone text not null,playertwo text not null,playeronescore text not null,playertwoscore text not null,log varchar(10485760));"));
|
||||
errors.add(PostgresHelper.executeUpdateMessage("create unique index IF NOT EXISTS battle_log_id_uindex on battle_log (id);", "Battle_lgo Table created"));
|
||||
return !errors.contains(false);
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle BattleIds an denen der User beteiligt war
|
||||
* @param username User der zu prüfen ist
|
||||
* @return Null bei fehler, sonst eine List aus den IDs
|
||||
*/
|
||||
public ArrayList<String> getAllBattleIdUser(String username){
|
||||
this.c = PostgresHelper.con();
|
||||
int id;
|
||||
ArrayList<String> battleIds = new ArrayList<>();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select id from battle_log where playerone = '" + username + "' or playertwo = '" + username + "';");
|
||||
while (rs.next()) {
|
||||
id = rs.getInt("id");
|
||||
if (id > 0) {
|
||||
battleIds.add(id + "");
|
||||
}else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
return battleIds;
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt die Letzte BattleId eines users
|
||||
* @param username Userid die geprüft werden soll
|
||||
* @return -1 bei error, sonst die letzte battleid des users
|
||||
*/
|
||||
public int getLastBattleIdUser(String username){
|
||||
this.c = PostgresHelper.con();
|
||||
int id;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select max(id) from battle_log where playerone = '" + username + "' or playertwo = '" + username + "';");
|
||||
//noinspection LoopStatementThatDoesntLoop
|
||||
while (rs.next()) {
|
||||
id = rs.getInt("max");
|
||||
if (id > 0) {
|
||||
return id;
|
||||
}else {
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das Battellog eines Bestimmten Battles
|
||||
* @param battleId Id des battles
|
||||
* @return Eine Map mit namen von player1 und player2, player1Score und player2Score und log
|
||||
*/
|
||||
public Map<String, String> getBattleLog(String battleId){
|
||||
this.c = PostgresHelper.con();
|
||||
String playerone, playertwo, score1, score2, log;
|
||||
int id;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from battle_log where id = " + battleId + ";");
|
||||
//noinspection LoopStatementThatDoesntLoop
|
||||
while (rs.next()) {
|
||||
id = rs.getInt("id");
|
||||
playerone = rs.getString("playerone");
|
||||
playertwo = rs.getString("playertwo");
|
||||
score1 = rs.getString("playeronescore");
|
||||
score2 = rs.getString("playertwoscore");
|
||||
log = rs.getString("log");
|
||||
if (id > 0 && !playerone.isEmpty() && !playertwo.isEmpty() && !score1.isEmpty() && !score2.isEmpty() && !log.isEmpty()){
|
||||
Map<String, String> map = new java.util.HashMap<>(Collections.emptyMap());
|
||||
map.put("playerone", playerone);
|
||||
map.put("playertwo", playertwo);
|
||||
map.put("playeronescore", score1);
|
||||
map.put("playertwoscore", score2);
|
||||
map.put("log", log);
|
||||
map.put("id", id+"");
|
||||
return map;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
} catch (Exception e) {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Fügt der Battle tabelle ein battle hinzu
|
||||
* @param usernamecreator Username der das Battle erstellt hat
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean addBattle(String usernamecreator){
|
||||
@ -56,8 +165,7 @@ public class DBConnection {
|
||||
if(deck != null && !deck.getCards().isEmpty()){
|
||||
String deckJson = JsonHelper.objToJson(deck.getCards());
|
||||
if (deckJson != null && !deckJson.isEmpty()){
|
||||
System.out.println("insert into battle (usernamecreator, deckcreator) VALUES (\'"+ usernamecreator + "\',\'" + deckJson +"\');");
|
||||
return PostgresHelper.executeUpdateMessage("insert into battle (usernamecreator, deckcreator) VALUES (\'"+ usernamecreator + "\',\'" + deckJson +"\');", "Battle created");
|
||||
return PostgresHelper.executeUpdateMessage("insert into battle (usernamecreator, deckcreator) VALUES ('" + usernamecreator + "','" + deckJson + "');", "Battle created");
|
||||
}else {
|
||||
return false;
|
||||
}
|
||||
@ -75,16 +183,15 @@ public class DBConnection {
|
||||
*/
|
||||
public Battle getOpenBattle(){
|
||||
this.c = PostgresHelper.con();
|
||||
ArrayList<TradingDeal> tradingDeals = new ArrayList<TradingDeal>();
|
||||
int battleid = 0;
|
||||
String usernamecreator = "", deckcreator = "";
|
||||
int battleid;
|
||||
String usernamecreator;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from battle limit 1;");
|
||||
//noinspection LoopStatementThatDoesntLoop
|
||||
while (rs.next()) {
|
||||
battleid = rs.getInt("battleid");
|
||||
usernamecreator = rs.getString("usernamecreator");
|
||||
deckcreator = rs.getString("deckcreator");
|
||||
User player1 = new DBConnection().getUser(usernamecreator);
|
||||
if(player1 != null){
|
||||
ArrayList<String> deckPlayer1Arr = new DBConnection().getDeck(usernamecreator);
|
||||
@ -122,7 +229,7 @@ public class DBConnection {
|
||||
* @return true bei erfolg sonst false
|
||||
*/
|
||||
public boolean delBattleEinladung(String battleid){
|
||||
return PostgresHelper.executeUpdateMessage("delete from battle where battleid = \'"+ battleid +"\';", "Battle req deleted");
|
||||
return PostgresHelper.executeUpdateMessage("delete from battle where battleid = '" + battleid + "';", "Battle req deleted");
|
||||
}
|
||||
|
||||
|
||||
@ -133,93 +240,15 @@ public class DBConnection {
|
||||
* @param playertwo Name vom Player 2
|
||||
* @param playeronescore Score vom Player 1
|
||||
* @param playertwoscore Score vom Player 2
|
||||
* @param log Log des Battles
|
||||
* @return true bei erfolg sonst false
|
||||
*/
|
||||
public boolean addBattleLog(String id, String playerone, String playertwo, String playeronescore, String playertwoscore){
|
||||
return PostgresHelper.executeUpdate("insert into battle_log (id, playerone, playertwo, playeronescore, playertwoscore) VALUES ("+id+",\'"+playerone+"\',\'"+playertwo+"\',\'"+playeronescore+"\',\'"+playertwoscore+"\');");
|
||||
public boolean addBattleLog(String id, String playerone, String playertwo, String playeronescore, String playertwoscore, String log){
|
||||
return PostgresHelper.executeUpdate("insert into battle_log (id, playerone, playertwo, playeronescore, playertwoscore, log) VALUES ("+id+ ",'" +playerone+ "','" +playertwo+ "','" +playeronescore+ "','" +playertwoscore+ "','" +log+ "');");
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle logs von allen battles
|
||||
* @return Jedes Battle ist in einer Map mit namen von player1 und player2, player1Score und player2Score diese Map ist in einer ArrayList
|
||||
*/
|
||||
public ArrayList<Map<String,Object>> getAllBattleLogs(){
|
||||
this.c = PostgresHelper.con();
|
||||
String player1Str, player2Str, scorePlayer1, scorePlayer2;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from battle_log;");
|
||||
ArrayList<Map<String, Object>> output = new ArrayList<Map<String, Object>>();
|
||||
while (rs.next()) {
|
||||
Map<String, Object> map = Collections.emptyMap();
|
||||
player1Str = rs.getString("playerone");
|
||||
player2Str = rs.getString("playertwo");
|
||||
scorePlayer1 = rs.getString("playeronescore");
|
||||
scorePlayer2 = rs.getString("playertwoscore");
|
||||
|
||||
User player1 = new DBConnection().getUser(player1Str);
|
||||
User player2 = new DBConnection().getUser(player2Str);
|
||||
|
||||
if(player1 != null && player2 != null){
|
||||
map.put("player1", player1);
|
||||
map.put("player2", player2);
|
||||
map.put("playeronescore", scorePlayer1);
|
||||
map.put("playertwoscore", scorePlayer2);
|
||||
output.add(map);
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt das Battellog eines Bestimmten Battles
|
||||
* @param battleid Id des battles
|
||||
* @return Eine Map mit namen von player1 und player2, player1Score und player2Score
|
||||
*/
|
||||
public Map<String, Object> getBattleLog(String battleid){
|
||||
this.c = PostgresHelper.con();
|
||||
String player1Str, player2Str, scorePlayer1, scorePlayer2;
|
||||
Map<String, Object> map = Collections.emptyMap();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from battle_log where id = \'" + battleid + "\';");
|
||||
while (rs.next()) {
|
||||
player1Str = rs.getString("playerone");
|
||||
player2Str = rs.getString("playertwo");
|
||||
scorePlayer1 = rs.getString("playeronescore");
|
||||
scorePlayer2 = rs.getString("playertwoscore");
|
||||
|
||||
User player1 = new DBConnection().getUser(player1Str);
|
||||
User player2 = new DBConnection().getUser(player2Str);
|
||||
|
||||
if(player1 != null && player2 != null){
|
||||
map.put("player1", player1);
|
||||
map.put("player2", player2);
|
||||
map.put("playeronescore", scorePlayer1);
|
||||
map.put("playertwoscore", scorePlayer2);
|
||||
return map;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Updated den Lock einer user card
|
||||
@ -228,7 +257,7 @@ public class DBConnection {
|
||||
* @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 + "\';");
|
||||
return PostgresHelper.executeUpdate("Update user_cards set gesperrt = " + lock + " where name = '" + name + "';");
|
||||
}
|
||||
|
||||
|
||||
@ -240,17 +269,15 @@ public class DBConnection {
|
||||
*/
|
||||
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 + "\';");
|
||||
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;
|
||||
}
|
||||
|
||||
@ -260,7 +287,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean deleteTradingDeal(String id){
|
||||
return PostgresHelper.executeUpdate("delete from trading where id = \'" + id + "\';");
|
||||
return PostgresHelper.executeUpdate("delete from trading where id = '" + id + "';");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -274,11 +301,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean addTradingdeal(String username, String id, double mindamage, String reqcardtype, String reqelement, String cardtotrade){
|
||||
if(PostgresHelper.executeUpdate("INSERT INTO public.trading (username, id, cardtotrade, mindamage, reqcardtype, reqelement) VALUES (\'" + username + "\',\'" + id + "\',\'" + cardtotrade + "\',\'"+ mindamage + "\',\'" + reqcardtype + "\',\'" + reqelement + "\');")){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
return PostgresHelper.executeUpdate("INSERT INTO public.trading (username, id, cardtotrade, mindamage, reqcardtype, reqelement) VALUES ('" + username + "','" + id + "','" + cardtotrade + "','" + mindamage + "','" + reqcardtype + "','" + reqelement + "');");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -287,7 +310,7 @@ public class DBConnection {
|
||||
*/
|
||||
public ArrayList<TradingDeal> getAllTradingDeals(){
|
||||
this.c = PostgresHelper.con();
|
||||
ArrayList<TradingDeal> tradingDeals = new ArrayList<TradingDeal>();
|
||||
ArrayList<TradingDeal> tradingDeals = new ArrayList<>();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from trading;");
|
||||
@ -304,12 +327,7 @@ public class DBConnection {
|
||||
Card card = new DBConnection().getCardFromID(cardtotrade);
|
||||
if(card != null){
|
||||
TradingDeal tmp = new TradingDeal(id, card, mindamage, reqcardtype +reqelement, username);
|
||||
if (tmp != null){
|
||||
tradingDeals.add(tmp);
|
||||
System.out.println("Pulled TradingDeal");
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
@ -323,14 +341,13 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Trading Deals pulled successfully");
|
||||
return tradingDeals;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setzt das Deck eines Users
|
||||
* @param username Username von dem das Deck gesetzt werden soll
|
||||
* @param deck Die ID´s des Decks in der Form einer ArrayList<String>
|
||||
* @param deck Die ID´s des Decks in der Form einer ArrayList
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean setDeck(String username, List<String> deck){
|
||||
@ -340,31 +357,38 @@ public class DBConnection {
|
||||
return false;
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
System.err.println(throwables.getMessage());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Cards allCards = getCards(username);
|
||||
Cards deckCards = new Cards(new ArrayList<>());
|
||||
int count = 0;
|
||||
if(allCards != null && deck.size() == 4){
|
||||
for (String st : deck) {
|
||||
for (Card ca: allCards.getCards()) {
|
||||
if(ca.getName().equals(st) && count < 4){
|
||||
if(deckCards.getCards().size() == 0){
|
||||
if (!delDeck(username)){
|
||||
return false;
|
||||
}
|
||||
Cards allCards = getCards(username);
|
||||
Cards deckCards = new Cards(new ArrayList<Card>());
|
||||
int count = 0;
|
||||
if(allCards != null){
|
||||
for (String st : deck) {
|
||||
for (Card ca: allCards.getCards()) {
|
||||
System.out.println("Count : " + count);
|
||||
System.out.println("CA: " + ca.getName() + " st: " + st);
|
||||
if(ca.getName().equals(st) && count < 4){
|
||||
}
|
||||
deckCards.addCard(ca);
|
||||
if(!PostgresHelper.executeUpdateMessage("INSERT INTO public.user_deck (username, cardname) VALUES (\'"+username+"\', \'"+st+"\');", "Card #"+count+" added to Deck")){
|
||||
if(deckCards.getCards().size() == 4){
|
||||
int c = 0;
|
||||
for(Card cardtmp : deckCards.getCards()){
|
||||
c++;
|
||||
if(!PostgresHelper.executeUpdateMessage("INSERT INTO public.user_deck (username, cardname) VALUES ('" +username+ "', '" +cardtmp.getName()+ "');", "Card #"+c+" added to Deck")){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
count++;
|
||||
}
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -376,16 +400,14 @@ public class DBConnection {
|
||||
*/
|
||||
public ArrayList<String> getDeck(String username){
|
||||
this.c = PostgresHelper.con();
|
||||
String cardname = "";
|
||||
Cards allCards = new Cards(new ArrayList<Card>());
|
||||
ArrayList<String> cardnamenarray = new ArrayList<String>();
|
||||
String cardname;
|
||||
ArrayList<String> cardnamenarray = new ArrayList<>();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from user_deck where username = \'" + username + "\';");
|
||||
ResultSet rs = stmt.executeQuery("select * from user_deck where username = '" + username + "';");
|
||||
while (rs.next()) {
|
||||
cardname = rs.getString("cardname");
|
||||
cardnamenarray.add(cardname);
|
||||
System.out.println("cardname = " + cardname);
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
@ -394,7 +416,6 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Deck names pulled successfully");
|
||||
return cardnamenarray;
|
||||
}
|
||||
|
||||
@ -404,7 +425,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean delDeck(String username){
|
||||
return PostgresHelper.executeUpdateMessage("delete from user_deck where username = \'" + username + "\';", "User Deck: " + username + ", deleted");
|
||||
return PostgresHelper.executeUpdateMessage("delete from user_deck where username = '" + username + "';", "User Deck: " + username + ", deleted");
|
||||
}
|
||||
|
||||
|
||||
@ -415,12 +436,6 @@ public class DBConnection {
|
||||
* @return Das Package aus dem Shop, null falls ein Fehler auftritt
|
||||
*/
|
||||
public Package userAcquirePackage(String username) {
|
||||
int coins = checkCoins(username);
|
||||
if (!(coins - 5 >= 0)) {
|
||||
return null;
|
||||
}
|
||||
updateCoins(coins - 5, username);
|
||||
|
||||
this.c = PostgresHelper.con();
|
||||
String id = "";
|
||||
try {
|
||||
@ -436,18 +451,14 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Package selected successfully");
|
||||
this.c = PostgresHelper.con();
|
||||
String packagename = "", cardname = "", elementtyp = "", cardtype = "";
|
||||
int zeilennummer = 0, damage = 0;
|
||||
Cards cards = new Cards(new ArrayList<Card>());
|
||||
String packagename = "", cardname, elementtyp, cardtype;
|
||||
int damage;
|
||||
Cards cards = new Cards(new ArrayList<>());
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select i as zeilennummer, package.\"ID\" as id, package.name as packagename, c.name as cardname, c.DAMAGE as damage, c.ELEMENTTYP as elementtyp, c.CARDTYPE as cardtype from package join card c on c.name = package.name where \"ID\" = \'" + id + "\';");
|
||||
int count = 0;
|
||||
ResultSet rs = stmt.executeQuery("select i as zeilennummer, package.\"ID\" as id, package.name as packagename, c.name as cardname, c.DAMAGE as damage, c.ELEMENTTYP as elementtyp, c.CARDTYPE as cardtype from package join card c on c.name = package.name where \"ID\" = '" + id + "';");
|
||||
while (rs.next()) {
|
||||
System.out.println(count++);
|
||||
zeilennummer = rs.getInt("zeilennummer");
|
||||
id = rs.getString("id");
|
||||
packagename = rs.getString("packagename");
|
||||
cardname = rs.getString("cardname");
|
||||
@ -467,11 +478,12 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Package pulled successfully");
|
||||
deletePackage(id);
|
||||
if(!deletePackage(id)){
|
||||
return null;
|
||||
}
|
||||
|
||||
if (cards.getCards().size() != 0 && cards != null) {
|
||||
return new Package(cards, packagename, 5);
|
||||
if (cards.getCards().size() != 0) {
|
||||
return new at.reisinger.obj.Package(cards, packagename, 5);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
@ -484,7 +496,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean delUserCard(String username, String cardname){
|
||||
return PostgresHelper.executeUpdate("delete from user_cards where username = \'"+username+"\' and name = \'"+cardname+"\';");
|
||||
return PostgresHelper.executeUpdate("delete from user_cards where username = '" +username+ "' and name = '" +cardname+ "';");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -497,7 +509,7 @@ public class DBConnection {
|
||||
Connection b = PostgresHelper.con();
|
||||
try {
|
||||
stmt = b.createStatement();
|
||||
String sql = "INSERT INTO public.user_cards (username, name, gesperrt) VALUES ( \'" + username + "\',\'" + cardName + "\', \'false\');";
|
||||
String sql = "INSERT INTO public.user_cards (username, name, gesperrt) VALUES ( '" + username + "','" + cardName + "', 'false');";
|
||||
stmt.executeUpdate(sql);
|
||||
stmt.close();
|
||||
b.close();
|
||||
@ -505,7 +517,6 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return false;
|
||||
}
|
||||
System.out.println("User got Card successfully");
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
@ -515,7 +526,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean deletePackage(String name) {
|
||||
return PostgresHelper.executeUpdateMessage("DELETE FROM package WHERE \"ID\" = \'" + name + "\';", "Package deleted successfully");
|
||||
return PostgresHelper.executeUpdateMessage("DELETE FROM package WHERE \"ID\" = '" + name + "';", "Package deleted successfully");
|
||||
}
|
||||
|
||||
|
||||
@ -523,24 +534,24 @@ public class DBConnection {
|
||||
* Coins setzten
|
||||
*
|
||||
* @param coins Anzahl die zu setzten ist
|
||||
* @param username Username von dem die Coins geupdated werden sollen
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean updateCoins(int coins, String username) {
|
||||
return PostgresHelper.executeUpdateMessage("UPDATE users SET coins = " + coins + " WHERE username = \'" + username + "\';", "Coins Updated");
|
||||
return PostgresHelper.executeUpdateMessage("UPDATE users SET coins = " + coins + " WHERE username = '" + username + "';", "Coins Updated");
|
||||
}
|
||||
|
||||
/**
|
||||
* Gibt die Anzahl an verfügbaren coins zurück
|
||||
*
|
||||
* @param username Der username von dem die Coins geholt werden sollen
|
||||
* @return Anzahl der Coins, -1 ist error
|
||||
*/
|
||||
public int checkCoins(String username) {
|
||||
System.out.println("Check coin start");
|
||||
this.c = PostgresHelper.con();
|
||||
int coins = 0;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("Select coins from users where username = \'" + username + "\';");
|
||||
ResultSet rs = stmt.executeQuery("Select coins from users where username = '" + username + "';");
|
||||
while (rs.next()) {
|
||||
coins = rs.getInt("coins");
|
||||
}
|
||||
@ -548,11 +559,9 @@ public class DBConnection {
|
||||
stmt.close();
|
||||
this.c.close();
|
||||
} catch (Exception e) {
|
||||
System.out.println("check soin error");
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return -1;
|
||||
}
|
||||
System.out.println("\nCoins: " + coins);
|
||||
return coins;
|
||||
}
|
||||
|
||||
@ -567,7 +576,7 @@ public class DBConnection {
|
||||
int count = 0;
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select count(*) from card where name = \'" + name + "\';");
|
||||
ResultSet rs = stmt.executeQuery("select count(*) from card where name = '" + name + "';");
|
||||
while (rs.next()) {
|
||||
count = rs.getInt("count");
|
||||
}
|
||||
@ -578,11 +587,7 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
System.exit(0);
|
||||
}
|
||||
if (count == 1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return count == 1;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -592,7 +597,7 @@ public class DBConnection {
|
||||
* @return true bei erfolg, false bei error
|
||||
*/
|
||||
public boolean addCard(Card card) {
|
||||
return PostgresHelper.executeUpdateMessage("insert into card (NAME, DAMAGE, ELEMENTTYP, CARDTYPE) values (\'" + card.getName() + "\',\'" + card.getDamage() + "\',\'" + card.getElementTyp().name() + "\',\'" + card.getCardType().name() + "\')", "Card added");
|
||||
return PostgresHelper.executeUpdateMessage("insert into card (NAME, DAMAGE, ELEMENTTYP, CARDTYPE) values ('" + card.getName() + "','" + card.getDamage() + "','" + card.getElementTyp().name() + "','" + card.getCardType().name() + "')", "Card added");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -630,14 +635,14 @@ public class DBConnection {
|
||||
* @param pack Pack welches hinzugefügt werden soll
|
||||
* @return True bei erfolg, false bei fehler
|
||||
*/
|
||||
public boolean addPackage(Package pack) {
|
||||
public boolean addPackage(at.reisinger.obj.Package pack) {
|
||||
for (Card ca : pack.getCards()) {
|
||||
if (!cardExists(ca.getName())) {
|
||||
if (!addCard(ca)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if(!PostgresHelper.executeUpdateMessage("INSERT INTO package (\"ID\", \"name\") values (\'" + pack.getName() + "\',\'" + ca.getName() + "\');", "Card zu Package hinzugefügt")){
|
||||
if(!PostgresHelper.executeUpdateMessage("INSERT INTO package (\"ID\", \"name\") values ('" + pack.getName() + "','" + ca.getName() + "');", "Card zu Package hinzugefügt")){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -651,10 +656,12 @@ public class DBConnection {
|
||||
* @param password Passwort des Users
|
||||
* @param nachname nachname des Users
|
||||
* @param email Email des Users
|
||||
* @param bio Bio des Users
|
||||
* @param image Image des Users
|
||||
* @return True wenn alles erfolgreich war, false wenn es nicht erfolgreich war
|
||||
*/
|
||||
public boolean addUser(String username, String password, String nachname, String email, String bio, String image) {
|
||||
return PostgresHelper.executeUpdateMessage("INSERT INTO users (username, nachname, email, password, bio, image) values (\'" + username + "\',\'" + nachname + "\',\'" + email + "\',\'" + password + "\',\'" + bio + "\',\'" + image + "\')", "User added");
|
||||
return PostgresHelper.executeUpdateMessage("INSERT INTO users (username, nachname, email, password, bio, image) values ('" + username + "','" + nachname + "','" + email + "','" + password + "','" + bio + "','" + image + "')", "User added");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -666,12 +673,7 @@ public class DBConnection {
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public boolean updateUser(String username, String bio, String image, String name){
|
||||
System.out.println("UPDATE public.users SET nachname = \'"+ name+"\', bio = \'"+bio+"\', image = \'"+image+"\' WHERE username LIKE \'"+username+"\' ESCAPE \'#\'");
|
||||
return PostgresHelper.executeUpdate("UPDATE public.users SET nachname = \'"+ name+"\', bio = \'"+bio+"\', image = \'"+image+"\' WHERE username LIKE \'"+username+"\' ESCAPE \'#\'");
|
||||
}
|
||||
/**
|
||||
private boolean updateUser(String username, String name, String bio, String image){
|
||||
return PostgresHelper.executeUpdate("UPDATE public.users SET nachname = \'"+ name +"\', bio = \'"+bio+"\', image = \'"+image+"\' WHERE username LIKE \'"+username+"\' ESCAPE \'#\'");
|
||||
return PostgresHelper.executeUpdate("UPDATE public.users SET nachname = '" + name+ "', bio = '" +bio+ "', image = '" +image+ "' WHERE username LIKE '" +username+ "' ESCAPE '#'");
|
||||
}
|
||||
|
||||
/**
|
||||
@ -680,17 +682,15 @@ public class DBConnection {
|
||||
*
|
||||
* @param uname Username der zu suchen ist
|
||||
* @return User als User Objekt, null bei fehler
|
||||
* @throws SQLException Fehler bei der Suche in der DB
|
||||
*/
|
||||
public User getUser(String uname) throws SQLException {
|
||||
public User getUser(String uname){
|
||||
this.c = PostgresHelper.con();
|
||||
String username = "", password = "", email = "", nachname = "", bio="", image="";
|
||||
String username = "", password = "", email = "", bio="", image="";
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM users where username = \'" + uname + "\';");
|
||||
ResultSet rs = stmt.executeQuery("SELECT * FROM users where username = '" + uname + "';");
|
||||
while (rs.next()) {
|
||||
username = rs.getString("username");
|
||||
nachname = rs.getString("nachname");
|
||||
email = rs.getString("email");
|
||||
password = rs.getString("password");
|
||||
bio = rs.getString("bio");
|
||||
@ -703,7 +703,6 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("User pulled successfully");
|
||||
return new User(new Credentials(username, password), username, username, email, new Coins(20), bio, image);
|
||||
}
|
||||
|
||||
@ -713,20 +712,15 @@ public class DBConnection {
|
||||
* @return Null bei error
|
||||
*/
|
||||
public Card getCardFromID(String id){
|
||||
System.out.println(id);
|
||||
Connection b = PostgresHelper.con();
|
||||
Card toreturn = null;
|
||||
try {
|
||||
stmt = b.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from card where NAME = \'" + id + "\';");
|
||||
ResultSet rs = stmt.executeQuery("select * from card where NAME = '" + id + "';");
|
||||
while (rs.next()) {
|
||||
int damage =rs.getInt("damage");
|
||||
String elementtyp =rs.getString("elementtyp");
|
||||
String cardtype=rs.getString("cardtype");
|
||||
System.out.println("damage = " + damage);
|
||||
System.out.println("elementtyp = " + elementtyp);
|
||||
System.out.println("cardtype = " + cardtype);
|
||||
System.out.println();
|
||||
toreturn = new Card(id, elementtyp+cardtype, damage);
|
||||
}
|
||||
rs.close();
|
||||
@ -736,13 +730,7 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
if (toreturn != null){
|
||||
System.out.println("Card pulled successfully");
|
||||
return toreturn;
|
||||
}else {
|
||||
System.out.println("Card NOT pulled");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@ -751,20 +739,16 @@ public class DBConnection {
|
||||
* @return Falls null, dann war ein error
|
||||
*/
|
||||
public Cards getCardsFromIDList(List<String> cardnamenarray){
|
||||
Cards allCards = new Cards(new ArrayList<Card>());
|
||||
Cards allCards = new Cards(new ArrayList<>());
|
||||
for (String st : cardnamenarray) {
|
||||
Connection b = PostgresHelper.con();
|
||||
try {
|
||||
stmt = b.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from card where NAME = \'" + st + "\';");
|
||||
ResultSet rs = stmt.executeQuery("select * from card where NAME = '" + st + "';");
|
||||
while (rs.next()) {
|
||||
int damage =rs.getInt("damage");
|
||||
String elementtyp =rs.getString("elementtyp");
|
||||
String cardtype=rs.getString("cardtype");
|
||||
System.out.println("damage = " + damage);
|
||||
System.out.println("elementtyp = " + elementtyp);
|
||||
System.out.println("cardtype = " + cardtype);
|
||||
System.out.println();
|
||||
allCards.addCard(new Card(st, elementtyp+cardtype, damage));
|
||||
}
|
||||
rs.close();
|
||||
@ -774,7 +758,6 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Card pulled successfully");
|
||||
}
|
||||
return allCards;
|
||||
}
|
||||
@ -786,18 +769,14 @@ public class DBConnection {
|
||||
*/
|
||||
public Cards getCards(String username){
|
||||
this.c = PostgresHelper.con();
|
||||
String cardname = "";
|
||||
boolean locked;
|
||||
Cards allCards = new Cards(new ArrayList<Card>());
|
||||
ArrayList<String> cardnamenarray = new ArrayList<String>();
|
||||
String cardname;
|
||||
ArrayList<String> cardnamenarray = new ArrayList<>();
|
||||
try {
|
||||
stmt = this.c.createStatement();
|
||||
ResultSet rs = stmt.executeQuery("select * from user_cards where username = \'" + username + "\';");
|
||||
ResultSet rs = stmt.executeQuery("select * from user_cards where username = '" + username + "';");
|
||||
while (rs.next()) {
|
||||
cardname = rs.getString("name");
|
||||
locked = rs.getBoolean("gesperrt");
|
||||
cardnamenarray.add(cardname);
|
||||
System.out.println("cardname = " + cardname);
|
||||
}
|
||||
rs.close();
|
||||
stmt.close();
|
||||
@ -806,26 +785,6 @@ public class DBConnection {
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
return null;
|
||||
}
|
||||
System.out.println("Card Namen pulled successfully");
|
||||
return getCardsFromIDList(cardnamenarray);
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt alle verfügbaren TradingDeals
|
||||
*
|
||||
* @return Alle Trading Deals
|
||||
|
||||
public ArrayList<TradingDeal> getAllTradingDeals() {
|
||||
return this.tradingDeals;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fügt einen neuen Tradingdeal zum at.reisinger.Store hinzu
|
||||
*
|
||||
* @param tradingDeal Der neue Deal
|
||||
|
||||
public void addTradingDeal(TradingDeal tradingDeal) {
|
||||
this.tradingDeals.add(tradingDeal);
|
||||
}
|
||||
*/
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package at.reisinger.server;
|
||||
|
||||
import at.reisinger.DBConnection;
|
||||
import at.reisinger.server.objects.Request;
|
||||
import at.reisinger.server.objects.Response;
|
||||
|
||||
@ -13,20 +12,20 @@ import java.net.Socket;
|
||||
* Vereint alle anderen Klassen
|
||||
*/
|
||||
public class Main {
|
||||
static final int port = 80;
|
||||
static final int port = 10001;
|
||||
private Socket socket;
|
||||
private int id;
|
||||
|
||||
/**
|
||||
* Initial Start
|
||||
* @param args Nicht Verwendet
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
System.out.println("DB init");
|
||||
new DBConnection().init();
|
||||
if (!new DBConnection().init()) {
|
||||
System.err.println("DB init failed");
|
||||
System.exit(0);
|
||||
}
|
||||
System.out.println("\n\nStarte Server auf Port " + port + "\n\n");
|
||||
new Main(port);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@ -34,12 +33,10 @@ public class Main {
|
||||
* @param port Port auf dem der Server läuft
|
||||
*/
|
||||
public Main(int port){
|
||||
ServerSocket serverSocket = null;
|
||||
ServerSocket serverSocket;
|
||||
try {
|
||||
serverSocket = new ServerSocket(port);
|
||||
|
||||
//this.msgHandler = new MsgHandler();
|
||||
//this.id = 0;
|
||||
//noinspection InfiniteLoopStatement
|
||||
while (true){
|
||||
this.socket = serverSocket.accept();
|
||||
requestResponding();
|
||||
@ -54,14 +51,11 @@ public class Main {
|
||||
*/
|
||||
public void requestResponding(){
|
||||
try{
|
||||
System.out.println("Socket von Client #" + this.id + " wurde gestartet!");
|
||||
Request rq = new Request(this.socket, this.id);
|
||||
System.out.println("req done");
|
||||
new Response(this.id, rq.getUrl(), rq.getCmd(), rq.getOut(), rq.getAuthString(), rq.getPayload());
|
||||
System.out.println("res done");
|
||||
//this.msgHandler = rp.getMsghandler();
|
||||
System.out.println("Socket wurde gestartet!");
|
||||
Request rq = new Request(this.socket);
|
||||
new Response(rq.getUrl(), rq.getCmd(), rq.getOut(), rq.getAuthString(), rq.getPayload());
|
||||
this.socket.close();
|
||||
System.out.println("Socket von Client #" + this.id + " wurde geschlossen!");
|
||||
System.out.println("Socket wurde geschlossen!");
|
||||
}catch (IOException e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package at.reisinger.server.helper;
|
||||
|
||||
import at.reisinger.CardType;
|
||||
import at.reisinger.ElementTyp;
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
|
||||
/**
|
||||
* Hilft beim manipulieren von enums
|
||||
|
@ -1,14 +1,10 @@
|
||||
package at.reisinger.server.helper;
|
||||
|
||||
import at.reisinger.Card;
|
||||
import at.reisinger.Cards;
|
||||
import at.reisinger.Package;
|
||||
import at.reisinger.User;
|
||||
import at.reisinger.obj.User;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@ -18,24 +14,12 @@ import java.util.Map;
|
||||
public class JsonHelper {
|
||||
|
||||
/**
|
||||
* Wandelt ein Package in form einer ArrayList<Card> om ein Json um
|
||||
* @param listCards Cards die in dem Json stehen sollen
|
||||
* @param name Name des Packages
|
||||
* @return Json String des Packages
|
||||
*/
|
||||
public static String packageListToJson(ArrayList<Card> listCards, String name){
|
||||
Package packageCards = new Package(new Cards(listCards),name, 5);
|
||||
return objToJson(packageCards);
|
||||
}
|
||||
|
||||
/**
|
||||
* Wandelt ein Package Objekt in ein Json um
|
||||
* Wandelt ein Objekt in ein Json um
|
||||
* @param obj Objekt das in ein Json umgewandelt werden soll
|
||||
* @return Json String des Packages
|
||||
*/
|
||||
public static String objToJson(Object obj){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
objectMapper = new ObjectMapper();
|
||||
String packageJson = "";
|
||||
if(obj != null) {
|
||||
try {
|
||||
@ -49,29 +33,6 @@ public class JsonHelper {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Json wird in ein Card Objekt umgewandelt
|
||||
* @param json Json das umgewandelt werden soll
|
||||
* @return Null bei JsonProcessingException
|
||||
*/
|
||||
public static Card jsonToCard(String json){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
Card card = null;
|
||||
try {
|
||||
card = objectMapper.readValue(json, Card.class);
|
||||
if(card != null) {
|
||||
return card;
|
||||
}else{
|
||||
return null;
|
||||
}
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Json zu List
|
||||
* @param payload Json String
|
||||
@ -80,7 +41,8 @@ public class JsonHelper {
|
||||
public static List<String> jsonPayloadToList(String payload){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
try {
|
||||
return objectMapper.readValue(payload, new TypeReference<List<String>>(){});
|
||||
return objectMapper.readValue(payload, new TypeReference<>() {
|
||||
});
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
@ -95,14 +57,19 @@ public class JsonHelper {
|
||||
public static Map<String, Object> jsonPayloadToMap(String payload){
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
try {
|
||||
return objectMapper.readValue(payload, new TypeReference<Map<String,Object>>(){});
|
||||
return objectMapper.readValue(payload, new TypeReference<>() {
|
||||
});
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
/**
|
||||
* Wandelt ein Objekt in ein Json um
|
||||
* @param user Objekt das in ein Json umgewandelt werden soll
|
||||
* @return Json String des Packages
|
||||
*/
|
||||
public static String userToJson(User user){
|
||||
return objToJson(user);
|
||||
}
|
||||
|
@ -23,7 +23,6 @@ public class PostgresHelper {
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
System.err.println(e.getClass().getName() + ": " + e.getMessage());
|
||||
System.exit(0);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
@ -31,6 +30,7 @@ public class PostgresHelper {
|
||||
/**
|
||||
* Führt ein Sql statement ohne rückgabe aus, mit message nachricht
|
||||
* @param sql Sql command
|
||||
* @param message Mesasage die vor dem Durchführen angezeigt wird
|
||||
* @return True bei erfolg, sonst false
|
||||
*/
|
||||
public static boolean executeUpdateMessage(String sql, String message){
|
||||
|
23
src/main/java/at/reisinger/server/helper/ResponseHelper.java
Normal file
23
src/main/java/at/reisinger/server/helper/ResponseHelper.java
Normal file
@ -0,0 +1,23 @@
|
||||
package at.reisinger.server.helper;
|
||||
|
||||
/**
|
||||
* Einige helper Funktionen der Respone Class
|
||||
*/
|
||||
public class ResponseHelper {
|
||||
|
||||
public static StringBuilder logLineBreak(String log){
|
||||
StringBuilder resString = new StringBuilder();
|
||||
for (char lo: log.toCharArray()){
|
||||
if(lo == ','){
|
||||
resString.append("\n");
|
||||
}else if(lo == '['){
|
||||
resString.append("\n");
|
||||
}else if(lo == ']'){
|
||||
resString.append("\n");
|
||||
}else {
|
||||
resString.append(lo);
|
||||
}
|
||||
}
|
||||
return resString;
|
||||
}
|
||||
}
|
@ -6,6 +6,7 @@ import java.io.InputStreamReader;
|
||||
import java.io.PrintStream;
|
||||
import java.net.Socket;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -14,29 +15,24 @@ import java.util.List;
|
||||
*/
|
||||
public class Request {
|
||||
|
||||
private final Socket socket;
|
||||
private final int id;
|
||||
private PrintStream out;
|
||||
private String cmd;
|
||||
private String url;
|
||||
private final StringBuilder rqBuilder;
|
||||
private String payload;
|
||||
private String authString;
|
||||
private final PrintStream out;
|
||||
private final String cmd;
|
||||
private final String url;
|
||||
private final String payload;
|
||||
private final String authString;
|
||||
|
||||
/**
|
||||
* Get Request
|
||||
* Besorgt alle nötigen infos aus dem request
|
||||
* @param socket Socket von dem der Request kommt
|
||||
* @param id Thread ID
|
||||
* @throws IOException Input Output Exception
|
||||
*/
|
||||
public Request(Socket socket, int id) throws IOException {
|
||||
this.socket = socket;
|
||||
this.rqBuilder = new StringBuilder();
|
||||
this.id = id;
|
||||
this.out = new PrintStream(this.socket.getOutputStream());
|
||||
public Request(Socket socket) throws IOException {
|
||||
StringBuilder rqBuilder = new StringBuilder();
|
||||
this.out = new PrintStream(socket.getOutputStream());
|
||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||
String line = bufferedReader.readLine();
|
||||
while (!line.isBlank()) {
|
||||
rqBuilder.append(line + "\r\n");
|
||||
rqBuilder.append(line).append("\r\n");
|
||||
line = bufferedReader.readLine();
|
||||
System.out.println(line);
|
||||
}
|
||||
@ -59,11 +55,7 @@ public class Request {
|
||||
this.url = path;
|
||||
this.cmd = method;
|
||||
|
||||
List<String> headers = new ArrayList<>();
|
||||
for (int h = 2; h < requestsLines.length; h++) {
|
||||
String header = requestsLines[h];
|
||||
headers.add(header);
|
||||
}
|
||||
List<String> headers = new ArrayList<>(Arrays.asList(requestsLines).subList(2, requestsLines.length));
|
||||
|
||||
|
||||
|
||||
@ -73,11 +65,11 @@ public class Request {
|
||||
if(headers.toString().contains("Authorization: Basic")) {
|
||||
int authIndex = headers.toString().indexOf("Authorization: Basic");
|
||||
String authString = headers.toString().substring(authIndex + 21);
|
||||
System.out.println("AUTH STRING: " + authString);
|
||||
int authIndexEnd = authString.indexOf(',');
|
||||
System.out.println("INDEX OF: " + authIndexEnd);
|
||||
if(authIndexEnd == -1){
|
||||
authIndexEnd = authString.indexOf(']');
|
||||
}
|
||||
authString = authString.substring(0, authIndexEnd);
|
||||
System.out.println("AUTH STRING: " + authString);
|
||||
|
||||
this.authString = authString;
|
||||
}else{
|
||||
@ -94,9 +86,9 @@ public class Request {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get PrintStream --> Output
|
||||
* Get PrintStream : Output
|
||||
*
|
||||
* @return out PrintStream --> Output
|
||||
* @return out PrintStream : Output
|
||||
*/
|
||||
public PrintStream getOut() {
|
||||
return this.out;
|
||||
|
@ -1,79 +1,70 @@
|
||||
package at.reisinger.server.objects;
|
||||
|
||||
import at.reisinger.*;
|
||||
import at.reisinger.Package;
|
||||
import at.reisinger.obj.*;
|
||||
import at.reisinger.obj.Package;
|
||||
import at.reisinger.server.DBConnection;
|
||||
import at.reisinger.server.helper.JsonHelper;
|
||||
import at.reisinger.server.helper.PostgresHelper;
|
||||
import at.reisinger.server.helper.ResponseHelper;
|
||||
import com.fasterxml.jackson.core.JsonProcessingException;
|
||||
import com.fasterxml.jackson.core.type.TypeReference;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.postgresql.shaded.com.ongres.scram.common.bouncycastle.pbkdf2.Pack;
|
||||
|
||||
import java.io.PrintStream;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Base64;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Erstellt und sendet eine Response anhand des Requests
|
||||
* @author Georg Reisinger
|
||||
*/
|
||||
public class Response {
|
||||
|
||||
//private final Socket socket;
|
||||
private final int id;
|
||||
private PrintStream out;
|
||||
private String cmd;
|
||||
private String url;
|
||||
private String payload;
|
||||
private String authString;
|
||||
private final PrintStream out;
|
||||
private final String url;
|
||||
private final String payload;
|
||||
private final String authString;
|
||||
|
||||
/**
|
||||
* Nimmt die Daten des requests und generiert eine Response
|
||||
* @param id Thread Id
|
||||
* @param url Request Url
|
||||
* @param cmd Request CMD
|
||||
* @param out out Print Stream
|
||||
* @param authString Der MsgHandler
|
||||
* @param payload Payload des Requests
|
||||
*/
|
||||
public Response(int id, String url, String cmd, PrintStream out, String authString, String payload){
|
||||
this.id = id;
|
||||
public Response(String url, String cmd, PrintStream out, String authString, String payload){
|
||||
this.authString = authString;
|
||||
this.url = url;
|
||||
this.cmd = cmd;
|
||||
this.out = out;
|
||||
this.payload = payload;
|
||||
if (this.url != null) {
|
||||
if (this.cmd.equals("GET")) {
|
||||
switch (cmd) {
|
||||
case "GET":
|
||||
if (login()) {
|
||||
getMethodes();
|
||||
} else {
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.cmd.equals("POST")){
|
||||
break;
|
||||
case "POST":
|
||||
try {
|
||||
postMethodes();
|
||||
} catch (JsonProcessingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}else if (this.cmd.equals("PUT")){
|
||||
break;
|
||||
case "PUT":
|
||||
if (login()) {
|
||||
putMethodes();
|
||||
} else {
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.cmd.equals("DELETE")){
|
||||
if(login()) {
|
||||
break;
|
||||
case "DELETE":
|
||||
deleteMethodes();
|
||||
}else{
|
||||
sendError("401");
|
||||
}
|
||||
}else{
|
||||
sendError("405");
|
||||
break;
|
||||
default:
|
||||
sendResponse(cmd + " not found!", "405");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -85,21 +76,15 @@ public class Response {
|
||||
private void getMethodes(){
|
||||
if (this.url.startsWith("/users")) {
|
||||
String username = this.url.substring(this.url.lastIndexOf('/') + 1);
|
||||
System.out.println("Username in /users/{username}: " + username);
|
||||
User user = null;
|
||||
try {
|
||||
User user;
|
||||
user = new DBConnection().getUser(username);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
sendError("401");
|
||||
}
|
||||
if (user != null){
|
||||
String userJson = JsonHelper.userToJson(user);
|
||||
if(userJson != null && !userJson.isEmpty()){
|
||||
sendResponse(userJson, "200");
|
||||
}
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("Get User Error", "500");
|
||||
}
|
||||
} else if (this.url.startsWith("/cards")) {
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
@ -108,15 +93,14 @@ public class Response {
|
||||
if (jsonCards != null && !jsonCards.isEmpty()){
|
||||
sendResponse(jsonCards, "200");
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("Cards to Json error", "500");
|
||||
}
|
||||
}else if(this.url.startsWith("/deck")) {
|
||||
String format = this.url.substring(this.url.lastIndexOf('?') + 1);
|
||||
System.out.println("Format in /deck?{format=plain}: " + format);
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
ArrayList<String> allCards = new DBConnection().getDeck(username);
|
||||
Cards deck = null;
|
||||
Object tmp = null;
|
||||
Cards deck;
|
||||
Object tmp;
|
||||
if(format.startsWith("format=plain")){
|
||||
tmp = allCards;
|
||||
}else{
|
||||
@ -127,22 +111,62 @@ public class Response {
|
||||
if (jsonCards != null && !jsonCards.isEmpty()) {
|
||||
sendResponse(jsonCards, "200");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "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 != ""){
|
||||
if(json != null && !json.equals("")){
|
||||
sendResponse(json, "200");
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("Trading Deals to Json error", "500");
|
||||
}
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("Keine Trading Deals gefunden", "500");
|
||||
}
|
||||
}else if(this.url.startsWith("/score")) {
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
if (username != null && !username.isEmpty()){
|
||||
int lastBallteId = new DBConnection().getLastBattleIdUser(username);
|
||||
if (lastBallteId > -1){
|
||||
Map<String, String> map = new DBConnection().getBattleLog(lastBallteId + "");
|
||||
if(map != null && !map.isEmpty()){
|
||||
sendResponse("BATTLE #" + map.get("id") + "\nSCORE\n" + map.get("playerone") + "(#Player1) |vs| " + map.get("playertwo") + "(#Player2) \n" + map.get("playeronescore") + "(#Player1) |vs| " + map.get("playertwoscore") + "(#Player2) \nGame LOG:\n" + ResponseHelper.logLineBreak(map.get("log")), "200");
|
||||
}else {
|
||||
sendResponse("Konnte Battle log nicht holen", "500");
|
||||
}
|
||||
}else {
|
||||
sendError("204");
|
||||
sendResponse("Last Battle ID error", "500");
|
||||
}
|
||||
|
||||
}else{
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if(this.url.startsWith("/stats")) {
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
if (username != null && !username.isEmpty()) {
|
||||
ArrayList<String> battleIds = new DBConnection().getAllBattleIdUser(username);
|
||||
if (battleIds != null && !battleIds.isEmpty()){
|
||||
StringBuilder resString = new StringBuilder();
|
||||
for(String i : battleIds){
|
||||
Map<String, String> map = new DBConnection().getBattleLog(i + "");
|
||||
if(map != null && !map.isEmpty()){
|
||||
resString = new StringBuilder("BATTLE #" + map.get("id") + "\nSCORE\n" + map.get("playerone") + "(#Player1) |vs| " + map.get("playertwo") + "(#Player2) \n" + map.get("playeronescore") + "(#Player1) |vs| " + map.get("playertwoscore") + "(#Player2) \nGame LOG:\n");
|
||||
resString.append(ResponseHelper.logLineBreak(map.get("log")));
|
||||
}else {
|
||||
sendResponse("Konnte Battle log nicht holen", "500");
|
||||
}
|
||||
}
|
||||
sendResponse(resString.toString(), "200");
|
||||
}else {
|
||||
sendResponse("Konnte Battle ids ned holen", "500");
|
||||
}
|
||||
}else{
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else{
|
||||
sendResponse(this.url + " not found!", "404");
|
||||
}
|
||||
}
|
||||
|
||||
@ -155,10 +179,7 @@ public class Response {
|
||||
*/
|
||||
private boolean basicAuth(String username, String password, String compareTo){
|
||||
String authStringEnc = basicAuthBase64(username, password);
|
||||
if (compareTo.equals(authStringEnc)){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return compareTo.equals(authStringEnc);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,8 +191,7 @@ public class Response {
|
||||
private String basicAuthBase64(String username, String password){
|
||||
String authString = username + ":" + password;
|
||||
byte[] authEncBytes = Base64.getEncoder().encode(authString.getBytes());
|
||||
String authStringEnc = new String(authEncBytes);
|
||||
return authStringEnc;
|
||||
return new String(authEncBytes);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -188,7 +208,7 @@ public class Response {
|
||||
}else{
|
||||
values = null;
|
||||
}
|
||||
return values[0];
|
||||
return Objects.requireNonNull(values)[0];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -201,84 +221,86 @@ public class Response {
|
||||
private void postMethodes() throws JsonProcessingException {
|
||||
if (this.url.startsWith("/users")) {
|
||||
Map<String, Object> map = JsonHelper.jsonPayloadToMap(this.payload);
|
||||
String username = (String) map.get("Username");
|
||||
String username = (String) Objects.requireNonNull(map).get("Username");
|
||||
String password = (String) map.get("Password");
|
||||
User newUser = new User(new Credentials(username, password), username, username, "not implemented", new Coins(20), "BIO", "IMAGE");
|
||||
System.out.println("CON DB");
|
||||
DBConnection con = new DBConnection();
|
||||
if(!con.addUser(newUser.getCredentials().getUsername(), newUser.getCredentials().getPasswort(), newUser.getCredentials().getUsername(), newUser.getEmail(), newUser.getBio(), newUser.getImage())){
|
||||
sendError("409");
|
||||
sendResponse("", "409");
|
||||
}
|
||||
String userJson = JsonHelper.userToJson(newUser);;
|
||||
String userJson = JsonHelper.userToJson(newUser);
|
||||
if(userJson != null) {
|
||||
sendResponse(userJson, "201");
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}else if (this.url.startsWith("/sessions")) {
|
||||
Map<String, Object> map = JsonHelper.jsonPayloadToMap(this.payload);
|
||||
String username = (String) map.get("Username");
|
||||
String username = (String) Objects.requireNonNull(map).get("Username");
|
||||
String password = (String) map.get("Password");
|
||||
User user = null;
|
||||
User user;
|
||||
|
||||
DBConnection con = new DBConnection();
|
||||
try {
|
||||
user = con.getUser(username);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
|
||||
String authString = basicAuthBase64(user.getCredentials().getUsername(), user.getCredentials().getPasswort());
|
||||
if(basicAuth(username, password, authString)){
|
||||
sendResponse(authString, "200");
|
||||
}else{
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.url.startsWith("/packages")) {
|
||||
if (basicAuth("admin", "istrator", this.authString)) {
|
||||
ObjectMapper objectMapper = new ObjectMapper();
|
||||
ArrayList<Card> listCards = objectMapper.readValue(this.payload, new TypeReference<ArrayList<Card>>() {
|
||||
ArrayList<Card> listCards = objectMapper.readValue(this.payload, new TypeReference<>() {
|
||||
});
|
||||
Package packageCards = new Package(new Cards(listCards), new DBConnection().nextPackageId() + "", 5);
|
||||
if (!new DBConnection().addPackage(packageCards)) {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
} else {
|
||||
String packageJson = JsonHelper.objToJson(packageCards);
|
||||
if (packageJson != null) {
|
||||
sendResponse(packageJson, "201");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.url.startsWith("/transactions/packages")) {
|
||||
if (login()) {
|
||||
DBConnection db = new DBConnection();
|
||||
Package newPackage = db.userAcquirePackage(basicAuthGetUsername(this.authString));
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
int coins = new DBConnection().checkCoins(username);
|
||||
if (!(coins - 5 >= 0)) {
|
||||
sendResponse("Nur " + coins + " von 5 coins vorhanden", "500");
|
||||
}else {
|
||||
Package newPackage = db.userAcquirePackage(username);
|
||||
if (newPackage == null) {
|
||||
sendError("500");
|
||||
sendResponse("Kein Package mehr vorhanden", "500");
|
||||
} else {
|
||||
String packageJson = JsonHelper.objToJson(newPackage);
|
||||
if (packageJson == null) {
|
||||
sendError("500");
|
||||
sendResponse("Package to Json error", "500");
|
||||
} else {
|
||||
if(!new DBConnection().updateCoins(coins - 5, username)){
|
||||
sendResponse("User coins konnten ned gesetzt werden", "500");
|
||||
}
|
||||
sendResponse(packageJson, "200");
|
||||
}
|
||||
}
|
||||
}
|
||||
}else{
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.url.startsWith("/tradings")) {
|
||||
if(login()) {
|
||||
String dotradeid = this.url.substring(this.url.lastIndexOf('/') + 1);
|
||||
System.out.println("DO TradeID in /tradings/{tradeID}: " + dotradeid);
|
||||
if (!dotradeid.isEmpty() && dotradeid != null && !dotradeid.equals("tradings")) {
|
||||
if (!dotradeid.isEmpty() && !dotradeid.equals("tradings")) {
|
||||
//DO TRADE
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
if (username != null && !username.isEmpty()) {
|
||||
System.out.println(this.payload);
|
||||
ArrayList<TradingDeal> tradingDealArrayList = new DBConnection().getAllTradingDeals();
|
||||
TradingDeal tradingDeal = null;
|
||||
if (tradingDealArrayList != null && !tradingDealArrayList.isEmpty()) {
|
||||
@ -290,6 +312,7 @@ public class Response {
|
||||
Card card = new DBConnection().getCardFromID(this.payload);
|
||||
if (card != null) {
|
||||
if (tradingDeal != null) {
|
||||
if (!tradingDeal.getUsername().equals(username)){
|
||||
if (tradingDeal.cardOk(card)) {
|
||||
String json = JsonHelper.objToJson(card);
|
||||
if (json != null && !json.isEmpty()) {
|
||||
@ -300,54 +323,54 @@ public class Response {
|
||||
if (new DBConnection().addUserCard(tradingDeal.getUsername(), card.getName())) {
|
||||
sendResponse(json, "200");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Add Card to: " + tradingDeal.getUsername(), "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Del Card from: " + username, "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("Error --> Del Trading Deal", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Del Card from: " + tradingDeal.getUsername(), "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Add Card to: " + username, "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> JSON Empty", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Trading Deal not ok", "500");
|
||||
}
|
||||
}else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Kann nicht mit sich selbst traden", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Trading Deal not exist", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("ERROR --> Card not exist", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("401");
|
||||
sendResponse("ERROR --> Trading Deal not exist", "500");
|
||||
}
|
||||
} else {
|
||||
sendResponse("ERROR --> Username empty", "401");
|
||||
}
|
||||
} else {
|
||||
//CREATE TRADING DEAL
|
||||
Map<String, Object> map = JsonHelper.jsonPayloadToMap(this.payload);
|
||||
String id = (String) map.get("Id");
|
||||
String id = (String) Objects.requireNonNull(map).get("Id");
|
||||
String cardtotrade = (String) map.get("CardToTrade");
|
||||
String type = (String) map.get("Type");
|
||||
double mindamage = Double.parseDouble(map.get("MinimumDamage") + "");
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
if (username != null) {
|
||||
Card cardtoTradeC = new DBConnection().getCardFromID(cardtotrade);
|
||||
System.out.println("CARD TO TRAD: " + cardtoTradeC.getName());
|
||||
if (cardtoTradeC != null) {
|
||||
TradingDeal tradingDeal = new TradingDeal(id, cardtoTradeC, mindamage, type, username);
|
||||
if (tradingDeal != null) {
|
||||
String tradingJson = JsonHelper.objToJson(tradingDeal);
|
||||
if (tradingDeal != null) {
|
||||
ArrayList<String> deckCards = new DBConnection().getDeck(username);
|
||||
if (deckCards != null) {
|
||||
if (deckCards.contains(cardtotrade)) {
|
||||
@ -355,28 +378,22 @@ public class Response {
|
||||
}
|
||||
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");
|
||||
sendResponse(Objects.requireNonNull(JsonHelper.objToJson(tradingDeal)), "201");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
sendResponse(tradingJson, "201");
|
||||
sendResponse(Objects.requireNonNull(tradingJson), "201");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -394,58 +411,48 @@ public class Response {
|
||||
if(new DBConnection().addBattle(username)){
|
||||
sendResponse("Du bist: #PLAYER 1\nBattle Einladung wurde erstellt von: " + username + "(#PLAYER1) \nSobald ein 2. Spieler dem Battle beitritt, kann das ergebnis mit /score abgefragt werden.","200");
|
||||
}else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
|
||||
} else {
|
||||
//Join game player
|
||||
try {
|
||||
User player2 = new DBConnection().getUser(username);
|
||||
if(player2 != null){
|
||||
openBattle.setPlayer2(player2);
|
||||
openBattle.setDeckPlayer2(deck);
|
||||
if(new DBConnection().delBattleEinladung(openBattle.getId() + "")) {
|
||||
openBattle.doFight();
|
||||
System.out.println(JsonHelper.objToJson(openBattle.getLog()));
|
||||
if(new DBConnection().addBattleLog(openBattle.getId()+"", openBattle.getPlayer1().getName(), openBattle.getPlayer2().getName(), openBattle.getScorePlayer1()+"", openBattle.getScorePlayer2() +"")){
|
||||
if (openBattle.doFight()){
|
||||
if (new DBConnection().addBattleLog(openBattle.getId() + "", openBattle.getPlayer1().getName(), openBattle.getPlayer2().getName(), openBattle.getScorePlayer1() + "", openBattle.getScorePlayer2() + "", openBattle.getLog().toString())) {
|
||||
if (new DBConnection().delDeck(openBattle.getPlayer1().getCredentials().getUsername()) && new DBConnection().delDeck(openBattle.getPlayer2().getCredentials().getUsername())) {
|
||||
//DEL OLD DECK CARDS
|
||||
ArrayList<String> oldDeck1 = new ArrayList<>();
|
||||
for (Card ca : openBattle.getDeckPlayer1Init().getCards()) {
|
||||
if(!new DBConnection().delUserCard(openBattle.getPlayer1().getCredentials().getUsername(), ca.getName())){
|
||||
sendResponse("Error Deleting user card1: " + ca.getName(), "500");
|
||||
}
|
||||
oldDeck1.add(ca.getName());
|
||||
}
|
||||
ArrayList<String> oldDeck2 = new ArrayList<>();
|
||||
for (Card ca : openBattle.getDeckPlayer2Init().getCards()) {
|
||||
if(!new DBConnection().delUserCard(openBattle.getPlayer2().getCredentials().getUsername(), ca.getName())){
|
||||
sendResponse("Error Deleting user card2: " + ca.getName(), "500");
|
||||
}
|
||||
oldDeck2.add(ca.getName());
|
||||
}
|
||||
//DEL NEW CARDS IF EXIST
|
||||
Cards player1cards = new DBConnection().getCards(openBattle.getPlayer1().getCredentials().getUsername());
|
||||
ArrayList<String> player1CardsList = new ArrayList<String>();
|
||||
for(Card ca:player1cards.getCards()){
|
||||
player1CardsList.add(ca.getName());
|
||||
for (Card ca : openBattle.getDeckPlayer1().getCards()) {
|
||||
oldDeck1.add(ca.getName());
|
||||
}
|
||||
if (player1cards.getCards() != null && !player1cards.getCards().isEmpty()) {
|
||||
for (Card ca : openBattle.getDeckPlayer1().getCards()) {
|
||||
if (player1CardsList.contains(ca.getName())){
|
||||
if(!new DBConnection().delUserCard(openBattle.getPlayer1().getCredentials().getUsername(), ca.getName())){
|
||||
sendResponse("Error Deleting user card1: " + ca.getName(), "500");
|
||||
}
|
||||
for (String ca : oldDeck1) {
|
||||
if (!new DBConnection().delUserCard(openBattle.getPlayer1().getCredentials().getUsername(), ca)) {
|
||||
sendResponse("Error Deleting user card1: " + ca, "500");
|
||||
}
|
||||
}
|
||||
}
|
||||
Cards player2cards = new DBConnection().getCards(openBattle.getPlayer2().getCredentials().getUsername());
|
||||
ArrayList<String> player2CardsList = new ArrayList<String>();
|
||||
for(Card ca:player2cards.getCards()){
|
||||
player2CardsList.add(ca.getName());
|
||||
for (Card ca : openBattle.getDeckPlayer2().getCards()) {
|
||||
oldDeck2.add(ca.getName());
|
||||
}
|
||||
if (player2cards.getCards() != null && !player2cards.getCards().isEmpty()) {
|
||||
for (Card ca : openBattle.getDeckPlayer2().getCards()) {
|
||||
if (player2CardsList.contains(ca.getName())){
|
||||
if(!new DBConnection().delUserCard(openBattle.getPlayer2().getCredentials().getUsername(), ca.getName())){
|
||||
sendResponse("Error Deleting user card2: " + ca.getName(), "500");
|
||||
}
|
||||
for (String ca : oldDeck2) {
|
||||
if (!new DBConnection().delUserCard(openBattle.getPlayer2().getCredentials().getUsername(), ca)) {
|
||||
sendResponse("Error Deleting user card2: " + ca, "500");
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -466,31 +473,30 @@ public class Response {
|
||||
} else {
|
||||
sendResponse("Battle Log konnte ned geschrieben werden", "500"); //ERROR
|
||||
}
|
||||
}else {
|
||||
sendResponse("Battle konnte ned durchgeführt werden", "500");
|
||||
}
|
||||
}else{
|
||||
sendResponse("Battle einladung konnte ned akzeptiert werden", "500"); //ERROR
|
||||
}
|
||||
}else{
|
||||
sendResponse("GET User error", "500"); //ERROR
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
sendResponse("GET User error", "500"); //ERROR
|
||||
}
|
||||
}
|
||||
}else {
|
||||
sendResponse("Nur "+deck.getCards().size()+" von 4 Karten im Deck. \nMach zuerst POST /deck [ID, ID, ID, ID] um dein Deck korrekt zu befüllen","424");
|
||||
sendResponse("Nur "+ Objects.requireNonNull(deck).getCards().size()+" von 4 Karten im Deck. \nMach zuerst POST /deck [ID, ID, ID, ID] um dein Deck korrekt zu befüllen","424");
|
||||
}
|
||||
}else {
|
||||
sendResponse("Deck ist nicht gesetzt","424");
|
||||
}
|
||||
}else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}else {
|
||||
sendError("401");
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
} else{
|
||||
sendError("405");
|
||||
sendResponse(this.url + " not found!", "404");
|
||||
}
|
||||
|
||||
}
|
||||
@ -502,18 +508,9 @@ public class Response {
|
||||
private boolean login(){
|
||||
if(this.authString != null && !this.authString.isEmpty()){
|
||||
String username = basicAuthGetUsername(this.authString);
|
||||
User user = null;
|
||||
try {
|
||||
User user;
|
||||
user = new DBConnection().getUser(username);
|
||||
if (basicAuth(user.getCredentials().getUsername(), user.getCredentials().getPasswort(), this.authString)){
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
return false;
|
||||
}
|
||||
return basicAuth(user.getCredentials().getUsername(), user.getCredentials().getPasswort(), this.authString);
|
||||
|
||||
}else{
|
||||
return false;
|
||||
@ -523,54 +520,47 @@ public class Response {
|
||||
/**
|
||||
* Alle Put Methoden
|
||||
* Nur für angemeldete user erreichbar
|
||||
* @throws JsonProcessingException Fehler beim de-/serialisieren
|
||||
*/
|
||||
private void putMethodes(){
|
||||
if (this.url.startsWith("/users")) {
|
||||
String username = this.url.substring(this.url.lastIndexOf('/') + 1);
|
||||
System.out.println("Username in /users/{username}: " + username);
|
||||
User user = null;
|
||||
try {
|
||||
User user;
|
||||
user = new DBConnection().getUser(username);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
sendError("401");
|
||||
}
|
||||
if(user != null) {
|
||||
Map<String, Object> map = JsonHelper.jsonPayloadToMap(this.payload);
|
||||
String bio = (String) map.get("Bio");
|
||||
String bio = (String) Objects.requireNonNull(map).get("Bio");
|
||||
String image = (String) map.get("Image");
|
||||
String name = (String) map.get("Name");
|
||||
System.out.println("Request /users:");
|
||||
System.out.println("Bio: " + bio + "\nImage: " + image + "\nName: " + name);
|
||||
user.setBio(bio);
|
||||
user.setImage(image);
|
||||
user.setNachname(name);
|
||||
if (new DBConnection().updateUser(username, user.getBio(), user.getImage(), user.getNachname())) {
|
||||
sendResponse(JsonHelper.userToJson(user), "200");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}else if(this.url.startsWith("/deck")) {
|
||||
List<String> deckIds = JsonHelper.jsonPayloadToList(this.payload);
|
||||
if (deckIds != null){
|
||||
if (deckIds != null && deckIds.size() == 4){
|
||||
if (new DBConnection().setDeck(basicAuthGetUsername(this.authString), deckIds)){
|
||||
Cards deck = new DBConnection().getCardsFromIDList(deckIds);
|
||||
String deckJson = JsonHelper.objToJson(deck);
|
||||
if (deck != null && deckJson != null){
|
||||
sendResponse(deckJson, "200");
|
||||
}else {
|
||||
sendError("500");
|
||||
sendResponse("Deck konnte nicht aus der DB geholt werden", "500");
|
||||
}
|
||||
}else {
|
||||
sendError("500");
|
||||
sendResponse("Deck konnte nicht gesetzt werden", "500");
|
||||
}
|
||||
}else{
|
||||
sendError("500");
|
||||
sendResponse(Objects.requireNonNull(deckIds).size() + " von 4 Karten sind im Deck.","500");
|
||||
}
|
||||
}else{
|
||||
sendResponse(this.url + " not found!", "404");
|
||||
}
|
||||
}
|
||||
|
||||
@ -578,13 +568,11 @@ public class Response {
|
||||
|
||||
/**
|
||||
* Alle Delete Methoden, siehe API beschreibung für genauere details
|
||||
* Nur für angemeldete user erreichbar
|
||||
* @throws JsonProcessingException Fehler beim de-/serialisieren
|
||||
*/
|
||||
private void deleteMethodes(){
|
||||
if (this.url.startsWith("/tradings")) {
|
||||
if(login()) {
|
||||
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()) {
|
||||
@ -598,42 +586,34 @@ public class Response {
|
||||
if (new DBConnection().updateCardLock(tr.getCardToTrade().getName(), false))
|
||||
sendResponse("", "204");
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
} else {
|
||||
sendError("500");
|
||||
sendResponse("", "500");
|
||||
}
|
||||
}
|
||||
}else{
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else if (this.url.startsWith("/db/all")) {
|
||||
if(basicAuth("admin", "istrator", this.authString)) {
|
||||
if (!PostgresHelper.executeUpdate("drop table user_deck;drop table trading;drop table battle;drop table battle_log;drop table user_cards;drop table package;drop table card;drop table users;")) {
|
||||
if (!new DBConnection().init()) {
|
||||
sendResponse("DB init failed", "500");
|
||||
} else {
|
||||
sendResponse("DB deleted & recreated", "205");
|
||||
}
|
||||
}else {
|
||||
sendResponse("DB drop error", "500");
|
||||
}
|
||||
}else {
|
||||
sendResponse("Login Error", "401");
|
||||
}
|
||||
}else{
|
||||
sendResponse(this.url + " not found!", "404");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sendet einen Error Response
|
||||
* @param errorCode Der Error Code
|
||||
*/
|
||||
private void sendError(String errorCode) {
|
||||
out.print("HTTP/1.0 "+errorCode+"\r\n");
|
||||
out.print("Server: Apache/0.8.4\r\n");
|
||||
out.print("Content-Type: text/plain\r\n");
|
||||
out.print("Content-Length: 1\r\n");
|
||||
out.print("\r\n");
|
||||
//out.print(responseText);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sendet eine Startseite, mit allen befehlen und wie man diese verwendet
|
||||
|
||||
private void startseite() {
|
||||
sendResponse("lists all messages: GET /messages<br>" +
|
||||
"add message: POST /messages (Payload: the message; Response an id like1)<br>" +
|
||||
"show first message: GET /messages/1<br>" +
|
||||
"show third message: GET /messages/3<br>" +
|
||||
"update first message: PUT /messages/1 (Payload: the message)<br>" +
|
||||
"remove first message: DELETE /messages/1<br>", "200");
|
||||
}
|
||||
*/
|
||||
|
||||
/**
|
||||
* Sendet eine Response
|
||||
|
@ -1,58 +1,50 @@
|
||||
import at.reisinger.Card;
|
||||
import at.reisinger.CardType;
|
||||
import at.reisinger.EffectivnessType;
|
||||
import at.reisinger.ElementTyp;
|
||||
import at.reisinger.obj.Card;
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class CardTest {
|
||||
|
||||
@Test
|
||||
public void test_getName() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
assertTrue(card.getName().equals("Name"));
|
||||
assertEquals(card.getName(), "Name");
|
||||
}
|
||||
@Test
|
||||
public void test_getDamage() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
assertTrue(card.getDamage() == 10);
|
||||
assertEquals(card.getDamage(), 10);
|
||||
}
|
||||
@Test
|
||||
public void test_getElementType() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
ElementTyp elementTyp = card.getElementTyp();
|
||||
assertTrue(elementTyp == ElementTyp.WATER);
|
||||
assertSame(elementTyp, ElementTyp.WATER);
|
||||
}
|
||||
@Test
|
||||
public void test_getCardType() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
CardType cardType = card.getCardType();
|
||||
assertTrue(cardType == CardType.SPELL);
|
||||
}
|
||||
@Test
|
||||
public void test_getEffectivenessAgainst() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
Card card2 = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
EffectivnessType effectivnessType = card.getEffectivenessAgainst(card2);
|
||||
assertTrue(effectivnessType == EffectivnessType.NOEFFECT);
|
||||
assertSame(cardType, CardType.SPELL);
|
||||
}
|
||||
@Test
|
||||
public void test_setName() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
card.setName("NeuerName");
|
||||
assertTrue(card.getName().equals("NeuerName"));
|
||||
assertEquals(card.getName(), "NeuerName");
|
||||
}
|
||||
@Test
|
||||
public void test_setDamage() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
card.setDamage(100);
|
||||
assertTrue(card.getDamage() == 100);
|
||||
assertEquals(card.getDamage(), 100);
|
||||
}
|
||||
@Test
|
||||
public void test_setElementTyp() {
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
card.setElementType(ElementTyp.FIRE);
|
||||
assertTrue(card.getElementTyp() == ElementTyp.FIRE);
|
||||
assertSame(card.getElementTyp(), ElementTyp.FIRE);
|
||||
}
|
||||
}
|
||||
|
@ -1,27 +1,27 @@
|
||||
import at.reisinger.Card;
|
||||
import at.reisinger.CardType;
|
||||
import at.reisinger.Cards;
|
||||
import at.reisinger.ElementTyp;
|
||||
import at.reisinger.obj.Card;
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.obj.Cards;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
public class CardsTest {
|
||||
private Cards cards, cards2, cards3;
|
||||
private Card newCard, card, newerCard;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Card newCard;
|
||||
private Card card;
|
||||
private ArrayList<Card> cardsArrayList;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
newerCard = new Card("NameNewerer", 100, ElementTyp.FIRE, CardType.MONSTER);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
Card newerCard = new Card("NameNewerer", 100, ElementTyp.FIRE, CardType.MONSTER);
|
||||
cardsArrayList = new ArrayList<>();
|
||||
ArrayList<Card> cardsArrayList2 = new ArrayList<>();
|
||||
ArrayList<Card> cardsArrayList3 = new ArrayList<>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cardsArrayList2.add(card);
|
||||
@ -66,11 +66,11 @@ public class CardsTest {
|
||||
|
||||
cards.delCard(newCard);
|
||||
|
||||
assertTrue(cards.getCards().equals(cardsArrayList));
|
||||
assertEquals(cardsArrayList, cards.getCards());
|
||||
}
|
||||
@Test
|
||||
void test_getCards() {
|
||||
assertTrue(cards.getCards().equals(cardsArrayList));
|
||||
assertEquals(cardsArrayList, cards.getCards());
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,10 +1,7 @@
|
||||
import at.reisinger.Coins;
|
||||
import at.reisinger.NegativAmountException;
|
||||
import at.reisinger.obj.Coins;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
|
||||
public class CoinsTest {
|
||||
|
||||
@ -14,55 +11,4 @@ public class CoinsTest {
|
||||
assertTrue(coin.getCoinAmount() >= 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_addCoinException(){
|
||||
try {
|
||||
Coins coin = new Coins(10);
|
||||
coin.addCoin(-10);
|
||||
fail("Erwartet at.reisinger.NegativAmountException - addCoin");
|
||||
}catch (NegativAmountException negativAmountException) {
|
||||
assertTrue(negativAmountException.getMessage().equals("Es kann kein negativer amount an at.reisinger.Coins hinzugefügt werden"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_removeCoinException(){
|
||||
try {
|
||||
Coins coin = new Coins(10);
|
||||
coin.removeCoin(-10);
|
||||
fail("Erwartet at.reisinger.NegativAmountException - removeCoin");
|
||||
}catch (NegativAmountException negativAmountException) {
|
||||
assertTrue(negativAmountException.getMessage().equals("Es kann kein negativer amount an at.reisinger.Coins hinzugefügt werden"));
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_removeCoin(){
|
||||
Coins coin = new Coins(10);
|
||||
try {
|
||||
assertTrue(coin.removeCoin(10));
|
||||
} catch (NegativAmountException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_changeCoinAmount_true(){
|
||||
Coins coin = new Coins(10);
|
||||
try {
|
||||
assertTrue(coin.changeCoinAmmount(10));
|
||||
} catch (NegativAmountException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_changeCoinAmount_false(){
|
||||
Coins coin = new Coins(9);
|
||||
try {
|
||||
assertTrue(coin.changeCoinAmmount(7));
|
||||
} catch (NegativAmountException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,49 +1,43 @@
|
||||
import at.reisinger.*;
|
||||
import at.reisinger.Package;
|
||||
import at.reisinger.obj.Card;
|
||||
import at.reisinger.obj.Cards;
|
||||
import at.reisinger.obj.Package;
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
|
||||
public class PackageTest {
|
||||
private Cards newCards, cards, nochNewCards;
|
||||
private Card newCard, card;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Package myPackage;
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
Card card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
ArrayList<Card> cardsArrayList = new ArrayList<>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cards = new Cards(cardsArrayList);
|
||||
newCards = new Cards(cardsArrayList2);
|
||||
nochNewCards = new Cards(cardsArrayList3);
|
||||
Cards cards = new Cards(cardsArrayList);
|
||||
myPackage = new Package(cards,"Name", 100);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getName() {
|
||||
String result = myPackage.getName();
|
||||
assertTrue(result.equals("Name"));
|
||||
assertEquals(result, "Name");
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getPrice() {
|
||||
int result = myPackage.getPrice();
|
||||
assertTrue(result==100);
|
||||
assertEquals(result, 100);
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_setName() {
|
||||
myPackage.setName("neuName");
|
||||
String result = myPackage.getName();
|
||||
assertTrue(result.equals("neuName"));
|
||||
assertEquals(result, "neuName");
|
||||
}
|
||||
}
|
||||
|
@ -1,48 +0,0 @@
|
||||
import at.reisinger.*;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
|
||||
public class StackTest {
|
||||
private Cards newCards, cards, nochNewCards;
|
||||
private Card newCard, card;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Stack stack;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cardsArrayList2.add(card);
|
||||
cards = new Cards(cardsArrayList);
|
||||
newCards = new Cards(cardsArrayList2);
|
||||
nochNewCards = new Cards(cardsArrayList3);
|
||||
stack = new Stack(cards, nochNewCards);
|
||||
}
|
||||
@Test
|
||||
void test_addDeck() {
|
||||
stack.addDeck(newCards);
|
||||
Cards result = stack.getDeck();
|
||||
assertTrue(result.equals(newCards));
|
||||
}
|
||||
@Test
|
||||
void test_delDeck() {
|
||||
stack.addDeck(newCards);
|
||||
stack.delDeck(newCard);
|
||||
assertTrue(stack.getDeck().equals(cards));
|
||||
}
|
||||
@Test
|
||||
void test_getDeck() {
|
||||
Cards result = stack.getDeck();
|
||||
assertTrue(result.equals(nochNewCards));
|
||||
}
|
||||
}
|
@ -1,147 +0,0 @@
|
||||
import at.reisinger.*;
|
||||
import at.reisinger.Package;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
public class StoreTest {
|
||||
|
||||
private TradingDeal tradingDeal;
|
||||
private Cards newCards, cards, nochNewCards;
|
||||
private Card newCard, card;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Stack stack;
|
||||
private User user, userNew;
|
||||
private Store store;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
//at.reisinger.Stack
|
||||
card = new Card("Name", 100, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cards = new Cards(cardsArrayList);
|
||||
newCards = new Cards(cardsArrayList2);
|
||||
nochNewCards = new Cards(cardsArrayList3);
|
||||
stack = new Stack(cards, nochNewCards);
|
||||
|
||||
//at.reisinger.Coins
|
||||
Coins coins = new Coins(10);
|
||||
//at.reisinger.User
|
||||
Credentials credentials = new Credentials("username", "passwort");
|
||||
user = new User(credentials, "name", "nachname", "email", coins, "BIO", "IMAGE");
|
||||
userNew = new User(credentials, "nameNew", "nachnameNew", "emailNew", coins, "BIO", "IMAGE");
|
||||
|
||||
//Trading Deal
|
||||
Card cardToTrade = card;
|
||||
ElementTyp requiredElementType = ElementTyp.FIRE;
|
||||
double requiredMinDamage = 100;
|
||||
CardType requiredCardType = CardType.MONSTER;
|
||||
tradingDeal = new TradingDeal("ID", cardToTrade, requiredElementType, requiredMinDamage, requiredCardType, "NAME");
|
||||
|
||||
}
|
||||
/*
|
||||
@Test
|
||||
void test_addTradingDeal() {
|
||||
|
||||
|
||||
Card c1 = new Card("Name", 10, ElementTyp.FIRE, CardType.MONSTER);
|
||||
Card c2 = new Card("Name1", 12, ElementTyp.FIRE, CardType.SPELL);
|
||||
Card c3 = new Card("Name2", 13, ElementTyp.WATER, CardType.MONSTER);
|
||||
Card c4 = new Card("Name3", 14, ElementTyp.WATER, CardType.SPELL);
|
||||
Card c5 = new Card("Name4", 15, ElementTyp.FIRE, CardType.MONSTER);
|
||||
ArrayList<Card> deckArrList = new ArrayList<Card>();
|
||||
ArrayList<Card> stackArrList = new ArrayList<Card>();
|
||||
deckArrList.add(c1);
|
||||
deckArrList.add(c2);
|
||||
stackArrList.add(c3);
|
||||
stackArrList.add(c4);
|
||||
stackArrList.add(c5);
|
||||
Cards deck = new Cards(deckArrList);
|
||||
Cards stack = new Cards(stackArrList);
|
||||
User user = new User(new Credentials("username", "passwort"), "Name", "Nachname", "Email", new Coins(1000), "BIO", "IMAGE");
|
||||
ArrayList<TradingDeal> tradingDeals = new ArrayList<TradingDeal>();
|
||||
ArrayList<Package> packages = new ArrayList<at.reisinger.Package>();
|
||||
tradingDeals.add(new TradingDeal(user, c1, ElementTyp.FIRE, 10, CardType.MONSTER));
|
||||
packages.add(new at.reisinger.Package(stack, "Test at.reisinger.Package", 100));
|
||||
|
||||
|
||||
System.out.println(user.getTradingDeals().toString());
|
||||
|
||||
user.addTradingDeal(new TradingDeal(user, c1, ElementTyp.FIRE, 10, CardType.MONSTER));
|
||||
System.out.println(user.getTradingDeals().toString());
|
||||
|
||||
|
||||
System.out.println(tradingDeals.toString());
|
||||
assertTrue(user.getTradingDeals().get(0).dealOk(tradingDeals.get(0)));
|
||||
}
|
||||
@Test
|
||||
void test_doTrade() {
|
||||
Card cardtest = new Card("Name", 100, ElementTyp.FIRE, CardType.MONSTER);
|
||||
TradingDeal tradingDealtest = new TradingDeal(user, cardtest, ElementTyp.WATER, 100, CardType.MONSTER);
|
||||
boolean result = user.doTrading(tradingDeal, tradingDealtest);
|
||||
assertTrue(result);
|
||||
}
|
||||
@Test
|
||||
void test_getTradingDeals() {
|
||||
ArrayList<TradingDeal> result = user.getTradingDeals();
|
||||
ArrayList<TradingDeal> expected = new ArrayList<TradingDeal>();
|
||||
|
||||
Card c1 = new Card("Name", 10, ElementTyp.FIRE, CardType.MONSTER);
|
||||
Card c2 = new Card("Name1", 12, ElementTyp.FIRE, CardType.SPELL);
|
||||
Card c3 = new Card("Name2", 13, ElementTyp.WATER, CardType.MONSTER);
|
||||
Card c4 = new Card("Name3", 14, ElementTyp.WATER, CardType.SPELL);
|
||||
Card c5 = new Card("Name4", 15, ElementTyp.FIRE, CardType.MONSTER);
|
||||
ArrayList<Card> deckArrList = new ArrayList<Card>();
|
||||
ArrayList<Card> stackArrList = new ArrayList<Card>();
|
||||
deckArrList.add(c1);
|
||||
deckArrList.add(c2);
|
||||
stackArrList.add(c3);
|
||||
stackArrList.add(c4);
|
||||
stackArrList.add(c5);
|
||||
Cards deck = new Cards(deckArrList);
|
||||
Cards stack = new Cards(stackArrList);
|
||||
User user = new User(new Credentials("username", "passwort"), "Name", "Nachname", "Email", new Coins(1000), "BIO", "IMAGE");
|
||||
ArrayList<TradingDeal> tradingDeals = new ArrayList<TradingDeal>();
|
||||
ArrayList<at.reisinger.Package> packages = new ArrayList<at.reisinger.Package>();
|
||||
tradingDeals.add(new TradingDeal(user, c1, ElementTyp.FIRE, 10, CardType.MONSTER));
|
||||
packages.add(new at.reisinger.Package(stack, "Test at.reisinger.Package", 100));
|
||||
|
||||
assertTrue(result.get(0).dealOk(new TradingDeal(user, c1, ElementTyp.FIRE, 10, CardType.MONSTER)));
|
||||
}
|
||||
|
||||
@Test
|
||||
void test_getPossibleTradingDeals() {
|
||||
Card testCard = new Card("Test", 10, ElementTyp.FIRE, CardType.MONSTER);
|
||||
ArrayList<TradingDeal> result = user.getPossibleTradingDeals(testCard);
|
||||
ArrayList<TradingDeal> expected = new ArrayList<TradingDeal>();
|
||||
Card c1 = new Card("Name", 10, ElementTyp.FIRE, CardType.MONSTER);
|
||||
Card c2 = new Card("Name1", 12, ElementTyp.FIRE, CardType.SPELL);
|
||||
Card c3 = new Card("Name2", 13, ElementTyp.WATER, CardType.MONSTER);
|
||||
Card c4 = new Card("Name3", 14, ElementTyp.WATER, CardType.SPELL);
|
||||
Card c5 = new Card("Name4", 15, ElementTyp.FIRE, CardType.MONSTER);
|
||||
ArrayList<Card> deckArrList = new ArrayList<Card>();
|
||||
ArrayList<Card> stackArrList = new ArrayList<Card>();
|
||||
deckArrList.add(c1);
|
||||
deckArrList.add(c2);
|
||||
stackArrList.add(c3);
|
||||
stackArrList.add(c4);
|
||||
stackArrList.add(c5);
|
||||
Cards deck = new Cards(deckArrList);
|
||||
Cards stack = new Cards(stackArrList);
|
||||
TradingDeal vonDB = new TradingDeal(new User(new Credentials("username", "passwort"), "DerName", "Nachname", "Email", new Coins(1000), "BIO", "IMAGE"), c1, ElementTyp.FIRE, 10, CardType.SPELL);
|
||||
expected.add(vonDB);
|
||||
System.out.println(result.get(0).getCardToTrade().getName());
|
||||
System.out.println(expected.get(0).getCardToTrade().getName());
|
||||
assertTrue(result.get(0).getCardToTrade().equals(expected.get(0).getCardToTrade()));
|
||||
}
|
||||
|
||||
*/
|
||||
}
|
@ -1,45 +1,21 @@
|
||||
import at.reisinger.*;
|
||||
import at.reisinger.enums.CardType;
|
||||
import at.reisinger.enums.ElementTyp;
|
||||
import at.reisinger.obj.*;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
|
||||
public class TradingDealTest {
|
||||
|
||||
private TradingDeal tradingDeal;
|
||||
private Cards newCards, cards, nochNewCards;
|
||||
private Card newCard, card;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Stack stack;
|
||||
private User user, userNew;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
//at.reisinger.Stack
|
||||
card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cards = new Cards(cardsArrayList);
|
||||
newCards = new Cards(cardsArrayList2);
|
||||
nochNewCards = new Cards(cardsArrayList3);
|
||||
stack = new Stack(cards, nochNewCards);
|
||||
|
||||
//at.reisinger.Coins
|
||||
Coins coins = new Coins(10);
|
||||
//at.reisinger.User
|
||||
Credentials credentials = new Credentials("username", "passwort");
|
||||
Credentials newCredentials = new Credentials("usernamenew", "passwortnew");
|
||||
user = new User(credentials, "name", "nachname", "email", coins, "BIO", "IMAGE");
|
||||
userNew = new User(newCredentials, "nameNew", "nachnameNew", "emailNew", coins, "BIO", "IMAGE");
|
||||
|
||||
//Trading Deal
|
||||
Card cardToTrade = card;
|
||||
ElementTyp requiredElementType = ElementTyp.FIRE;
|
||||
double requiredMinDamage = 100;
|
||||
@ -47,14 +23,6 @@ public class TradingDealTest {
|
||||
tradingDeal = new TradingDeal("ID", cardToTrade, requiredElementType, requiredMinDamage, requiredCardType, "NAME");
|
||||
}
|
||||
|
||||
/*
|
||||
@Test
|
||||
void test_getTradingUser() {
|
||||
User result = tradingDeal.getTradingUser();
|
||||
assertTrue(result.equals(user));
|
||||
}
|
||||
*/
|
||||
|
||||
@Test
|
||||
void test_getCardToTrade() {
|
||||
Card result = tradingDeal.getCardToTrade();
|
||||
@ -63,50 +31,41 @@ public class TradingDealTest {
|
||||
@Test
|
||||
void test_getRequiredElementType() {
|
||||
ElementTyp result = tradingDeal.getRequiredElementType();
|
||||
assertTrue(result==ElementTyp.FIRE);
|
||||
assertSame(result, ElementTyp.FIRE);
|
||||
}
|
||||
@Test
|
||||
void test_getRequiredMinDamage() {
|
||||
double result = tradingDeal.getRequiredMinDamage();
|
||||
assertTrue(result==100);
|
||||
assertEquals(result, 100);
|
||||
}
|
||||
@Test
|
||||
void test_getRequiredCardType() {
|
||||
CardType result = tradingDeal.getRequiredCardType();
|
||||
assertTrue(result==CardType.MONSTER);
|
||||
assertSame(result, CardType.MONSTER);
|
||||
}
|
||||
|
||||
/*
|
||||
@Test
|
||||
void test_setTradingUser() {
|
||||
tradingDeal.setTradingUser(userNew);
|
||||
User result = tradingDeal.getTradingUser();
|
||||
assertTrue(result.equals(userNew));
|
||||
}
|
||||
*/
|
||||
|
||||
@Test
|
||||
void test_setCardToTrade() {
|
||||
tradingDeal.setCardToTrade(newCard);
|
||||
Card result = tradingDeal.getCardToTrade();
|
||||
assertTrue(result==newCard);
|
||||
assertSame(result, newCard);
|
||||
}
|
||||
@Test
|
||||
void test_setRequiredElementType() {
|
||||
tradingDeal.setRequiredElementType(ElementTyp.WATER);
|
||||
ElementTyp result = tradingDeal.getRequiredElementType();
|
||||
assertTrue(result==ElementTyp.WATER);
|
||||
assertSame(result, ElementTyp.WATER);
|
||||
}
|
||||
@Test
|
||||
void test_setRequiredMinDamage() {
|
||||
tradingDeal.setRequiredMinDamage(10);
|
||||
double result = tradingDeal.getRequiredMinDamage();
|
||||
assertTrue(result==10);
|
||||
assertEquals(result, 10);
|
||||
}
|
||||
@Test
|
||||
void test_setRequiredCardType() {
|
||||
tradingDeal.setRequiredCardType(CardType.SPELL);
|
||||
CardType result = tradingDeal.getRequiredCardType();
|
||||
assertTrue(result==CardType.SPELL);
|
||||
assertSame(result, CardType.SPELL);
|
||||
}
|
||||
}
|
||||
|
@ -1,59 +1,33 @@
|
||||
import at.reisinger.*;
|
||||
import at.reisinger.Package;
|
||||
import at.reisinger.obj.*;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
|
||||
|
||||
public class UserTest {
|
||||
private TradingDeal tradingDeal;
|
||||
private Cards newCards, cards, nochNewCards;
|
||||
private Card newCard, card;
|
||||
private ArrayList<Card> cardsArrayList, cardsArrayList2, cardsArrayList3;
|
||||
private Stack stack;
|
||||
private User user;
|
||||
private at.reisinger.Package myPackage;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
//at.reisinger.Stack
|
||||
card = new Card("Name", 10, ElementTyp.WATER, CardType.MONSTER);
|
||||
newCard = new Card("NameNew", 10, ElementTyp.WATER, CardType.SPELL);
|
||||
cardsArrayList = new ArrayList<Card>();
|
||||
cardsArrayList2 = new ArrayList<Card>();
|
||||
cardsArrayList3 = new ArrayList<Card>();
|
||||
cardsArrayList.add(card);
|
||||
cardsArrayList2.add(newCard);
|
||||
cards = new Cards(cardsArrayList);
|
||||
newCards = new Cards(cardsArrayList2);
|
||||
nochNewCards = new Cards(cardsArrayList3);
|
||||
stack = new Stack(cards, nochNewCards);
|
||||
//at.reisinger.Package
|
||||
myPackage = new Package(cards, "Name", 100);
|
||||
|
||||
//at.reisinger.Coins
|
||||
Coins coins = new Coins(10);
|
||||
//at.reisinger.User
|
||||
Credentials credentials = new Credentials("username", "pw");
|
||||
user = new User(credentials, "name", "nachname", "email", coins, "BIO", "IMAGE");
|
||||
}
|
||||
@Test
|
||||
public void test_getName() {
|
||||
String result = user.getName();
|
||||
assertTrue(result.equals("name"));
|
||||
assertEquals(result, "name");
|
||||
}
|
||||
@Test
|
||||
public void test_getNachname() {
|
||||
String result = user.getNachname();
|
||||
assertTrue(result.equals("nachname"));
|
||||
assertEquals(result, "nachname");
|
||||
}
|
||||
@Test
|
||||
public void test_getEmail() {
|
||||
String result = user.getEmail();
|
||||
assertTrue(result.equals("email"));
|
||||
assertEquals(result, "email");
|
||||
}
|
||||
|
||||
@Test
|
||||
@ -61,30 +35,20 @@ public class UserTest {
|
||||
String newstring = "new";
|
||||
user.setName(newstring);
|
||||
String result = user.getName();
|
||||
assertTrue(result.equals(newstring));
|
||||
assertEquals(newstring, result);
|
||||
}
|
||||
@Test
|
||||
public void test_setNachname() {
|
||||
String newstring = "new";
|
||||
user.setNachname(newstring);
|
||||
String result = user.getNachname();
|
||||
assertTrue(result.equals(newstring));
|
||||
assertEquals(newstring, result);
|
||||
}
|
||||
@Test
|
||||
public void test_setEmail() {
|
||||
String newstring = "new";
|
||||
user.setEmail(newstring);
|
||||
String result = user.getEmail();
|
||||
assertTrue(result.equals(newstring));
|
||||
}
|
||||
@Test
|
||||
public void test_buyPackage(){
|
||||
Cards cards = null;
|
||||
try {
|
||||
cards = new Cards(user.buyPackage(myPackage));
|
||||
} catch (NegativAmountException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
assertTrue(cards.equals(new Cards(myPackage.getCards())));
|
||||
assertEquals(newstring, result);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user