Commit cc002bc9 authored by Grand Francois's avatar Grand Francois
Browse files

ticket #36 : extraction d'une classe abstraite BaseResult à partir de Result et CalcResult

Showing with 75 additions and 62 deletions
+75 -62
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;
}
}
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment