generator-pyhipster
Version:
Python (Flask) + Angular/React/Vue in one handy generator
113 lines (97 loc) • 3.23 kB
JavaScript
/**
* Copyright 2013-2022 the original author or authors from the JHipster project.
*
* This file is part of the JHipster project, see https://www.jhipster.tech/
* for more information.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
const { createApplicationConfigurationFromObject } = require('./jdl-application-configuration-factory');
const JDLApplicationEntities = require('./jdl-application-entities');
const JDLOptions = require('./jdl-options');
module.exports = class JDLApplication {
constructor({ config = {}, entityNames = [] } = {}) {
this.config = createApplicationConfigurationFromObject(config);
this.entityNames = new JDLApplicationEntities(entityNames);
this.options = new JDLOptions();
}
setConfigurationOption(option) {
if (!option) {
throw new Error('An option has to be passed to set an option.');
}
this.config.setOption(option);
}
hasConfigurationOption(optionName) {
return this.config.hasOption(optionName);
}
getConfigurationOptionValue(optionName) {
if (!optionName) {
throw new Error('An option name has to be passed to get a value.');
}
if (!this.config.hasOption(optionName)) {
return undefined;
}
const option = this.config.getOption(optionName);
return option.getValue();
}
forEachConfigurationOption(passedFunction) {
this.config.forEachOption(passedFunction);
}
addEntityName(entityName) {
if (!entityName) {
throw new Error('An entity name has to be passed so as to be added to the application.');
}
this.entityNames.add(entityName);
}
addEntityNames(entityNames = []) {
this.entityNames.addEntityNames(entityNames);
}
getEntityNames() {
return this.entityNames.toArray();
}
hasEntityName(entityName) {
if (!entityName) {
return false;
}
return this.entityNames.has(entityName);
}
forEachEntityName(passedFunction) {
this.entityNames.forEach(passedFunction);
}
addOption(jdlOption) {
if (!jdlOption) {
throw new Error("Can't add a nil option.");
}
this.options.addOption(jdlOption);
}
forEachOption(passedFunction) {
if (!passedFunction) {
return;
}
this.options.forEach(passedFunction);
}
getOptionQuantity() {
return this.options.size();
}
toString() {
let stringifiedApplication = `application {\n${this.config.toString(2)}\n`;
if (this.entityNames.size() !== 0) {
stringifiedApplication += `\n${this.entityNames.toString(2)}\n`;
}
if (this.options.size() !== 0) {
stringifiedApplication += `\n${this.options.toString(2)}\n`;
}
stringifiedApplication += '}';
return stringifiedApplication;
}
};