From 39f23a3c80bac3da1eeebba259bcc4c08c2da4d0 Mon Sep 17 00:00:00 2001 From: ExostFlash Date: Tue, 3 Jun 2025 09:54:48 +0200 Subject: [PATCH] test --- .../restControllers/MatchRestController.kt | 6 +-- .../restControllers/PlayerRestController.kt | 5 +- .../restControllers/RefereeRestController.kt | 8 +-- FencerJudgeFront/src/app/app.module.ts | 3 +- .../app/services/matches/matches.service.ts | 45 +++++++++++++--- db.lock.db | 6 --- db.mv.db | Bin 28672 -> 32768 bytes db.trace.db | 48 ++++++++++++++++++ 8 files changed, 92 insertions(+), 29 deletions(-) delete mode 100644 db.lock.db create mode 100644 db.trace.db diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt index eb45355..5f1dd2a 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/MatchRestController.kt @@ -1,12 +1,12 @@ package fr.teamflash.fencerjudgeback.restControllers import fr.teamflash.fencerjudgeback.entities.MatchBean -import fr.teamflash.fencerjudgeback.restControllers.RefereeRestController.Companion.URL_ORIGIN import fr.teamflash.fencerjudgeback.services.MatchService import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.* @RestController +@CrossOrigin(origins = ["*"]) @RequestMapping("/matches") class MatchRestController(private val matchService: MatchService) { @@ -69,7 +69,6 @@ class MatchRestController(private val matchService: MatchService) { } // Ajouter un match - @CrossOrigin(origins = [URL_ORIGIN]) @PostMapping("/create-match") fun createMatch(@RequestBody match: MatchBean): ResponseEntity { // return ResponseEntity.status(HttpStatus.CREATED).body(matchService.createMatch(match)) @@ -77,14 +76,13 @@ class MatchRestController(private val matchService: MatchService) { } // Mettre à jour un match - @CrossOrigin(origins = [URL_ORIGIN]) + @PutMapping("/update-match/{id}") fun updateMatch(@PathVariable id: Long, @RequestBody match: MatchBean): ResponseEntity { return ResponseEntity.ok(matchService.updateMatch(id, match)) } // Supprimer un match - @CrossOrigin(origins = [URL_ORIGIN]) @DeleteMapping("/delete-match/{id}") fun deleteMatch(@PathVariable id: Long): ResponseEntity { return ResponseEntity.ok(matchService.deleteMatchById(id)) diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/PlayerRestController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/PlayerRestController.kt index 96c6f87..3ebcb8f 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/PlayerRestController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/PlayerRestController.kt @@ -1,7 +1,6 @@ package fr.teamflash.fencerjudgeback.restControllers import fr.teamflash.fencerjudgeback.entities.PlayerBean -import fr.teamflash.fencerjudgeback.restControllers.RefereeRestController.Companion.URL_ORIGIN import fr.teamflash.fencerjudgeback.services.PlayerService import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.CrossOrigin @@ -15,6 +14,7 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController +@CrossOrigin(origins = ["*"]) @RequestMapping("/players") class PlayerRestController(private val playerService: PlayerService) { @@ -53,21 +53,18 @@ class PlayerRestController(private val playerService: PlayerService) { } // Ajouter un joueur - @CrossOrigin(origins = [URL_ORIGIN]) @PostMapping("/create-player") fun createPlayer(@RequestBody player: PlayerBean): ResponseEntity { return ResponseEntity.ok(playerService.createPlayer(player)) } // Modifier un joueur - @CrossOrigin(origins = [URL_ORIGIN]) @PutMapping("/update-player/{id}") fun updatePlayer(@PathVariable id: Long, @RequestBody player: PlayerBean): ResponseEntity { return ResponseEntity.ok(playerService.updatePlayer(id, player)) } // Supprimer un joueur - @CrossOrigin(origins = [URL_ORIGIN]) @DeleteMapping("/delete-player/{id}") fun deletePlayer(@PathVariable id: Long): ResponseEntity { return ResponseEntity.ok(playerService.deletePlayerById(id)) diff --git a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/RefereeRestController.kt b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/RefereeRestController.kt index 4535561..4ab1384 100644 --- a/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/RefereeRestController.kt +++ b/FencerJudgeBack/src/main/kotlin/fr/teamflash/fencerjudgeback/restControllers/RefereeRestController.kt @@ -14,13 +14,10 @@ import org.springframework.web.bind.annotation.RequestMapping import org.springframework.web.bind.annotation.RestController @RestController +@CrossOrigin(origins = ["*"]) @RequestMapping("/referees") class RefereeRestController(private val refereeService: RefereeService) { - companion object { - const val URL_ORIGIN: String = "http://localhost:*" - } - // Lister tous les arbitres @GetMapping("/") fun getAll() : ResponseEntity> { @@ -52,21 +49,18 @@ class RefereeRestController(private val refereeService: RefereeService) { } // Ajouter un arbitre - @CrossOrigin(origins = [URL_ORIGIN]) @PostMapping("/create-referee") fun createReferee(@RequestBody referee: RefereeBean): ResponseEntity { return ResponseEntity.ok(refereeService.createReferee(referee)) } // Modifier un arbitre - @CrossOrigin(origins = [URL_ORIGIN]) @PutMapping("/update-referee/{id}") fun updateReferee(@PathVariable id: Long, @RequestBody referee: RefereeBean) : ResponseEntity { return ResponseEntity.ok(refereeService.updateReferee(id, referee)) } // Supprimer un arbitre - @CrossOrigin(origins = [URL_ORIGIN]) @DeleteMapping("/delete-referee/{id}") fun deleteReferee(@PathVariable id:Long): ResponseEntity { return ResponseEntity.ok(refereeService.deleteRefereeById(id)) diff --git a/FencerJudgeFront/src/app/app.module.ts b/FencerJudgeFront/src/app/app.module.ts index 4490d31..de9e710 100644 --- a/FencerJudgeFront/src/app/app.module.ts +++ b/FencerJudgeFront/src/app/app.module.ts @@ -1,6 +1,7 @@ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; @@ -29,7 +30,7 @@ import { MatchesDelComponent } from './components/match/matches-del/matches-del. SponsortComponent, MatchesDelComponent, ], - imports: [BrowserModule, AppRoutingModule, FormsModule], + imports: [BrowserModule, AppRoutingModule, FormsModule, HttpClientModule], providers: [], bootstrap: [AppComponent], }) diff --git a/FencerJudgeFront/src/app/services/matches/matches.service.ts b/FencerJudgeFront/src/app/services/matches/matches.service.ts index 5a80f75..9f3fdeb 100644 --- a/FencerJudgeFront/src/app/services/matches/matches.service.ts +++ b/FencerJudgeFront/src/app/services/matches/matches.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http'; import { Observable, Subject, BehaviorSubject, of } from 'rxjs'; import { Matches, MatchState } from '@interfaces/matches'; @@ -46,16 +47,50 @@ export class MatchesService { }, ]; private socket?: WebSocket; + private apiUrl = 'http://localhost:8080'; private matchUpdates$ = new Subject(); private allMatches: Matches[] = []; private nextMatchId = Math.max(...this.matches.map((m) => m.id)) + 1; - constructor() { - this.connectToMatchUpdatesWebSocket(); + constructor(private http: HttpClient) { + this.sendCurrentMatches(); + } + + public sendCurrentMatches(): void { + if (!this.matches || this.matches.length === 0) { + console.warn('[HTTP] ⚠️ Aucun match à envoyer.'); + return; + } + + const headers = { + headers: { + 'Content-Type': 'application/json', + }, + }; + + this.matches.forEach((match) => { + this.http + .post( + this.apiUrl + '/matches/create-match', + JSON.stringify(match), + headers + ) + .subscribe({ + next: (response) => { + console.log('[HTTP] ✅ Match envoyé avec succès :', response); + }, + error: (error) => { + console.error( + '[HTTP] ❌ Erreur lors de l’envoi d’un match :', + error + ); + }, + }); + }); } private connectToMatchUpdatesWebSocket(): void { - const wsUrl = 'http://localhost:8080/ws/matches-app'; + const wsUrl = 'http://localhost:8080/ws'; this.socket = new WebSocket(wsUrl); this.socket.onopen = () => { @@ -91,10 +126,6 @@ export class MatchesService { } } - public sendCurrentMatches(): void { - this.sendMatchesToWebSocket(); - } - getMatches(): Observable { return this.matchUpdates$.asObservable(); } diff --git a/db.lock.db b/db.lock.db deleted file mode 100644 index 072e750..0000000 --- a/db.lock.db +++ /dev/null @@ -1,6 +0,0 @@ -#FileLock -#Mon Jun 02 17:40:34 CEST 2025 -hostName=ExostFlash -id=197313393c88a931fa21bf5ce1281b7253870b00683 -method=file -server=192.167.2.100\:54366 diff --git a/db.mv.db b/db.mv.db index f4f797b3ba64c7ac8e14beb89a88d66fbb3453e1..632875e3e12c2e420d446e39debffca4dafa5586 100644 GIT binary patch literal 32768 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 Q)PK=43GjdO&iMa-0Sip^&Hw-a diff --git a/db.trace.db b/db.trace.db new file mode 100644 index 0000000..016cc9c --- /dev/null +++ b/db.trace.db @@ -0,0 +1,48 @@ +2025-06-03 09:54:12.514185+02:00 database: close +org.h2.message.DbException: IO Exception: "Closing" +IO Exception: "Closing" [90028-232] + at org.h2.message.DbException.get(DbException.java:212) + at org.h2.mvstore.db.Store.close(Store.java:374) + at org.h2.engine.Database.closeOpenFilesAndUnlock(Database.java:1292) + at org.h2.engine.Database.closeImpl(Database.java:1254) + at org.h2.engine.Database.close(Database.java:1173) + at org.h2.engine.Database.onShutdown(Database.java:1158) + at org.h2.engine.OnExitDatabaseCloser.onShutdown(OnExitDatabaseCloser.java:85) + at org.h2.engine.OnExitDatabaseCloser.run(OnExitDatabaseCloser.java:114) +Caused by: org.h2.jdbc.JdbcSQLNonTransientException: IO Exception: "Closing" +IO Exception: "Closing" [90028-232] + at org.h2.message.DbException.getJdbcSQLException(DbException.java:566) + at org.h2.message.DbException.getJdbcSQLException(DbException.java:489) + ... 8 more +Caused by: org.h2.mvstore.MVStoreException: Reading from file sun.nio.ch.FileChannelImpl@1baeb921 failed at 15775 (length -1), read 0, remaining 24 [2.3.232/1] + at org.h2.mvstore.DataUtils.newMVStoreException(DataUtils.java:996) + at org.h2.mvstore.DataUtils.readFully(DataUtils.java:455) + at org.h2.mvstore.FileStore.readFully(FileStore.java:721) + at org.h2.mvstore.SingleFileStore.readFully(SingleFileStore.java:60) + at org.h2.mvstore.SingleFileStore.readFully(SingleFileStore.java:28) + at org.h2.mvstore.SFChunk.readFully(SFChunk.java:35) + at org.h2.mvstore.Chunk.readToC(Chunk.java:496) + at org.h2.mvstore.FileStore.getToC(FileStore.java:2070) + at org.h2.mvstore.FileStore.rewriteChunks(FileStore.java:1913) + at org.h2.mvstore.FileStore.compactRewrite(FileStore.java:1901) + at org.h2.mvstore.FileStore.rewriteChunks(FileStore.java:1862) + at org.h2.mvstore.FileStore.lambda$compact$0(FileStore.java:879) + at org.h2.mvstore.MVStore.tryExecuteUnderStoreLock(MVStore.java:937) + at org.h2.mvstore.FileStore.compact(FileStore.java:879) + at org.h2.mvstore.RandomAccessStore.compactStore(RandomAccessStore.java:441) + at org.h2.mvstore.FileStore.compactStore(FileStore.java:890) + at org.h2.mvstore.FileStore.stop(FileStore.java:275) + at org.h2.mvstore.MVStore.closeStore(MVStore.java:693) + at org.h2.mvstore.MVStore.close(MVStore.java:643) + at org.h2.mvstore.db.Store.close(Store.java:364) + ... 6 more +Caused by: java.io.IOException: Le périphérique n’est pas prêt + at java.base/sun.nio.ch.FileDispatcherImpl.pread0(Native Method) + at java.base/sun.nio.ch.FileDispatcherImpl.pread(FileDispatcherImpl.java:67) + at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:338) + at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:306) + at java.base/sun.nio.ch.IOUtil.read(IOUtil.java:283) + at java.base/sun.nio.ch.FileChannelImpl.readInternal(FileChannelImpl.java:984) + at java.base/sun.nio.ch.FileChannelImpl.read(FileChannelImpl.java:964) + at org.h2.mvstore.DataUtils.readFully(DataUtils.java:441) + ... 24 more