Skip to contentMethod: getCliParams()
1: /*
2: * JOPA
3: * Copyright (C) 2023 Czech Technical University in Prague
4: *
5: * This library is free software; you can redistribute it and/or
6: * modify it under the terms of the GNU Lesser General Public
7: * License as published by the Free Software Foundation; either
8: * version 3.0 of the License, or (at your option) any later version.
9: *
10: * This library is distributed in the hope that it will be useful,
11: * but WITHOUT ANY WARRANTY; without even the implied warranty of
12: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13: * Lesser General Public License for more details.
14: *
15: * You should have received a copy of the GNU Lesser General Public
16: * License along with this library.
17: */
18: package cz.cvut.kbss.jopa.owl2java.config;
19:
20: import cz.cvut.kbss.jopa.owl2java.cli.CliParams;
21: import cz.cvut.kbss.jopa.owl2java.cli.Option;
22: import cz.cvut.kbss.jopa.owl2java.cli.PropertiesType;
23:
24: public class TransformationConfiguration {
25:
26: private final String context;
27:
28: private final String packageName;
29:
30: private final String targetDir;
31:
32: private final boolean generateOwlapiIris;
33:
34: private final boolean generateJavadoc;
35:
36: private final boolean preferMultilingualStrings;
37:
38: private final PropertiesType propertiesType;
39:
40: private final boolean generateAnnotationFields;
41:
42: private final boolean generateThing;
43:
44: private final CliParams cliParams;
45:
46: private TransformationConfiguration(TransformationConfigurationBuilder builder) {
47: this.context = builder.context;
48: this.packageName = builder.packageName;
49: this.targetDir = builder.targetDir;
50: this.generateOwlapiIris = builder.owlapiIris;
51: this.generateJavadoc = builder.generateJavadoc;
52: this.preferMultilingualStrings = builder.preferMultilingualStrings;
53: this.propertiesType = builder.propertiesType;
54: this.generateAnnotationFields = builder.generateAnnotationFields;
55: this.generateThing = builder.generateThing;
56: this.cliParams = CliParams.empty();
57: }
58:
59: private TransformationConfiguration(CliParams cliParams) {
60: this.cliParams = cliParams;
61: this.context = cliParams.is(Option.WHOLE_ONTOLOGY_AS_IC.arg) ? null : cliParams.valueOf(Option.CONTEXT.arg)
62: .toString();
63: this.packageName = cliParams.valueOf(Option.PACKAGE.arg).toString();
64: this.targetDir = cliParams.valueOf(Option.TARGET_DIR.arg).toString();
65: this.generateOwlapiIris = cliParams.is(Option.WITH_IRIS.arg, Defaults.WITH_IRIS);
66: this.generateJavadoc = cliParams.is(Option.GENERATE_JAVADOC_FROM_COMMENT.arg, Defaults.GENERATE_JAVADOC_FROM_COMMENT);
67: this.preferMultilingualStrings = cliParams.is(Option.PREFER_MULTILINGUAL_STRINGS.arg, Defaults.PREFER_MULTILINGUAL_STRINGS);
68: this.propertiesType = PropertiesType.fromParam(cliParams.valueOf(Option.PROPERTIES_TYPE.arg));
69: this.generateAnnotationFields = cliParams.is(Option.GENERATE_ANNOTATION_FIELDS.arg, Defaults.GENERATE_ANNOTATION_FIELDS);
70: this.generateThing = cliParams.is(Option.GENERATE_THING.arg, Defaults.GENERATE_THING);
71: }
72:
73: public String getContext() {
74: return context;
75: }
76:
77: public String getPackageName() {
78: return packageName;
79: }
80:
81: public String getTargetDir() {
82: return targetDir;
83: }
84:
85: public boolean areAllAxiomsIntegrityConstraints() {
86: return context == null;
87: }
88:
89: public boolean shouldGenerateOwlapiIris() {
90: return generateOwlapiIris;
91: }
92:
93: public boolean shouldGenerateJavadoc() {
94: return generateJavadoc;
95: }
96:
97: public boolean shouldPreferMultilingualStrings() {
98: return preferMultilingualStrings;
99: }
100:
101: public PropertiesType getPropertiesType() {
102: return propertiesType;
103: }
104:
105: public boolean shouldGenerateAnnotationFields() {
106: return generateAnnotationFields;
107: }
108:
109: public boolean shouldGenerateThing() {
110: return generateThing;
111: }
112:
113: public CliParams getCliParams() {
114: return cliParams;
115: }
116:
117: public static TransformationConfiguration config(CliParams cliParams) {
118: return new TransformationConfiguration(cliParams);
119: }
120:
121: public static TransformationConfigurationBuilder builder() {
122: return new TransformationConfigurationBuilder();
123: }
124:
125: public static class TransformationConfigurationBuilder {
126: private String context;
127: private String packageName = Defaults.PACKAGE;
128: private String targetDir = Defaults.TARGET_DIR;
129: private PropertiesType propertiesType = PropertiesType.valueOf(Defaults.PROPERTIES_TYPE);
130: private boolean owlapiIris = Defaults.WITH_IRIS;
131: private boolean generateJavadoc = Defaults.GENERATE_JAVADOC_FROM_COMMENT;
132: private boolean preferMultilingualStrings = Defaults.PREFER_MULTILINGUAL_STRINGS;
133: private boolean generateAnnotationFields = Defaults.GENERATE_ANNOTATION_FIELDS;
134: private boolean generateThing = Defaults.GENERATE_THING;
135:
136: public TransformationConfigurationBuilder context(String context) {
137: this.context = context;
138: return this;
139: }
140:
141: public TransformationConfigurationBuilder packageName(String packageName) {
142: this.packageName = packageName;
143: return this;
144: }
145:
146: public TransformationConfigurationBuilder targetDir(String targetDir) {
147: this.targetDir = targetDir;
148: return this;
149: }
150:
151: public TransformationConfigurationBuilder addOwlapiIris(boolean add) {
152: this.owlapiIris = add;
153: return this;
154: }
155:
156: public TransformationConfigurationBuilder generateJavadoc(boolean javadoc) {
157: this.generateJavadoc = javadoc;
158: return this;
159: }
160:
161: public TransformationConfigurationBuilder preferMultilingualStrings(boolean preferMultilingualStrings) {
162: this.preferMultilingualStrings = preferMultilingualStrings;
163: return this;
164: }
165:
166: public TransformationConfigurationBuilder propertiesType(PropertiesType propertiesType) {
167: this.propertiesType = propertiesType;
168: return this;
169: }
170:
171: public TransformationConfigurationBuilder generateAnnotationFields(boolean generateAnnotationFields) {
172: this.generateAnnotationFields = generateAnnotationFields;
173: return this;
174: }
175:
176: public TransformationConfigurationBuilder generateThing(boolean generateThing) {
177: this.generateThing = generateThing;
178: return this;
179: }
180:
181: public TransformationConfiguration build() {
182: return new TransformationConfiguration(this);
183: }
184: }
185: }