diff --git a/client/src/app/app-routing.module.ts b/client/src/app/app-routing.module.ts index c89d41c170e6a2b31db45a9dac66b74f98f0a1c5..928840b2fc1631acf3e042ea7f9586fb564a1fd5 100644 --- a/client/src/app/app-routing.module.ts +++ b/client/src/app/app-routing.module.ts @@ -14,7 +14,7 @@ const routerOptions: ExtraOptions = { const routes: Routes = [ {path: 'program_test', component: ProgramDisplayerComponent}, {path: 'kata-displayer/:id/:title/:language/:sensei', component: KataDisplayerComponent}, - {path: 'kata/:id', component: KataComponent}, + {path: 'kata/:prgtitle/:sensei/:prid/:id', component: KataComponent}, {path: 'program_create', component: ProgramCreateComponent}, {path: 'kata_create/:id/:language', component: KataCreateComponent}, ]; diff --git a/client/src/app/app.module.ts b/client/src/app/app.module.ts index fa7b47e627dba7685bfcf54734982dfeb9de13ab..b9d1f5d30b8335a52a15e83eeb041efa7d4b9ee0 100644 --- a/client/src/app/app.module.ts +++ b/client/src/app/app.module.ts @@ -17,6 +17,7 @@ import {AceEditorModule} from 'ng2-ace-editor'; import { KataCreateComponent } from './kata-create/kata-create.component'; import { ProgramCreateComponent } from './program-create/program-create.component'; import {FormsModule} from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; @NgModule({ @@ -44,7 +45,8 @@ import {FormsModule} from '@angular/forms'; AppRoutingModule, RouterModule, AceEditorModule, - FormsModule + FormsModule, + HttpClientModule ], providers: [], bootstrap: [AppComponent] diff --git a/client/src/app/compilation.service.ts b/client/src/app/compilation.service.ts index e9f714ad51ce2c0539590a6f1013a7f477163fa5..35844fd747051ddb9d1a5451515b931a67972404 100644 --- a/client/src/app/compilation.service.ts +++ b/client/src/app/compilation.service.ts @@ -1,28 +1,15 @@ import {Injectable} from '@angular/core'; -import * as $ from 'jquery'; +import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class CompilationService { - compilationServer(obj: string): string { - let response = ''; - $.ajax({ - url: 'http://localhost:7000/run/', - type: 'POST', - async: false, - data: obj, - contentType: 'application/json', - success(data) { - response = data; - } - - }); - - return response; + compilationServer(obj: string) { + return this.http.post('http://localhost:7000/run/', obj); } - constructor() { + constructor(private http: HttpClient) { } } diff --git a/client/src/app/create-kata.service.ts b/client/src/app/create-kata.service.ts index 87f9bfbb51625d12c0482168a81b9af099511f80..7821435ff3d98cb887bd698e1a3bb1457679c9bf 100644 --- a/client/src/app/create-kata.service.ts +++ b/client/src/app/create-kata.service.ts @@ -1,23 +1,15 @@ import {Injectable} from '@angular/core'; -import * as $ from 'jquery'; +import {HttpClient, HttpHeaders} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) -export class CreateKataService { - - publish(obj: string): void { - - $.ajax({ - url: 'http://localhost:7000/kata/create', - type: 'POST', - async: false, - data: obj, - contentType: 'application/json' - }); +export class CreateKataService { + publish(obj: string) { + return this.http.post('http://localhost:7000/kata/create', obj); } - constructor() { + constructor(private http: HttpClient) { } } diff --git a/client/src/app/create-program.service.ts b/client/src/app/create-program.service.ts index 7630baf4fc7d1f59c56ab070b48b0af30cfcaf5e..ee2f282de9814d2eb9cf9b8704594afbc25844fd 100644 --- a/client/src/app/create-program.service.ts +++ b/client/src/app/create-program.service.ts @@ -1,30 +1,19 @@ import {Injectable} from '@angular/core'; -import * as $ from 'jquery'; +import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) -export class CreateProgramService { - createProgram(obj: string): string { - let response = ''; - $.ajax({ - url: 'http://localhost:7000/program/create', - type: 'POST', - async: false, - data: obj, - contentType: 'application/json', - success(data) { - response = data; - } +export class CreateProgramService { - }); - return response; + createProgram(obj: string) { + return this.http.post('http://localhost:7000/program/create', obj); } - constructor() { + constructor(private http: HttpClient) { } } diff --git a/client/src/app/fetch-kata-show-case.service.ts b/client/src/app/fetch-kata-show-case.service.ts index fc7d9aae4fc71abaabb881aa2286c07b4ed3baf4..e92d827f823ade9c98fdaa38ac2a106de3c5e4c1 100644 --- a/client/src/app/fetch-kata-show-case.service.ts +++ b/client/src/app/fetch-kata-show-case.service.ts @@ -1,14 +1,17 @@ -import { Injectable } from '@angular/core'; +import {Injectable} from '@angular/core'; import {KataShowCase} from './kata-displayer/kataShowCase'; -import {KATAS} from './kata-displayer/kataShowCaseMock'; +import * as $ from 'jquery'; +import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class FetchKataShowCaseService { - constructor() { } - getPrograms(program: number): KataShowCase[] { - return KATAS.filter(x => x.idProgram === program); + constructor(private http: HttpClient) { + } + + getKatasDetails(program: number) { + return this.http.get('http://localhost:7000/program/getkatas/details/' + program + ''); } } diff --git a/client/src/app/fetch-kata.service.ts b/client/src/app/fetch-kata.service.ts index 659d9267940fc7a905d73b9946ecc91d259870ac..1ff94d5670f150677b70e47b9d9cca78cf436c1e 100644 --- a/client/src/app/fetch-kata.service.ts +++ b/client/src/app/fetch-kata.service.ts @@ -1,18 +1,17 @@ import {Injectable} from '@angular/core'; +import {HttpClient} from '@angular/common/http'; -import {Kata} from './kata/kata'; -import {KATAS} from './kata/kataMock'; @Injectable({ providedIn: 'root' }) export class FetchKataService { - getKata(kataId: number): Kata[] { - return KATAS; + getKata(programID: number, kataID: number) { + return this.http.get('http://localhost:7000/program/getkata/' + programID + '/' + kataID + ''); } - constructor() { + constructor(private http: HttpClient) { } } diff --git a/client/src/app/fetch-program.service.ts b/client/src/app/fetch-program.service.ts index 72758ecb7641c8eb1dd3be2348b00d8a9c3437ac..9e1a79b8cad6203487fd97a1b81e6a8f7cb6b548 100644 --- a/client/src/app/fetch-program.service.ts +++ b/client/src/app/fetch-program.service.ts @@ -1,30 +1,16 @@ import {Injectable} from '@angular/core'; -import {Program} from './program-displayer/program'; -import {PROGRAMS} from './program-displayer/programMock'; -import * as $ from 'jquery'; +import {HttpClient} from '@angular/common/http'; @Injectable({ providedIn: 'root' }) export class FetchProgramService { - getPrograms(): Program[] { - let response = ''; - - $.ajax({ - url: 'http://localhost:7000/program/getall', - type: 'get', - async: false, - success(data) { - response = data; - } - - }); - - const obj: Program[] = response as Program; - return obj; + getPrograms() { + return this.http.get('http://localhost:7000/program/getdetails'); } - constructor() { + + constructor(private http: HttpClient) { } } diff --git a/client/src/app/kata-create/kata-create.component.ts b/client/src/app/kata-create/kata-create.component.ts index 8937b4d90245c5658190e3d80f976e2d9b2a5105..a4a7a049f66d8ed20951a523eeaf9149f529e94c 100644 --- a/client/src/app/kata-create/kata-create.component.ts +++ b/client/src/app/kata-create/kata-create.component.ts @@ -5,7 +5,6 @@ import {ActivatedRoute, Router} from '@angular/router'; import {Location} from '@angular/common'; import {CreateKataService} from '../create-kata.service'; import {CompilationService} from '../compilation.service'; -import * as $ from 'jquery'; @Component({ selector: 'app-kata-create', @@ -64,37 +63,44 @@ export class KataCreateComponent implements OnInit { } publish(): void { + this.kateCreateService.publish(JSON.stringify({ + id: +new Date(), title: this.title, + language: this.language, canva: this.canva, cassert: this.assert, solution: this.solution, rules: this.rules, keepAssert: this.keepAssertForKata, nbAttempt: this.numberOfAttempt, - programID: this.programId - })); + programID: this.programId, + difficulty: 'Ceinture blanche' + })).subscribe(); this.router.navigate(['/kata-displayer/' + this.programId + '']); } try(): void { - const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({ + let response; + + this.compilationService.compilationServer(JSON.stringify({ language: this.language, stream: this.solution, assert: this.assert - }))); - - - if (response.exit === 0) { - this.status = 0; - this.result = response.output + '\nTests passed'; - } else { - this.status = 1; - this.result = response.error; - } - - this.result += '\nExecuted in : ' + response.time + 'ms'; + })).subscribe((data: string) => { + console.log(data); + response = data; + if (response.exit === 0) { + this.status = 0; + this.result = response.output + '\nTests passed'; + } else { + this.status = 1; + this.result = response.error; + } + + this.result += '\nExecuted in : ' + response.time + 'ms'; + }); } ngOnInit() { diff --git a/client/src/app/kata-displayer/kata-displayer.component.html b/client/src/app/kata-displayer/kata-displayer.component.html index f51d8bdd49e924bd75ac1c84a5c833ec9bff6ac3..c8b63d8e5aee9aaffffca3d8fd4d5f6b4cced839 100644 --- a/client/src/app/kata-displayer/kata-displayer.component.html +++ b/client/src/app/kata-displayer/kata-displayer.component.html @@ -1,4 +1,4 @@ -<div class="container"> +<div class="container" *ngIf="katas"> <span class="title">{{programTitle}} <br> <span class="subtitle">{{programSensei}} <span class="language"> {{programLanguage}}</span> @@ -11,13 +11,14 @@ <div class="p-2"> <div class="card" style="width: 18rem;"> <div class="card-body"> - <h5 class="card-title"><a class="title" routerLink="/kata/{{kata.id}}">{{kata.title}}</a></h5> + <h5 class="card-title"><a class="title" + routerLink="/kata/{{programTitle}}/{{programSensei}}/{{idProgram}}/{{kata.id}}">{{kata.title}}</a></h5> <br/> <h6 class="card-subtitle mb-2 text-muted">{{kata.difficulty}} </h6> <span style="float: right;">{{kata.status}}</span> <br/> <br/> - <p class="card-text">{{kata.description}}</p> + <!--<p class="card-text">{{kata.description}}</p>--> </div> </div> </div> diff --git a/client/src/app/kata-displayer/kata-displayer.component.ts b/client/src/app/kata-displayer/kata-displayer.component.ts index c9140611980c5992fdf759aab336159042a153f9..8e20a10a75ac4eba35ee6109b302101601446a06 100644 --- a/client/src/app/kata-displayer/kata-displayer.component.ts +++ b/client/src/app/kata-displayer/kata-displayer.component.ts @@ -16,6 +16,7 @@ export class KataDisplayerComponent implements OnInit { programTitle: string; programLanguage: string; programSensei: string; + constructor( private route: ActivatedRoute, private location: Location, @@ -28,7 +29,7 @@ export class KataDisplayerComponent implements OnInit { this.programSensei = this.route.snapshot.paramMap.get('sensei'); this.programLanguage = this.route.snapshot.paramMap.get('language'); this.programTitle = this.route.snapshot.paramMap.get('title'); - this.katas = this.fetchKataShowCaseService.getPrograms(this.idProgram); + this.fetchKataShowCaseService.getKatasDetails(this.idProgram).subscribe((data: KataShowCase[]) => this.katas = data); } ngOnInit() { diff --git a/client/src/app/kata-displayer/kataShowCase.ts b/client/src/app/kata-displayer/kataShowCase.ts index 3b7a3ee523ce7a453e1409e38449650db5aa39ef..01043af95ebb554d40b1be61bfd3d439d5db1c98 100644 --- a/client/src/app/kata-displayer/kataShowCase.ts +++ b/client/src/app/kata-displayer/kataShowCase.ts @@ -1,9 +1,7 @@ -export class KataShowCase { - id: number; +export interface KataShowCase { title: string; difficulty: string; - idProgram: number; - description: string; + id: string; status: string; } diff --git a/client/src/app/kata-displayer/kataShowCaseMock.ts b/client/src/app/kata-displayer/kataShowCaseMock.ts index 7d8599ca2b0b2acab5bc65ba5989b95ddd618823..d9827e49f72cd5d6414b1558dd6f45310bc4e6af 100644 --- a/client/src/app/kata-displayer/kataShowCaseMock.ts +++ b/client/src/app/kata-displayer/kataShowCaseMock.ts @@ -1,4 +1,4 @@ -import {KataShowCase} from './kataShowCase'; +/*import {KataShowCase} from './kataShowCase'; export const KATAS: KataShowCase[] = [ { @@ -12,3 +12,4 @@ export const KATAS: KataShowCase[] = [ {id: 1, title: 'Fopen', difficulty: 'Ceinture Jaune', idProgram: 1, description: 'TOFILL', status: 'FAILED'}, {id: 2, title: 'Fwrite', difficulty: 'Ceinture Verte', idProgram: 1, description: 'TOFILL', status: 'RESOLVED'} ]; +*/ diff --git a/client/src/app/kata/kata.component.html b/client/src/app/kata/kata.component.html index 2963cce582b6bcddafd3a30e5c9675d92b3af664..bfb17756334dad20edc5c3ad8ac63c200ab09483 100644 --- a/client/src/app/kata/kata.component.html +++ b/client/src/app/kata/kata.component.html @@ -1,26 +1,26 @@ -<div class="d-flex justify-content-center" style="margin-top:2%"> +<div *ngIf="kata" class="d-flex justify-content-center" style="margin-top:2%"> <div class="d-flex flex-column"> - <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/0/{{kata.title}}/{{kata.language}}/{{kata.sensei}}">- {{kata.programTitle}}</a> - <br><span class="subtitle">{{kata.sensei}} <span class="language"> {{kata.language}}</span></span></div> + <div class="p-2 title">{{kata.title}} <a routerLink="/kata-displayer/{{programID}}/{{kata.title}}/{{kata.language}}/{{programSensei}}">- {{programTitle}}</a> + <br><span class="subtitle">{{programSensei}} <span class="language"> {{kata.language}}</span></span></div> <div class="p-2 "><textarea disabled style="text-align: justify">{{kata.rules}}</textarea> <app-terminal-code style="margin-left: 20px;" [code]="kata.canva" [type]="kata.language" (new)="OnNewEvent($event)"></app-terminal-code> </div> <div class="p-2"> - <app-terminal-assert [code]="kata.assert" [type]="kata.language"></app-terminal-assert> + <app-terminal-assert [code]="kata.cassert" [type]="kata.language"></app-terminal-assert> <textarea [ngClass]="{'success':status === 0,'error':status === 1,'':status === 2}" style="white-space: pre-wrap;" disabled>{{result}}</textarea> </div> <div class="p-2"> - <button (click)="compile(kata.language,kata.canva,kata.assert)" class="code">TRY MY SOLUTION</button> - <button (click)="compile(kata.language,kata.canva,kata.assert)" style="margin-right: 10px" class="code">SURRENDER</button> + <button (click)="compile(kata.language,kata.canva,kata.cassert)" class="code">TRY MY SOLUTION</button> + <button style="margin-right: 10px" class="code">SURRENDER</button> </div> </div> </div> -<!--[(ngModel)]="result"--> + diff --git a/client/src/app/kata/kata.component.ts b/client/src/app/kata/kata.component.ts index fb7f8f06d7740973682da848aff31cb392caa7c1..706d298d66247e6c7b0a6b0b33aec2fc7cab292d 100644 --- a/client/src/app/kata/kata.component.ts +++ b/client/src/app/kata/kata.component.ts @@ -17,6 +17,10 @@ export class KataComponent implements OnInit { idKata: number; status = 2; result = ''; + programID: number; + + programTitle: string; + programSensei: string; constructor( private route: ActivatedRoute, @@ -28,7 +32,13 @@ export class KataComponent implements OnInit { getKata(): void { this.idKata = +this.route.snapshot.paramMap.get('id'); - this.kata = this.fetchKataService.getKata(this.idKata)[0]; + this.programID = +this.route.snapshot.paramMap.get('prid'); + this.programSensei = this.route.snapshot.paramMap.get('sensei'); + this.programTitle = this.route.snapshot.paramMap.get('prgtitle'); + this.fetchKataService.getKata(this.programID, this.idKata).subscribe((data: Kata) => { + this.kata = data; + }); + } OnNewEvent(event: any): void { @@ -36,22 +46,25 @@ export class KataComponent implements OnInit { } compile(language: string, stream: string, assert: string): void { - const response = $.parseJSON(this.compilationService.compilationServer(JSON.stringify({ + let response; + + this.compilationService.compilationServer(JSON.stringify({ language: this.kata.language, stream: stream, assert: assert - }))); - - - if (response.exit === 0) { - this.status = 0; - this.result = response.output + '\nExercise passed'; - } else { - this.status = 1; - this.result = response.error; - } + })).subscribe((data: string) => { + console.log(data); + response = data; + if (response.exit === 0) { + this.status = 0; + this.result = response.output + '\nExercise passed'; + } else { + this.status = 1; + this.result = response.error; + } - this.result += '\nExecuted in : ' + response.time + 'ms'; + this.result += '\nExecuted in : ' + response.time + 'ms'; + }); } ngOnInit() { diff --git a/client/src/app/kata/kata.ts b/client/src/app/kata/kata.ts index 7466b9df02c14ae1d9d08f000f014f9e9e21ea7d..603cb6b73cfd41b5dcf52350587485559be85614 100644 --- a/client/src/app/kata/kata.ts +++ b/client/src/app/kata/kata.ts @@ -1,12 +1,13 @@ -export class Kata { - id: number; +export interface Kata { + id: string; title: string; - sensei: string; - programTitle: string; language: string; solution: string; canva: string; rules: string; - assert: string; - + cassert: string; + keepAssert: boolean; + nbAttempt: number; + programID: string; + difficulty: string; } diff --git a/client/src/app/kata/kataMock.ts b/client/src/app/kata/kataMock.ts index c027ffeb71eb68e8ca63d3436e7588d811340df5..9e5cbbf391cf64d9909b7da52fcebdea2e15d72c 100644 --- a/client/src/app/kata/kataMock.ts +++ b/client/src/app/kata/kataMock.ts @@ -1,3 +1,4 @@ +/* import {Kata} from './kata'; // TODO un kata n'a pas besoin de programtitile, ca devrait ĂȘtre passĂ© par la classe d'en dessus (idem pour sensei) @@ -17,3 +18,4 @@ export const KATAS: Kata[] = [{ 'assert_that(m.multiTwo([3])).is_equal_to([6])', solution: 'def multiTwo(n):\n' + ' return [i*2 for i in n]' }]; +*/ diff --git a/client/src/app/program-create/program-create.component.ts b/client/src/app/program-create/program-create.component.ts index d5e63a270993d41b9894f30447b66bdf93d3f46f..97468c200f26fa0b91232d6749dc54bc4d33c0bb 100644 --- a/client/src/app/program-create/program-create.component.ts +++ b/client/src/app/program-create/program-create.component.ts @@ -24,26 +24,27 @@ export class ProgramCreateComponent implements OnInit { } createProgram(newkata: boolean): void { - console.log(this.programTags.split(',')); - this.programToKata = +this.createProgramService.createProgram(JSON.stringify({ - id: + new Date(), + this.createProgramService.createProgram(JSON.stringify({ + id: this.programToKata, sensei: 'Orestis Pileas Malaspinas', language: this.programLanguage, nbKata: 0, title: this.programTitle, description: this.programDescr, - tags: this.programTags.split(',') - })); - - if (newkata) { - this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']); - } else { - this.router.navigate(['/']); - } + tags: this.programTags.split(','), + katas: [] + })).subscribe(() => { + if (newkata) { + this.router.navigate(['/kata_create/' + this.programToKata + '/' + this.programLanguage + '']); + } else { + this.router.navigate(['/']); + } + }); } ngOnInit() { + this.programToKata = +new Date(); } } diff --git a/client/src/app/program-displayer/program-displayer.component.html b/client/src/app/program-displayer/program-displayer.component.html index 63cd6576bb7fb47f2159e06f9af5c66b1e41d77d..a7d45b1a9380c2fbf29b2d5c5849ddbdb31717f4 100644 --- a/client/src/app/program-displayer/program-displayer.component.html +++ b/client/src/app/program-displayer/program-displayer.component.html @@ -1,13 +1,13 @@ -<div class="d-flex justify-content-center" style="margin-top:2%"> +<div class="d-flex justify-content-center" *ngIf="programs" style="margin-top:2%"> <div class="d-flex flex-column"> <div class="p-2" style="width:200px"></div> <div class="p-2">Liste de programme</div> <div class="p-2" > - <span *ngFor="let program of programs"> + <span *ngFor="let program of programs"> <div class="card" style="width: 18rem;"> <div class="card-body"> - <a routerLink="/kata-displayer/{{program.id}}/{{program.title}}/{{program.language}}/{{program.sensei}}"> + <a routerLink="/kata-displayer/{{program.programID}}/{{program.title}}/{{program.language}}/{{program.sensei}}"> <h5 class="card-title">{{program.title}}</h5></a> <h6 class="card-subtitle mb-2 text-muted"><a class="sensei" href="">{{program.sensei}} </a> <a href=""><span class="language">{{program.language}}</span></a></h6> diff --git a/client/src/app/program-displayer/program-displayer.component.ts b/client/src/app/program-displayer/program-displayer.component.ts index 63172e5792857c0b8181973aa4b005ea92187e23..45517ebe8f60f4be40cc66ae30e3599d42d40d83 100644 --- a/client/src/app/program-displayer/program-displayer.component.ts +++ b/client/src/app/program-displayer/program-displayer.component.ts @@ -16,7 +16,7 @@ export class ProgramDisplayerComponent implements OnInit { } getProgram(): void { - this.programs = this.fetchProgramService.getPrograms(); + this.fetchProgramService.getPrograms().subscribe((data: Program[]) => this.programs = data); } ngOnInit() { diff --git a/client/src/app/program-displayer/program.ts b/client/src/app/program-displayer/program.ts index 354edb0f5bc309fb8dc6b6811354490cc191bf84..228b41e6d1a3a47e0ca30e5e8e9d98bb9a55ca14 100644 --- a/client/src/app/program-displayer/program.ts +++ b/client/src/app/program-displayer/program.ts @@ -1,9 +1,9 @@ export interface Program { - id: string, - title: string; - language: string; - sensei: string; - nbKata: number; - description: string; - tags: string[]; + programID: string; + title: string; + language: string; + sensei: string; + nbKata: number; + description: string; + tags: string[]; } diff --git a/client/src/app/program-displayer/programMock.ts b/client/src/app/program-displayer/programMock.ts index e8161da5a70fd4a17f8b6f0aee6daeebd004a31a..a505b6f54df64d27b2baef1b52111c39abd6b813 100644 --- a/client/src/app/program-displayer/programMock.ts +++ b/client/src/app/program-displayer/programMock.ts @@ -1,4 +1,4 @@ -import {Program} from './program'; +/*import {Program} from './program'; export const PROGRAMS: Program[] = [ { @@ -20,3 +20,4 @@ export const PROGRAMS: Program[] = [ } ]; +*/ diff --git a/client/src/app/terminal-code/terminal-code.component.html b/client/src/app/terminal-code/terminal-code.component.html index f860115080de1ccb0fa851e88b0ca7a5266c61a0..bb8fe6116690605222ab745312fb1fe790a6df54 100644 --- a/client/src/app/terminal-code/terminal-code.component.html +++ b/client/src/app/terminal-code/terminal-code.component.html @@ -1 +1 @@ -<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="1000" #editor></ace-editor> +<ace-editor [readOnly]="false" [mode]="type" (textChanged)="onChange($event)" [autoUpdateContent]="true" [(text)]="code" [durationBeforeCallback]="200" #editor></ace-editor> diff --git a/tests/serveur_compilation/server_rest/src/main/java/Kata.java b/tests/serveur_compilation/server_rest/src/main/java/Kata.java index 9cd0bc5d1a3047ae82e562ead68ad37fa69bc0d9..55f94dcfeed3d00b25b7f18d5e56ba392d72c0e4 100644 --- a/tests/serveur_compilation/server_rest/src/main/java/Kata.java +++ b/tests/serveur_compilation/server_rest/src/main/java/Kata.java @@ -1,7 +1,7 @@ public class Kata { - private String title, canva, cassert, solution, rules; + private String id, title, canva, cassert, solution, rules,programID,difficulty,language; private boolean keepAssert; - private int nbAttempt,programID; + private int nbAttempt; public boolean isKeepAssert() { @@ -60,11 +60,35 @@ public class Kata { this.nbAttempt = nbAttempt; } - public int getProgramID() { + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getProgramID() { return programID; } - public void setProgramID(int programID) { + public void setProgramID(String programID) { this.programID = programID; } + + public String getDifficulty() { + return difficulty; + } + + public void setDifficulty(String difficulty) { + this.difficulty = difficulty; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } } diff --git a/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java new file mode 100644 index 0000000000000000000000000000000000000000..345ea1e1390e0127dbb657610c0cd0132785180d --- /dev/null +++ b/tests/serveur_compilation/server_rest/src/main/java/KataShowCase.java @@ -0,0 +1,42 @@ +public class KataShowCase { + private String title,difficulty,id,status; + + public KataShowCase(String title, String difficulty, String id, String status){ + this.difficulty = difficulty; + this.title = title; + this.id = id; + this.status = status; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDifficulty() { + return difficulty; + } + + public void setDifficulty(String difficulty) { + this.difficulty = difficulty; + } + + public String getId() { + return id; + } + + public void setId(String programID) { + this.id = programID; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + this.status = status; + } +} diff --git a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java index 6d2608e9c7b4805b15127645a1aec03217a434fa..334fe38ff8104a1fc70a004fd13eb3f46bc02069 100644 --- a/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java +++ b/tests/serveur_compilation/server_rest/src/main/java/LiveDB.java @@ -1,31 +1,63 @@ import java.util.ArrayList; -public class LiveDB extends ProgramsDataBase{ +public class LiveDB extends ProgramsDataBase { - ArrayList<Program> programs; ArrayList<Kata> katas; + ArrayList<Program> programs; public LiveDB() { - programs = new ArrayList<>(); + this.programs = new ArrayList<>(); + this.katas = new ArrayList<>(); + } + + public void createProgram(Program prg) { + this.programs.add(prg); + } + public void createKata(Kata kata) { + for (Program p : this.programs) + if (p.getId().equals(kata.getProgramID())) { + p.setNbKata(p.getNbKata() + 1); + p.getKatas().add(kata); + break; + } } - public String createProgram(Program prg) { + public ArrayList<ProgramShowCase> getProgramsDetails() { + ArrayList<ProgramShowCase> p = new ArrayList<>(); - programs.add(prg); - return String.valueOf(programs.indexOf(prg)); + for (Program prg : this.programs) + p.add(new ProgramShowCase(prg.getTitle(), prg.getSensei(), prg.getLanguage(), prg.getDescription(), prg.getNbKata(), prg.getTags(), prg.getId())); + + return p; } - public void createKata(Kata kata) { - katas.add(kata); - //programs.get(kata.getProgramID()).setKata(); - // programs.get(kata.getProgramID()).getKata().add(kata); + public Kata getProgramKata(String programID, String kataID) { + ArrayList<Kata> ktemp = new ArrayList<>(); + Kata kata = new Kata(); + for (Program prg : this.programs) + if (prg.getId().equals(programID)) + ktemp = prg.getKatas(); + for(Kata k : ktemp) + if(k.getId().equals(kataID)) + kata = k; + return kata; } - public ArrayList<Program> getAllPrograms(){ - return programs; + public ArrayList<KataShowCase> getProgramKatasDetails(String programID) { + ArrayList<KataShowCase> ktsc = new ArrayList<>(); + ArrayList<Kata> kt = new ArrayList<>(); + for (Program prg : this.programs) + if (prg.getId().equals(programID)) { + kt = prg.getKatas(); + break; + } + + for (Kata k : kt) + ktsc.add(new KataShowCase(k.getTitle(), k.getDifficulty(), k.getId(), "TODO")); + return ktsc; } -} +} \ No newline at end of file diff --git a/tests/serveur_compilation/server_rest/src/main/java/Program.java b/tests/serveur_compilation/server_rest/src/main/java/Program.java index f165d3e2eb78d37e739a79a55ab173cfdbf6d578..40ced1914b050bc844664e10926797549c3bd58b 100644 --- a/tests/serveur_compilation/server_rest/src/main/java/Program.java +++ b/tests/serveur_compilation/server_rest/src/main/java/Program.java @@ -4,6 +4,7 @@ public class Program { private String id,sensei,language,title,description; private String[] tags; private int nbKata; + private ArrayList<Kata> katas; public String getSensei() { return sensei; @@ -60,6 +61,14 @@ public class Program { public void setId(String id) { this.id = id; } + + public ArrayList<Kata> getKatas() { + return katas; + } + + public void setKatas(ArrayList<Kata> katas) { + this.katas = katas; + } /* public ArrayList<Kata> getKata() { return kata; diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java new file mode 100644 index 0000000000000000000000000000000000000000..5f1974c31a6c93f62ad3c67aedf72d4c3dfc713b --- /dev/null +++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramShowCase.java @@ -0,0 +1,71 @@ +public class ProgramShowCase { + private String title,sensei,language,description,programID; + private int nbKata; + private String[] tags; + + public ProgramShowCase(String title, String sensei, String language, String description, int nbKata, String[] tags, String programID){ + this.title = title; + this.sensei = sensei; + this.language = language; + this.description = description; + this.nbKata = nbKata; + this.tags = tags; + this.programID = programID; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getSensei() { + return sensei; + } + + public void setSensei(String sensei) { + this.sensei = sensei; + } + + public String getLanguage() { + return language; + } + + public void setLanguage(String language) { + this.language = language; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getNbKata() { + return nbKata; + } + + public void setNbKata(int nbKata) { + this.nbKata = nbKata; + } + + public String[] getTags() { + return tags; + } + + public void setTags(String[] tags) { + this.tags = tags; + } + + public String getProgramID() { + return programID; + } + + public void setProgramID(String programID) { + this.programID = programID; + } +} diff --git a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java index 942460a4a29208c2a2f976f8bcf8449ee93bc030..fdd800aa856550ded904d8821df1e384285c7123 100644 --- a/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java +++ b/tests/serveur_compilation/server_rest/src/main/java/ProgramsDataBase.java @@ -1,7 +1,9 @@ import java.util.ArrayList; public abstract class ProgramsDataBase { - public abstract String createProgram(Program prg); + public abstract void createProgram(Program prg); public abstract void createKata(Kata kata); - public abstract ArrayList<Program> getAllPrograms(); + public abstract ArrayList<ProgramShowCase> getProgramsDetails(); + public abstract Kata getProgramKata(String programID, String kataID); + public abstract ArrayList<KataShowCase> getProgramKatasDetails(String programID); } diff --git a/tests/serveur_compilation/server_rest/src/main/java/app.java b/tests/serveur_compilation/server_rest/src/main/java/app.java index 9fc5f030de278874ed60bf8c6e512bef6a0757f3..7e406b846374273ec46a0c856fc01d2c99004ddb 100644 --- a/tests/serveur_compilation/server_rest/src/main/java/app.java +++ b/tests/serveur_compilation/server_rest/src/main/java/app.java @@ -57,7 +57,7 @@ public class app { app.post("/program/create", ctx -> { Program prg = objectMapper.readValue(ctx.body(), Program.class); - ctx.result(db.createProgram(prg)); + db.createProgram(prg); }); app.post("/kata/create", ctx -> { @@ -65,8 +65,16 @@ public class app { db.createKata(kt); }); - app.get("/program/getall", ctx -> { - ctx.json(db.getAllPrograms()); + app.get("/program/getdetails", ctx -> { + ctx.json(db.getProgramsDetails()); + }); + + app.get("/program/getkatas/details/:id", ctx -> { + ctx.json(db.getProgramKatasDetails(ctx.pathParam("id"))); + }); + + app.get("/program/getkata/:prid/:id", ctx -> { + ctx.json(db.getProgramKata(ctx.pathParam("prid"),ctx.pathParam("id"))); }); } diff --git a/tests/serveur_compilation/server_rest/target/classes/Kata.class b/tests/serveur_compilation/server_rest/target/classes/Kata.class index 24051da0d093d147439b77806979affed7719169..f25c79bcda09dd0d6749bcb29e8197d9ff1f8e99 100644 Binary files a/tests/serveur_compilation/server_rest/target/classes/Kata.class and b/tests/serveur_compilation/server_rest/target/classes/Kata.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class b/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class new file mode 100644 index 0000000000000000000000000000000000000000..0cd30bb503988e17695e5101e37861fec13e46c1 Binary files /dev/null and b/tests/serveur_compilation/server_rest/target/classes/KataShowCase.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/LiveDB.class b/tests/serveur_compilation/server_rest/target/classes/LiveDB.class index 643b28cb936fca7c136dc0d74110d0826e0f7fd4..e7abcb7ca81754ed034a5c3e5f1f504b1f140e3f 100644 Binary files a/tests/serveur_compilation/server_rest/target/classes/LiveDB.class and b/tests/serveur_compilation/server_rest/target/classes/LiveDB.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/Program.class b/tests/serveur_compilation/server_rest/target/classes/Program.class index 076c738e8da22af7eb12c4d2246a1350e57e6e69..28a6aa780e25735f56a5623fa57bcb5ccfcefe45 100644 Binary files a/tests/serveur_compilation/server_rest/target/classes/Program.class and b/tests/serveur_compilation/server_rest/target/classes/Program.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class new file mode 100644 index 0000000000000000000000000000000000000000..787ad292fa0c3d49f6f3f9376aa49f0cc0621a24 Binary files /dev/null and b/tests/serveur_compilation/server_rest/target/classes/ProgramShowCase.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class b/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class index 5cf70dcf91262632cd00de8714059b7414cfebc6..bcfdd67e6dde0c9b6d912f6e36b8665e556f522d 100644 Binary files a/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class and b/tests/serveur_compilation/server_rest/target/classes/ProgramsDataBase.class differ diff --git a/tests/serveur_compilation/server_rest/target/classes/app.class b/tests/serveur_compilation/server_rest/target/classes/app.class index d71aef4b1c2e5d40604a286ab5ad413696e90e86..b6aa526cb48f6549b6af307f8969b230ef95c720 100644 Binary files a/tests/serveur_compilation/server_rest/target/classes/app.class and b/tests/serveur_compilation/server_rest/target/classes/app.class differ diff --git a/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc b/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc index d8b4331ea84fc0443059b6c9bca23135615f2cf4..dff2bd8c9b20431260cff819dc0a15783cef5ded 100644 Binary files a/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc and b/tests/serveur_compilation/serveur_compilation/share_docker_file/__pycache__/sample.cpython-34.pyc differ diff --git a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java index 6ad789e25dcd538f91dffbeef5c9ea71dc432482..cce482e90a1da238e05f25688473af0f9edb6161 100644 --- a/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java +++ b/tests/serveur_compilation/serveur_compilation/src/main/java/DockerCompilation.java @@ -13,14 +13,12 @@ public class DockerCompilation { case "python": filename = "share_docker_file/sample.py"; filename_test = "share_docker_file/assert.py"; - // cmd = "python3 " + filename_test; cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ hey:1.1 python3 assert.py"; break; case "java": filename = "share_docker_file/kata.java"; filename_test = "share_docker_file/Main.java"; cmd = "docker run --rm --mount type=bind,source=/Users/freak/Desktop/dojo-hepia/tests/serveur_compilation/serveur_compilation/share_docker_file,dst=/env/ java:4.0 ./java_test.sh"; - //cmd = "java " + filename_test; break; } @@ -91,15 +89,6 @@ public class DockerCompilation { file = new File(filename_test); file.delete(); - switch (input.get("language").toString()){ - case "java": - file = new File("share_docker_file/Main.class"); - file.delete(); - file = new File("share_docker_file/kata.class"); - file.delete(); - break; - } - return json; } } diff --git a/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class b/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class index 994cf1cca332b9d916993ed58361757ca7d99761..6f7d0b292ea90673daa6db85c46c39b053bcc3a0 100644 Binary files a/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class and b/tests/serveur_compilation/serveur_compilation/target/classes/DockerCompilation.class differ