{"id":24912383,"url":"https://github.com/oblassgit/3fa071_gruppe5","last_synced_at":"2026-04-03T10:40:17.725Z","repository":{"id":275112243,"uuid":"868837069","full_name":"oblassgit/3FA071_Gruppe5","owner":"oblassgit","description":"school project","archived":false,"fork":false,"pushed_at":"2025-01-31T08:50:58.000Z","size":344,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-01-31T09:29:54.725Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/oblassgit.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-07T09:16:15.000Z","updated_at":"2025-01-31T09:27:00.000Z","dependencies_parsed_at":"2025-01-31T09:30:07.412Z","dependency_job_id":"d43a427b-5df2-4c5a-9091-dff793c9f3a1","html_url":"https://github.com/oblassgit/3FA071_Gruppe5","commit_stats":null,"previous_names":["oblassgit/3fa071_gruppe5"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblassgit%2F3FA071_Gruppe5","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblassgit%2F3FA071_Gruppe5/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblassgit%2F3FA071_Gruppe5/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oblassgit%2F3FA071_Gruppe5/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oblassgit","download_url":"https://codeload.github.com/oblassgit/3FA071_Gruppe5/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236753256,"owners_count":19199402,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-02-02T05:19:33.265Z","updated_at":"2025-10-16T23:31:06.418Z","avatar_url":"https://github.com/oblassgit.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 3FA071_Gruppe5\n\n[![maven-test](https://github.com/oblassgit/3FA071_Gruppe5/actions/workflows/maven-test.yml/badge.svg)](https://github.com/oblassgit/3FA071_Gruppe5/actions/workflows/maven-test.yml)\n\n[Link zur Benutzeroberfläche](https://github.com/oblassgit/3FA071_Gruppe5_UI)\n\n## ✅ Testabdeckung\n\n[███████████████████████████████████████████████████░░░░░░░░░░░░░] 80%\n\n___\n\n## Deployment-Anleitung\n\nDie Datenbankeinstellungen:\n\n- Suche die File \"DbData\" unter \"src/main/resources\".\n- Koppiere die ersten 3 auskommentierten Zeilen und setze sie unter die schon bestehenden Benutzer ein.\n- Aktiviere sie indem die \"#\" entfernt werden.\n- Tausche den \"User\" durch deinen eingenen Benutzer aus.  \n  Hinweis: Öffne ein Terminal und benutze den Befehl \"whoami\" um den derzeitigen Benutzer herauszufinden.\n- nun Trage noch folgendes nach dem = ein:\n  \n           \"deinBenutzer.db.url=\" --\u003e deine Datenbank URL nach dem =\n           \"deinBenutzer.db.user=\" --\u003e dein Datenbank User nach dem =\n           \"deinBenutzer.db.pw=\" --\u003e dein Passwort für die Datenbank nach dem =  \n\ndas Programm starten:\n\n- Erster Step : Führe diesen Befehlt aus um das Backend zu starten -\u003e \"mvn clean compile exec:java\".\n- Zweiter Step : Installiere NPM mit dem Befehlt  -\u003e \"npm install\". \n- Dritter Step : Führe diesen Befehl aus um das Backend zu starten -\u003e \"npm run preview\".\n\nFertig🤲\n\nNun sollte die App unter dem Link aufrufbar sein, der im gleichen Terminal angezeigt wird.\n\n## 🔧 Softwarearchitektur\n\nDie Anwendung ist dreischichtig aufgebaut:\n\n### 🖧 Backend – Java (Jersey)\n\n- Sprache: **Java 21**\n- REST-API mit **JAX-RS (Jersey 3.x)**\n- Struktur: Ressourcen- / Service- / DAO-Schicht\n- JSON/XML/CSV-Serialisierung via **Jackson**\n- Build-Tool: **Maven**\n- Tests: **JUnit 5**, **Mockito**\n- Code-Coverage: **JaCoCo**\n\n### 🖥️ Frontend – Vue.js\n\n- Framework: **Vue.js 3** (Composition API)\n- Sprache: **JavaScript (ES6+)**\n- API-Kommunikation über **Axios** via REST (HTTP)\n- Build-Tool: **Vite** oder **Vue CLI**\n- Datenformat: **JSON**\n\n### 🗄️ Datenbank – MariaDB\n\n- Typ: **Relationale SQL-Datenbank**\n- Engine: **MariaDB** (Version ≥ 10.x)\n- JDBC-Treiber: `mariadb-java-client` (v3.3.3)\n- Zugriff über DAO mit JDBC\n- Konfiguration via `.env` / `application.properties`\n\n### 🔗 API-Spezifikation\n\n- Architektur: **RESTful API**\n- Methoden: `GET`, `POST`, `PUT`, `DELETE`\n- Standardformat: **JSON**, optional: XML / CSV\n\n___\n\n## 📡 REST API Endpunkte\n\n### Kunden-API – `/customers`\n\n- **GET `/customers`**: Liste von Kunden, optional mit Filtern (z.B. `start`, `end`, `gender`)\n- **GET `/customers/{uuid}`**: Einzelner Kunde per UUID\n- **DELETE `/customers/{uuid}`**: Löscht einen Kunden\n- **POST `/customers`**: Erstellt einen neuen Kunden\n- **PUT `/customers`**: Aktualisiert einen bestehenden Kunden\n- **GET `/customers/export/csv`**: CSV-Export aller Kunden\n- **GET `/customers/export/xml`**: XML-Export aller Kunden\n\n### Readings-API – `/readings`\n\n- **GET `/readings`**: Filter: `customer`, `start`, `end`, `kindOfMeter`\n- **GET `/readings/{uuid}`**: Einzelner Reading-Eintrag\n- **DELETE `/readings/{uuid}`**: Löscht einen Reading-Eintrag\n- **POST `/readings`**: Legt einen neuen Reading-Eintrag an\n- **PUT `/readings`**: Aktualisiert einen bestehenden Reading-Eintrag\n- **GET `/readings/export/xml`**: Exportiert alle Readings als `.xml`\n- **GET `/readings/export/csv`**: Exportiert alle Readings als `.csv`\n\n## UML Sequenzdiagramm für Beispiel GetCustomer \n```\n       ┌─┐                                                                                                                                                              ,.-^^-._      \n       ║\"│                                                                                                                                                             |-.____.-|     \n       └┬┘                                                                                                                                                             |        |     \n       ┌┼┐                                                                             ┌──────────────────┐                                                            |        |     \n        │                                   ┌───────────────┐                          │Jersey Resource   │                          ┌───────────┐                     |        |     \n       ┌┴┐                                  │Vue.js Frontend│                          │(CustomerResource)│                          │CustomerDao│                     '-.____.-'     \n      User                                  └───────┬───────┘                          └─────────┬────────┘                          └─────┬─────┘                     Database       \n        │                                           │                                            │                                         │                               │          \n        │                                           │                            ╔═══════════════╧═╗                                       │                               │          \n════════╪═══════════════════════════════════════════╪════════════════════════════╣ Filter auslösen ╠═══════════════════════════════════════╪═══════════════════════════════╪══════════\n        │                                           │                            ╚═══════════════╤═╝                                       │                               │          \n        │                                           │                                            │                                         │                               │          \n        │Select filter (startDate, endDate, gender) │                                            │                                         │                               │          \n        │──────────────────────────────────────────\u003e│                                            │                                         │                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │────┐                                       │                                         │                               │          \n        │                                           │    │ build query params                    │                                         │                               │          \n        │                                           │\u003c───┘                                       │                                         │                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │GET /customers?start=...\u0026end=...\u0026gender=... │                                         │                               │          \n        │                                           │───────────────────────────────────────────\u003e│                                         │                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │                                            │getCustomers(startDate, endDate, gender) │                               │          \n        │                                           │                                            │────────────────────────────────────────\u003e│                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │                                            │                                         │  SQL SELECT * FROM customer   │          \n        │                                           │                                            │                                         │  WHERE ... (with filters)     │          \n        │                                           │                                            │                                         │──────────────────────────────\u003e│          \n        │                                           │                                            │                                         │                               │          \n        │                                           │                                            │                                         │ResultSet (filtered customers) │          \n        │                                           │                                            │                                         │\u003c─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │                                            │             List\u003cCustomer\u003e              │                               │          \n        │                                           │                                            │\u003c────────────────────────────────────────│                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │             HTTP 200 OK                    │                                         │                               │          \n        │                                           │             JSON CustomerList              │                                         │                               │          \n        │                                           │\u003c───────────────────────────────────────────│                                         │                               │          \n        │                                           │                                            │                                         │                               │          \n        │                                           │────┐                                       │                                         │                               │          \n        │                                           │    │ Render customer list                  │                                         │                               │          \n        │                                           │\u003c───┘                                       │                                         │                               │          \n      User                                  ┌───────┴───────┐                          ┌─────────┴────────┐                          ┌─────┴─────┐                     Database       \n       ┌─┐                                  │Vue.js Frontend│                          │Jersey Resource   │                          │CustomerDao│                      ,.-^^-._      \n       ║\"│                                  └───────────────┘                          │(CustomerResource)│                          └───────────┘                     |-.____.-|     \n       └┬┘                                                                             └──────────────────┘                                                            |        |     \n       ┌┼┐                                                                                                                                                             |        |     \n        │                                                                                                                                                              |        |     \n       ┌┴┐                                                                                                                                                             '-.____.-'\n```\n\n___\n\n## UML Relationmodell:\n```\n               ┌──────────────────────────────────┐               \n               │customer                          │               \n               ├──────────────────────────────────┤               \n               │* id : UUID                       │               \n               │--                                │               \n               │first_name : VARCHAR(100)         │               \n               │last_name  : VARCHAR(100)         │               \n               │birth_date : DATE                 │               \n               │gender     : ENUM('D','M','U','W')│               \n               └──────────────────────────────────┘               \n                                 |                                \n                                 |                                \n┌────────────────────────────────────────────────────────────────┐\n│reading                                                         │\n├────────────────────────────────────────────────────────────────┤\n│* id              : UUID                                        │\n│--                                                              │\n│customer_id       : UUID                                        │\n│comment           : VARCHAR(1000)                               │\n│date_of_reading   : DATE                                        │\n│meter_count       : INT                                         │\n│meter_id          : VARCHAR(100)                                │\n│kind_of_meter     : ENUM('HEIZUNG','STROM','WASSER','UNBEKANNT')│\n│substitute        : BOOL                                        │\n└────────────────────────────────────────────────────────────────┘\n```\n\n___\n\n## CI/CD Pipeline: Maven-Test\n\nAutomatisiert Tests und Coverage-Analyse bei jedem Push/Pull Request auf `main`.\n\n### Schritte:\n\n1. **Repository Checkout**: Lädt den Code.\n2. **MariaDB Setup**: Startet eine MariaDB-Instanz mit definierten Secrets.\n3. **Verbindungsprüfung**: Testet die Datenbankverbindung.\n4. **JDK 21 Setup**: Installiert Java 21.\n5. **Datenbankkonfiguration**: Schreibt Verbindungsdaten in `DbData.properties`.\n6. **Build und Tests**: Führt `mvn site -P test` aus.\n7. **Coverage-Report**: Zeigt Coverage-Details im PR an (min. 50 % gesamt, 80 % geänderte Dateien).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foblassgit%2F3fa071_gruppe5","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foblassgit%2F3fa071_gruppe5","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foblassgit%2F3fa071_gruppe5/lists"}