From cc002bc9c821defca28c1b99726f074455ba17b3 Mon Sep 17 00:00:00 2001 From: "francois.grand" <francois.grand@irstea.fr> Date: Wed, 7 Feb 2018 16:57:47 +0100 Subject: [PATCH] =?UTF-8?q?ticket=20#36=20:=20extraction=20d'une=20classe?= =?UTF-8?q?=20abstraite=20BaseResult=20=C3=A0=20partir=20de=20Result=20et?= =?UTF-8?q?=20CalcResult?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/util/result.ts | 137 +++++++++++++++++++++++++-------------------- 1 file changed, 75 insertions(+), 62 deletions(-) diff --git a/src/util/result.ts b/src/util/result.ts index ce641349..e8cda9dd 100644 --- a/src/util/result.ts +++ b/src/util/result.ts @@ -1,38 +1,92 @@ import { cLog } from "./log"; import { Message, MessageCode, MessageSeverity } from "./message"; +export abstract class BaseResult { + /** + * Messages (erreurs, infos, ...) + */ + private _log: cLog; + + constructor() { + this._log = new cLog(); + } + + public get log() { + return this._log; + } + + /** + * ajoute un message au journal + */ + public addMessage(m: Message) { + this._log.add(m); + } + + /** + * ajoute tous les messages d'un journal au journal + */ + public addLog(l: cLog) { + this._log.addLog(l); + } + + /** + * insert un message en début de liste + */ + public insertMessage(m: Message) { + this._log.insert(m); + } + + /** + * @returns true si + */ + public get ok(): boolean { + return this.resultsOk && !this.hasErrorMessages; + } + + /** + * @returns true si tous les résultats (y compris les) sont + */ + public abstract get resultsOk(): boolean; + + /** + * @returns true si au moins un message de log comporte un code d'erreur + */ + public abstract get hasErrorMessages(): boolean; + + /** + * @param name nom du résultat complémentaire à retourner + * @returns un résultat complémentaire par son nom + */ + public abstract getExtraResult(name: string): any; +} + /** * Résultat de calcul comprenant la valeur du résultat et des calculs annexes (flag, calculs intermédiaires...) * Représente une valeur unique */ -export class Result { +export class Result extends BaseResult { /** * Valeur calculée */ private _vCalc: number; - /** - * Messages (erreurs, infos, ...) - */ - private _log: cLog; - /** * résultats complémentaires */ private _extraResults: { [key: string]: any }; constructor(v: number | Message, d: {} = undefined) { - this._log = new cLog(); + super(); if (typeof v == "number") { this._vCalc = v; const m = new Message(MessageCode.ERROR_OK); m.extraVar = d; - this._log.add(m); + this.addMessage(m); } else if (v instanceof Message) { if (d != undefined) throw new Error("appel à Result.constructor() invalide"); - this._log.add(v); + this.addMessage(v); } this._extraResults = {}; }; @@ -42,32 +96,17 @@ export class Result { get code(): MessageCode { if (this.messageCount != 1) throw new Error("appel à Result.code invalide, il n'y pas exactement un message de log"); - return this._log.messages[0].code; + return this.log.messages[0].code; } get extraVar() { if (this.messageCount != 1) throw new Error("appel à Result.extraVar invalide, il n'y pas exactement un message de log"); - return this._log.messages[0].extraVar; - } - - public addMessage(m: Message) { - this._log.add(m); - } - - /** - * insert un message en début de liste - */ - public insertMessage(m: Message) { - this._log.insert(m); - } - - public get log(): cLog { - return this._log; + return this.log.messages[0].extraVar; } private get messageCount(): number { - return this._log.messages.length; + return this.log.messages.length; } private get hasExtraResults(): boolean { @@ -79,16 +118,12 @@ export class Result { } public get hasErrorMessages(): boolean { - for (let m of this._log.messages) + for (let m of this.log.messages) if (m.code != MessageCode.ERROR_OK && m.getSeverity() == MessageSeverity.ERROR) return true; return false; } - public get ok(): boolean { - return this.resultsOk && !this.hasErrorMessages; - } - /** * résultats complémentaires */ @@ -119,13 +154,11 @@ export class Result { * Résultat global d'un calcul * Peut comporter un ou plusieurs Result. */ -export class CalcResult { - private _globalLog: cLog; - +export class CalcResult extends BaseResult { private _results: Result[]; constructor() { - this._globalLog = new cLog(); + super(); this._results = []; } @@ -140,6 +173,10 @@ export class CalcResult { this._results.push(r); } + /** + * @param name nom du résultat complémentaire + * @returns le nombre la taille d'un résultat complémentaire + */ public extraResultLength(name: string): number { const r = this.getExtraResult(name); if (r == undefined) @@ -167,24 +204,8 @@ export class CalcResult { } } - public get log() { - return this._globalLog; - } - - public addMessage(m: Message) { - this._globalLog.add(m); - } - - public addLog(l: cLog) { - this._globalLog.addLog(l); - } - - public get vCalc() { - return this.result.vCalc; - } - public get resultsOk(): boolean { - if (this._results.length == 0 && this._globalLog.messages.length == 0) + if (this._results.length == 0 && this.log.messages.length == 0) return false; for (let r of this._results) if (!r.resultsOk) @@ -193,7 +214,7 @@ export class CalcResult { } public get hasErrorMessages(): boolean { - for (let m of this._globalLog.messages) + for (let m of this.log.messages) if (m.getSeverity() == MessageSeverity.ERROR) return true; @@ -203,12 +224,4 @@ export class CalcResult { return false; } - - public get ok(): boolean { - return this.resultsOk && !this.hasErrorMessages; - } - - public get code(): MessageCode { - return this.result.code; - } } -- GitLab