File tree Expand file tree Collapse file tree
src/main/java/de/fraunhofer/iosb/ilt/frostserver/model
ModelLoader/src/main/java/de/fraunhofer/iosb/ilt/frostserver/plugin/modelloader Expand file tree Collapse file tree Original file line number Diff line number Diff line change 3838 <groupId >de.fraunhofer.iosb.ilt</groupId >
3939 <artifactId >Configurable</artifactId >
4040 </dependency >
41+ <dependency >
42+ <groupId >de.fraunhofer.iosb.ilt</groupId >
43+ <artifactId >Settings</artifactId >
44+ </dependency >
4145 <dependency >
4246 <groupId >de.grundid.opendatalab</groupId >
4347 <artifactId >geojson-jackson</artifactId >
Original file line number Diff line number Diff line change 1919
2020import com .fasterxml .jackson .annotation .JsonTypeInfo ;
2121import de .fraunhofer .iosb .ilt .frostserver .util .exception .IncompleteEntityException ;
22+ import de .fraunhofer .iosb .ilt .settings .Settings ;
2223
2324/**
2425 * A validator that checks if an Entity has no missing properties.
2526 */
2627@ JsonTypeInfo (use = JsonTypeInfo .Id .CLASS )
2728public interface EntityValidator {
2829
30+ public default void init (Settings settings ) {
31+ // Does nothing by default.
32+ }
33+
2934 /**
3035 * Check if all required properties are non-null on the given Entity.
3136 *
Original file line number Diff line number Diff line change 3333import de .fraunhofer .iosb .ilt .frostserver .query .OrderBy ;
3434import de .fraunhofer .iosb .ilt .frostserver .query .expression .Path ;
3535import de .fraunhofer .iosb .ilt .frostserver .util .StringHelper ;
36+ import de .fraunhofer .iosb .ilt .settings .Settings ;
3637import java .util .ArrayList ;
3738import java .util .List ;
3839import org .slf4j .Logger ;
@@ -157,6 +158,13 @@ public void init() {
157158 }
158159
159160 public EntityType getEntityType (ModelRegistry modelRegistry ) {
161+ if (entityType == null ) {
162+ throw new IllegalStateException ("EntityType " + name + " not initialised!" );
163+ }
164+ return entityType ;
165+ }
166+
167+ public EntityType getEntityType (ModelRegistry modelRegistry , Settings settings ) {
160168 if (entityType == null ) {
161169 entityType = modelRegistry .getEntityTypeForName (name , true );
162170 if (entityType == null ) {
@@ -165,7 +173,7 @@ public EntityType getEntityType(ModelRegistry modelRegistry) {
165173 entityType .setAdminOnly (adminOnly );
166174 }
167175 if (validators != null ) {
168- validators .createValidators (modelRegistry , entityType );
176+ validators .createValidators (modelRegistry , entityType , settings . getSubSettings ( name + '.' ) );
169177 }
170178 entityType .addAnnotations (annotations );
171179 }
Original file line number Diff line number Diff line change 2424import de .fraunhofer .iosb .ilt .configurable .editor .EditorList ;
2525import de .fraunhofer .iosb .ilt .configurable .editor .EditorString ;
2626import de .fraunhofer .iosb .ilt .frostserver .model .ModelRegistry ;
27+ import de .fraunhofer .iosb .ilt .settings .Settings ;
2728import java .util .ArrayList ;
2829import java .util .List ;
2930
@@ -66,9 +67,9 @@ public void registerPropertyTypes(ModelRegistry modelRegistry) {
6667 }
6768 }
6869
69- public void registerEntityTypes (ModelRegistry modelRegistry ) {
70+ public void registerEntityTypes (ModelRegistry modelRegistry , Settings settings ) {
7071 for (DefEntityType defType : entityTypes ) {
71- modelRegistry .registerEntityType (defType .getEntityType (modelRegistry ));
72+ modelRegistry .registerEntityType (defType .getEntityType (modelRegistry , settings ));
7273 }
7374 }
7475
Original file line number Diff line number Diff line change 2626import de .fraunhofer .iosb .ilt .frostserver .model .EntityType ;
2727import de .fraunhofer .iosb .ilt .frostserver .model .ModelRegistry ;
2828import de .fraunhofer .iosb .ilt .frostserver .model .core .EntityValidator ;
29+ import de .fraunhofer .iosb .ilt .settings .Settings ;
2930import java .util .ArrayList ;
3031import java .util .List ;
3132
@@ -53,13 +54,17 @@ public class DefValidator {
5354 *
5455 * @param modelRegistry The model to modify.
5556 * @param entityType The entity type to create the validator for.
57+ * @param settings The settings object used to load settings for the
58+ * validators.
5659 */
57- public void createValidators (ModelRegistry modelRegistry , EntityType entityType ) {
60+ public void createValidators (ModelRegistry modelRegistry , EntityType entityType , Settings settings ) {
5861 for (var namedValidator : getCreateValidators ()) {
5962 entityType .addCreateValidator (namedValidator .name , namedValidator .validator );
63+ namedValidator .validator .init (settings .getSubSettings (namedValidator .name + '.' ));
6064 }
6165 for (var namedValidator : getUpdateValidators ()) {
6266 entityType .addUpdateValidator (namedValidator .name , namedValidator .validator );
67+ namedValidator .validator .init (settings .getSubSettings (namedValidator .name + '.' ));
6368 }
6469 }
6570
Original file line number Diff line number Diff line change 4444 <artifactId >FROST-Server.Util</artifactId >
4545 <version >${project.version} </version >
4646 </dependency >
47+ <dependency >
48+ <groupId >de.fraunhofer.iosb.ilt</groupId >
49+ <artifactId >Settings</artifactId >
50+ </dependency >
4751 <dependency >
4852 <groupId >org.junit.jupiter</groupId >
4953 <artifactId >junit-jupiter</artifactId >
Original file line number Diff line number Diff line change 6767 */
6868public class PluginModelLoader implements PluginRootDocument , PluginModel , LiquibaseUser {
6969
70+ public static final String PREFIX_DATA_MODEL = "dataModel." ;
7071 private static final Logger LOGGER = LoggerFactory .getLogger (PluginModelLoader .class .getName ());
7172
7273 private CoreSettings settings ;
@@ -329,7 +330,8 @@ public void registerEntityTypes() {
329330
330331 ModelRegistry modelRegistry = settings .getModelRegistry ();
331332 for (DefModel modelDefinition : modelDefinitions ) {
332- modelDefinition .registerEntityTypes (modelRegistry );
333+ final Settings dmSettings = settings .getSettings ().getSubSettings (PREFIX_DATA_MODEL );
334+ modelDefinition .registerEntityTypes (modelRegistry , dmSettings );
333335 }
334336 }
335337
Original file line number Diff line number Diff line change 133133 <version .postgis>2025.1.1</version .postgis>
134134 <version .postgres>42.7.8</version .postgres>
135135 <version .prometheus>1.4.3</version .prometheus>
136- <version .settings>1.1 </version .settings>
136+ <version .settings>1.2 </version .settings>
137137 <version .slf4j-api>2.0.17</version .slf4j-api>
138138 <version .testcontainers>2.0.3</version .testcontainers>
139139 <version .testcontainers-keycloak>4.1.0</version .testcontainers-keycloak>
You can’t perform that action at this time.
0 commit comments