Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
kanton1998 committed Aug 7, 2020
2 parents b756bbb + beb1943 commit 71b2850
Show file tree
Hide file tree
Showing 10 changed files with 245 additions and 132 deletions.
Binary file not shown.
Binary file not shown.
55 changes: 55 additions & 0 deletions Abschlusspräsentation_Java2/notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
https://technischeunivers049-my.sharepoint.com/:p:/g/personal/michael_hopp_fh-erfurt_de/EVpplYhRuytAoIAbazBpfsIBG1b-8OgzTpF0sLcdRYSV9g?e=RI1XgJ

##Einleitung (Anton)
##Grundlegendes (Anton)

##Utilities (Anton)
* Bewertung der Utilities
* XAMPP (MySQL)

* Spring und Thymeleaf
* Erleichtert einiges aber manche spezielle Anforderungen werden schwer unterstüzt

* WebJars (Bootstrap, JQuery)
* In Kombination mit Maven Packagecontrol

* Swagger
* Erleichtert das Leben -> Erstellt Doku

* Postman
* rest-assured


##Was ist dazu gekommen? (Bilal)

##Was wurde verändert? (Bilal)

##API (Tom)


##TOUR (Alle)
* Anton hostet Präsentation
* Seitenersteller erklären Seite knapp + Wissenswertes

1. Index (Einzige bewusst gestylte Seite, Footer) , Login (Registrierungsformular zeigen) -> Bilal
2. Watch Konfigurieren, Watch List. Zwei Uhren Hinzufügen -> Tom
3. Shoppingcart, eine Uhr entfernen, Checkout und Order absetzen -> Michael
4. MyOrder, Profil, UpdateUser -> Anton


##Herausforderungen und Lessons Learned (Michael)
* Erstkontakt mit Frameworks für Anton und Michael

* Bootstrap update Version 3.5.1 auf 4.5.0

* Hibernate N:M Beziehungstabelle hat zb keinen primary/unique key

* th:field -> Objektcontainer verhält sich eigens...
* Radio Buttons checked werden überschrieben -> th:field erledigt das checked selbst! Starkes Werkzeug aber unbekannt (Doku lesen ist doof)
* Daten durchreichen von Action zu HTML zu Backend (Controller/Api) geht nicht einfach so

* Hilfestellung: Auch aktiv nach Hilfe fragen

* Arbeitsteilung in GitHub über Issues und Projects

* Anton und Bilal nutzten nicht GitHub desktop, sondern Git-Tools in IDE
64 changes: 64 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,70 @@
# JavaProject [![Build Status](https://github.com/fh-erfurt/WatchMyWatch/workflows/WatchMyWatch/badge.svg)](https://github.com/fh-erfurt/WatchMyWatch/actions) ![License](http://img.shields.io/:license-mit-blue.svg) ![CodeFactor](https://img.shields.io/badge/JAVA-1.8-orange)
Von [Anton Bespalov](https://github.com/kanton1998), [Michael Hopp](https://github.com/Maffotter), [Tom Käppler](https://github.com/TKSpectro), [Bilal Alnaani](https://github.com/bilal0710)

#Java 2

## Wichtige Links

[Heroku Release](https://watchmywatch2.herokuapp.com/)

[SwaggerUI Heroku](https://watchmywatch2.herokuapp.com/swagger-ui.html)

## Installation

* XAMPP MySql/MariaDB starten
* Lokal die Datenbank "watchmywatch" erstellen (utf8_general_ci)
* WatchMyWatchApplication starten

### Neues Klassendiagramm

![classDiagramm](classDiagrammNew.png?raw=true)

## Umfang

Java 1 +
* Webseite (Spring + Thymeleaf + Bootstrap)
* Datenbank (MySql)
* API-Schnittstellen
* API-Schnittstellen (rest-assured)
* API-Dokumentation (Swagger + SwaggerUI)
* Heroku Live Release

#### Arbeits-/Aufgabenteilung
- **Anton Bespalov:**
- Account (Webseite + API)
- ApiTest

- **Michael Hopp:**
- Bestellung (Webseite + API)
- ApiTest

- **Tom Käppler:**
- Uhren (Webseite + API)
- ApiTest

- **Bilal Alnaani:**
- Spring implementierung
- Login/Register (Webseite)
- ApiTest

### Verwendete Technologie
- IntelliJ Java 11
- JUnit5.4, Maven, JavaDoc, Spring, MySql, Swagger, Thymeleaf, Bootstrap, rest-assured
- Versionskontrollsystem: Git
- Github Desktop als Brücke zwischen Versionskontrolle und Entwicklungsumgebung.
- Kommunikation: WhatsApp und Discord

### Lessons Learned
- Wöchentliche Verständigung dringend aufrechthalten, sonst langsamerer Gesamt-Fortschritt und höherer Aufwand, um aktuellen Stand zu formulieren.
- Verbindung von Java-Klassen zu Datenbank muss durchdacht sein
- Spring Einsatz macht einige Dinge einfacher andere um einiges schwieriger
- Allgemein Fragen stellen und bei Schwierigkeiten aktiv Hilfe suchen: Lieber einmal mehr Fragen als einmal zu wenig.
- Einsatz von Frameworks wie Bootstrap machen das Leben einfacher
- Frameworks während des Projekts nur im Muss-Fall updaten
- Aufgabenverteilung klappt sehr gut mit GitHub-Projects


# Java 1
## HowTo
Öffnen Sie die pom.xml in IntelliJ

Expand Down
Binary file added classDiagrammNew.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -1,85 +1,78 @@
package de.watchmywatch.model.WatchManagment.Validator;

import de.watchmywatch.model.Exceptions.WatchNameNotValidException;
import de.watchmywatch.model.WatchManagment.Watch;

import java.util.logging.Logger;

/**
* Validator class for watches
* implements the Validator interface
*
* @author Tom Käppler
*/
public class WatchValidator implements Validator
{
public class WatchValidator implements Validator {
Logger logger = Logger.getLogger(Logger.GLOBAL_LOGGER_NAME);

@Override
public boolean validate(Validatable validatable)
{
if (validatable instanceof Watch)
{
public boolean validate(Validatable validatable) {
if (validatable instanceof Watch) {
Watch watch = (Watch) validatable;

if (watch.returnPriceWithoutFee() <= 0)
{
if (watch.returnPriceWithoutFee() <= 0) {
logger.warning("price cant be lower/equal 0");
return false;
}
if (watch.getName() == null)
{
if (watch.getName() == null) {
logger.warning("name cant be null");
return false;
} else {
try {
if (!watch.checkWatchName(watch.getName())) {
return false;
}
} catch (WatchNameNotValidException e) {
return false;
}
}
if (watch.getBracelet() == null)
{
if (watch.getBracelet() == null) {
logger.warning("bracelet cant be null");
return false;
} else
{
if (!watch.getBracelet().validate())
{
} else {
if (!watch.getBracelet().validate()) {
logger.warning("bracelet is not valid");
return false;
}
}
if (watch.getCasing() == null)
{
if (watch.getCasing() == null) {
logger.warning("casing cant be null");
return false;
} else
{
if (!watch.getCasing().validate())
{
} else {
if (!watch.getCasing().validate()) {
logger.warning("casing is not valid");
return false;
}
}
if (watch.getClockwork() == null)
{
if (watch.getClockwork() == null) {
logger.warning("clockwork cant be null");
return false;
} else
{
if (!watch.getClockwork().validate())
{
} else {
if (!watch.getClockwork().validate()) {
logger.warning("clockwork is not valid");
return false;
}
}
//connections dont match each other
if (watch.getBracelet().getConnection() != watch.getCasing().getConnection())
{
if (watch.getBracelet().getConnection() != watch.getCasing().getConnection()) {
logger.warning("braceletConnection does not match casingConnection");
return false;
}
//diameters dont match each other
if (watch.getCasing().getInnerDiameter() < watch.getClockwork().getDiameter())
{
if (watch.getCasing().getInnerDiameter() < watch.getClockwork().getDiameter()) {
logger.warning("casingInnerDiameter cant be smaller clockworkDiameter");
return false;
}
}
else{
} else {
logger.warning("object is not a watch");
return false;
}
Expand Down
Loading

0 comments on commit 71b2850

Please sign in to comment.