converter/app/converterregistry.service.ts

48 lines
1.6 KiB
TypeScript

import {Injectable} from "@angular/core";
import {Converter} from "./converter/converter";
import {Base64Encoder} from "./converter/base64encoder";
import {Base64Decoder} from "./converter/base64decoder";
import {URIEncoder} from "./converter/uriencoder";
import {URIDecoder} from "./converter/uridecoder";
import {URIComponentEncoder} from "./converter/uricomponentencoder";
import {URIComponentDecoder} from "./converter/uricomponentdecoder";
@Injectable()
export class ConverterregistryService {
private converters:Converter[] = [];
constructor() {
this.init();
}
public getAllConverters():Converter[] {
return this.converters;
}
public getConverter(id:string):Converter {
for (let i = 0; i < this.converters.length; i++) {
if (this.converters[i].getId() == id) {
return this.converters[i];
}
}
return undefined;
}
private init():void {
this.registerConverter(new Base64Encoder());
this.registerConverter(new Base64Decoder());
this.registerConverter(new URIEncoder());
this.registerConverter(new URIDecoder());
this.registerConverter(new URIComponentEncoder());
this.registerConverter(new URIComponentDecoder());
}
private registerConverter(converter:Converter):void {
this.converters.forEach((c:Converter) => {
if (c.getId() == converter.getId()) {
throw new Error("Converter-ID " + converter.getId() + " is already registered!");
}
});
this.converters.push(converter);
}
}