@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
43 lines (42 loc) • 1.58 kB
JavaScript
import GirafeSingleton from '../base/GirafeSingleton';
import LayerWms from '../models/layers/layerwms';
export default class VendorSpecificOgcServerManager extends GirafeSingleton {
constructor() {
super(...arguments);
Object.defineProperty(this, "_clientClasses", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
Object.defineProperty(this, "_clients", {
enumerable: true,
configurable: true,
writable: true,
value: new Map()
});
}
createClient(clientClass, ogcServer) {
return new clientClass(ogcServer, {});
}
// Register a client with an identifier
registerClientClass(type, clientClass) {
this._clientClasses.set(type, clientClass);
}
getClient(object) {
const ogcServer = object instanceof LayerWms ? object.ogcServer : object;
const type = ogcServer.type;
const clientId = this.getClientId(ogcServer);
let client = this._clients.get(clientId);
if (!client) {
let clientClass = this._clientClasses.get(type);
if (!clientClass) {
console.info(`Client not found for ogcServer with type: ${type}. Using default client. ogcServer: ${ogcServer}. `);
clientClass = this._clientClasses.get('default');
}
client = this.createClient(clientClass, ogcServer);
this._clients.set(clientId, client);
}
return client;
}
}