ontimize-web-ngx
Version:
Ontimize Web framework using Angular 15
81 lines • 12.6 kB
JavaScript
import { AppConfig } from '../config/app-config';
import { JSONAPIService } from '../services/jsonapi/jsonapi.service';
import { OntimizeEEService } from '../services/ontimize/ontimize-ee.service';
import { OntimizeService } from '../services/ontimize/ontimize.service';
import { ServiceType } from '../types/service-type.type';
import { Util } from './util';
export class FactoryUtil {
static isJsonApiService(injector) {
const config = injector.get(AppConfig);
const serviceType = config.getConfiguration().serviceType;
return serviceType === 'JSONAPI' ||
FactoryUtil.isJSONAPISubclass(serviceType);
}
static isOntimizeEEService(injector) {
const config = injector.get(AppConfig);
const serviceType = config.getConfiguration().serviceType;
return (serviceType === 'OntimizeEE' ||
FactoryUtil.isOntimizeEESubclass(serviceType)) ||
(serviceType === 'Ontimize' ||
FactoryUtil.isOntimizeSubclass(serviceType));
}
static isOntimizeSubclass(cls) {
return typeof cls === 'function' &&
OntimizeService.prototype.isPrototypeOf(cls.prototype);
}
static isOntimizeEESubclass(cls) {
return typeof cls === 'function' &&
OntimizeEEService.prototype.isPrototypeOf(cls.prototype);
}
static isJSONAPISubclass(cls) {
return typeof cls === 'function' &&
JSONAPIService.prototype.isPrototypeOf(cls.prototype);
}
static createServiceInstanceByType(serviceType, injector) {
if (!Util.isDefined(serviceType) || ServiceType.OntimizeEE === serviceType) {
return new OntimizeEEService(injector);
}
if (ServiceType.Ontimize === serviceType) {
return new OntimizeService(injector);
}
if (ServiceType.JSONAPI === serviceType) {
return new JSONAPIService(injector);
}
return Util.createServiceInstance(serviceType, injector);
}
static getDataServiceInstance(serviceType, baseService, injector) {
if (!serviceType) {
return injector.get(baseService);
}
if (![ServiceType.Ontimize, ServiceType.OntimizeEE, ServiceType.JSONAPI].includes(serviceType)) {
return FactoryUtil.createServiceInstanceByType(injector.get(serviceType), injector);
}
return FactoryUtil.createServiceInstanceByType(serviceType, injector);
}
static configureService(configureServiceArgs) {
const baseService = configureServiceArgs.baseService;
const entity = configureServiceArgs.entity;
const service = configureServiceArgs.service;
const injector = configureServiceArgs.injector;
const config = injector.get(AppConfig);
const serviceConfiguration = config.getServiceConfiguration();
const serviceConfigurationType = serviceConfiguration[service]?.serviceType;
const serviceType = configureServiceArgs.serviceType || serviceConfigurationType;
try {
let dataService = this.getDataServiceInstance(serviceType, baseService, injector);
if (Util.isDataService(dataService)) {
const serviceCfg = dataService.getDefaultServiceConfiguration(service);
if (entity) {
serviceCfg.entity = entity;
}
dataService.configureService(serviceCfg);
}
return dataService;
}
catch (e) {
console.error(e);
return null;
}
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yeS51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvb250aW1pemUtd2ViLW5neC9zcmMvbGliL3V0aWwvZmFjdG9yeS51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDN0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRzlCLE1BQU0sT0FBTyxXQUFXO0lBR3RCLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFrQjtRQUN4QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsQ0FBQztRQUUxRCxPQUFPLFdBQVcsS0FBSyxTQUFTO1lBQzlCLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsTUFBTSxDQUFDLG1CQUFtQixDQUFDLFFBQWtCO1FBQzNDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixFQUFFLENBQUMsV0FBVyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxXQUFXLEtBQUssWUFBWTtZQUNsQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDOUMsQ0FBQyxXQUFX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QUFDLENBQUM7WUFFbEYsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxNQUFNLFVBQVUsR0FBRyxXQUFXLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3ZFLElBQUksTUFBTSxFQUFFO29CQUNWLFVBQVUsQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO2lCQUM1QjtnQkFDRCxXQUFXLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLENBQUM7YUFDMUM7WUFDRCxPQUFPLFdBQVcsQ0FBQztTQUNwQjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNqQixPQUFPLElBQUksQ0FBQztTQUNiO0lBRUgsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQXBwQ29uZmlnIH0gZnJvbSAnLi4vY29uZmlnL2FwcC1jb25maWcnO1xuaW1wb3J0IHsgSlNPTkFQSVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9qc29uYXBpL2pzb25hcGkuc2VydmljZSc7XG5pbXBvcnQgeyBPbnRpbWl6ZUVFU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL29udGltaXplL29udGltaXplLWVlLnNlcnZpY2UnO1xuaW1wb3J0IHsgT250aW1pemVTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvb250aW1pemUvb250aW1pemUuc2VydmljZSc7XG5pbXBvcnQgeyBTZXJ2aWNlVHlwZSB9IGZyb20gJy4uL3R5cGVzL3NlcnZpY2UtdHlwZS50eXBlJztcbmltcG9ydCB7IFV0aWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgT0NvbmZpZ3VyZVNlcnZpY2VBcmdzIH0gZnJvbSAnLi4vdHlwZXMvY29uZmlndXJlLXNlcnZpY2UtYXJncy50eXBlJztcblxuZXhwb3J0IGNsYXNzIEZhY3RvcnlVdGlsIHtcblxuXG4gIHN0YXRpYyBpc0pzb25BcGlTZXJ2aWNlKGluamVjdG9yOiBJbmplY3Rvcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGNvbmZpZyA9IGluamVjdG9yLmdldChBcHBDb25maWcpO1xuICAgIGNvbnN0IHNlcnZpY2VUeXBlID0gY29uZmlnLmdldENvbmZpZ3VyYXRpb24oKS5zZXJ2aWNlVHlwZTtcblxuICAgIHJldHVybiBzZXJ2aWNlVHlwZSA9PT0gJ0pTT05BUEknIHx8XG4gICAgICBGYWN0b3J5VXRpbC5pc0pTT05BUElTdWJjbGFzcyhzZXJ2aWNlVHlwZSk7XG4gIH1cblxuICBzdGF0aWMgaXNPbnRpbWl6ZUVFU2VydmljZShpbmplY3RvcjogSW5qZWN0b3IpOiBib29sZWFuIHtcbiAgICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgICBjb25zdCBzZXJ2aWNlVHlwZSA9IGNvbmZpZy5nZXRDb25maWd1cmF0aW9uKCkuc2VydmljZVR5cGU7XG4gICAgcmV0dXJuIChzZXJ2aWNlVHlwZSA9PT0gJ09udGltaXplRUUnIHx8XG4gICAgICBGYWN0b3J5VXRpbC5pc09udGltaXplRUVTdWJjbGFzcyhzZXJ2aWNlVHlwZSkpIHx8XG4gICAgICAoc2VydmljZVR5cGUgPT09ICdPbnRpbWl6ZScgfHxcbiAgICAgICAgRmFjdG9yeVV0aWwuaXNPbnRpbWl6ZVN1YmNsYXNzKHNlcnZpY2VUeXBlKSk7XG4gIH1cblxuICBzdGF0aWMgaXNPbnRpbWl6ZVN1YmNsYXNzKGNsczogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBjbHMgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIE9udGltaXplU2VydmljZS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihjbHMucHJvdG90eXBlKTtcbiAgfVxuXG4gIHN0YXRpYyBpc09udGltaXplRUVTdWJjbGFzcyhjbHM6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0eXBlb2YgY2xzID09PSAnZnVuY3Rpb24nICYmXG4gICAgICBPbnRpbWl6ZUVFU2VydmljZS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihjbHMucHJvdG90eXBlKTtcbiAgfVxuXG5cbiAgc3RhdGljIGlzSlNPTkFQSVN1YmNsYXNzKGNsczogYW55KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHR5cGVvZiBjbHMgPT09ICdmdW5jdGlvbicgJiZcbiAgICAgIEpTT05BUElTZXJ2aWNlLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGNscy5wcm90b3R5cGUpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVNlcnZpY2VJbnN0YW5jZUJ5VHlwZShzZXJ2aWNlVHlwZTogU2VydmljZVR5cGUsIGluamVjdG9yOiBJbmplY3Rvcik6IGFueSB7XG4gICAgaWYgKCFVdGlsLmlzRGVmaW5lZChzZXJ2aWNlVHlwZSkgfHwgU2VydmljZVR5cGUuT250aW1pemVFRSA9PT0gc2VydmljZVR5cGUpIHtcbiAgICAgIHJldHVybiBuZXcgT250aW1pemVFRVNlcnZpY2UoaW5qZWN0b3IpO1xuICAgIH1cbiAgICBpZiAoU2VydmljZVR5cGUuT250aW1pemUgPT09IHNlcnZpY2VUeXBlKSB7XG4gICAgICByZXR1cm4gbmV3IE9udGltaXplU2VydmljZShpbmplY3Rvcik7XG4gICAgfVxuICAgIGlmIChTZXJ2aWNlVHlwZS5KU09OQVBJID09PSBzZXJ2aWNlVHlwZSkge1xuICAgICAgcmV0dXJuIG5ldyBKU09OQVBJU2VydmljZShpbmplY3Rvcik7XG4gICAgfVxuICAgIHJldHVybiBVdGlsLmNyZWF0ZVNlcnZpY2VJbnN0YW5jZShzZXJ2aWNlVHlwZSwgaW5qZWN0b3IpO1xuXG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXREYXRhU2VydmljZUluc3RhbmNlKHNlcnZpY2VUeXBlOiBhbnksIGJhc2VTZXJ2aWNlOiBhbnksIGluamVjdG9yOiBJbmplY3Rvcik6IGFueSB7XG4gICAgaWYgKCFzZXJ2aWNlVHlwZSkge1xuICAgICAgcmV0dXJuIGluamVjdG9yLmdldDxhbnk+KGJhc2VTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBpZiAoIVtTZXJ2aWNlVHlwZS5PbnRpbWl6ZSwgU2VydmljZVR5cGUuT250aW1pemVFRSwgU2VydmljZVR5cGUuSlNPTkFQSV0uaW5jbHVkZXMoc2VydmljZVR5cGUpKSB7XG4gICAgICByZXR1cm4gRmFjdG9yeVV0aWwuY3JlYXRlU2VydmljZUluc3RhbmNlQnlUeXBlKGluamVjdG9yLmdldDxhbnk+KHNlcnZpY2VUeXBlKSwgaW5qZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBGYWN0b3J5VXRpbC5jcmVhdGVTZXJ2aWNlSW5zdGFuY2VCeVR5cGUoc2VydmljZVR5cGUsIGluamVjdG9yKTtcbiAgfVxuXG4gIHN0YXRpYyBjb25maWd1cmVTZXJ2aWNlKGNvbmZpZ3VyZVNlcnZpY2VBcmdzOiBPQ29uZmlndXJlU2VydmljZUFyZ3MpOiBhbnkge1xuICAgIGNvbnN0IGJhc2VTZXJ2aWNlID0gY29uZmlndXJlU2VydmljZUFyZ3MuYmFzZVNlcnZpY2U7XG4gICAgY29uc3QgZW50aXR5ID0gY29uZmlndXJlU2VydmljZUFyZ3MuZW50aXR5O1xuICAgIGNvbnN0IHNlcnZpY2UgPSBjb25maWd1cmVTZXJ2aWNlQXJncy5zZXJ2aWNlO1xuICAgIGNvbnN0IGluamVjdG9yID0gY29uZmlndXJlU2VydmljZUFyZ3MuaW5qZWN0b3I7XG5cbiAgICBjb25zdCBjb25maWcgPSBpbmplY3Rvci5nZXQoQXBwQ29uZmlnKTtcbiAgICBjb25zdCBzZXJ2aWNlQ29uZmlndXJhdGlvbiA9IGNvbmZpZy5nZXRTZXJ2aWNlQ29uZmlndXJhdGlvbigpO1xuICAgIGNvbnN0IHNlcnZpY2VDb25maWd1cmF0aW9uVHlwZSA9IHNlcnZpY2VDb25maWd1cmF0aW9uW3NlcnZpY2VdPy5zZXJ2aWNlVHlwZTtcbiAgICBjb25zdCBzZXJ2aWNlVHlwZSA9IGNvbmZpZ3VyZVNlcnZpY2VBcmdzLnNlcnZpY2VUeXBlIHx8IHNlcnZpY2VDb25maWd1cmF0aW9uVHlwZTtcblxuICAgIHRyeSB7XG4gICAgICBsZXQgZGF0YVNlcnZpY2UgPSB0aGlzLmdldERhdGFTZXJ2aWNlSW5zdGFuY2Uoc2VydmljZVR5cGUsIGJhc2VTZXJ2aWNlLCBpbmplY3Rvcik7XG5cbiAgICAgIGlmIChVdGlsLmlzRGF0YVNlcnZpY2UoZGF0YVNlcnZpY2UpKSB7XG4gICAgICAgIGNvbnN0IHNlcnZpY2VDZmcgPSBkYXRhU2VydmljZS5nZXREZWZhdWx0U2VydmljZUNvbmZpZ3VyYXRpb24oc2VydmljZSk7XG4gICAgICAgIGlmIChlbnRpdHkpIHtcbiAgICAgICAgICBzZXJ2aWNlQ2ZnLmVudGl0eSA9IGVudGl0eTtcbiAgICAgICAgfVxuICAgICAgICBkYXRhU2VydmljZS5jb25maWd1cmVTZXJ2aWNlKHNlcnZpY2VDZmcpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRhdGFTZXJ2aWNlO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgfVxuXG5cbn1cbiJdfQ==