aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java46
1 files changed, 16 insertions, 30 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
index 623af38..7211f6d 100644
--- a/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
+++ b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java
@@ -3,23 +3,23 @@ package at.gv.egiz.moazs.preprocess;
import at.gv.zustellung.app2mzs.xsd.ConfigType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType;
import at.gv.zustellung.app2mzs.xsd.DeliveryRequestType.DeliveryRequestTypeBuilder;
-import at.gv.zustellung.app2mzs.xsd.ServerType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import java.util.Map;
-import static at.gv.zustellung.app2mzs.xsd.ConfigType.configTypeBuilder;
-import static at.gv.zustellung.app2mzs.xsd.ServerType.serverTypeBuilder;
+import static at.gv.egiz.moazs.util.NullCoalesce.coalesce;
@Component
public class DeliveryRequestAugmenter {
- private final ConfigType defaultMzsConfig;
+ private final ConfigProfileMerger merger;
+ private final Map<String, ConfigType> configs;
@Autowired
- public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs) {
- this.defaultMzsConfig = deliveryRequestConfigs.get("default");
+ public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs, ConfigProfileMerger merger) {
+ this.configs = deliveryRequestConfigs;
+ this.merger = merger;
}
/**
@@ -30,40 +30,26 @@ public class DeliveryRequestAugmenter {
*/
public DeliveryRequestType augment(DeliveryRequestType request) {
- var config = merge(request.getConfig(), defaultMzsConfig);
+ var requestConfig = request.getConfig();
+
+ var fallbackConfig = determineProfileFromProfileId(requestConfig);
+
+ var config = merger.merge(requestConfig, fallbackConfig);
return new DeliveryRequestTypeBuilder(request)
.withConfig(config)
.build();
}
- private ConfigType merge(ConfigType primary, ConfigType fallback) {
-
- var builder = configTypeBuilder(fallback);
-
- if(primary != null) {
-
- if(primary.getServer() != null) {
- builder.withServer(merge(primary.getServer(), fallback.getServer()));
- }
-
- if(primary.isPerformQueryPersonRequest() != null) {
- builder.withPerformQueryPersonRequest(primary.isPerformQueryPersonRequest());
- }
+ private ConfigType determineProfileFromProfileId(ConfigType requestConfig) {
+ if (requestConfig == null || requestConfig.getProfileID() == null) {
+ return configs.get("default");
}
- return builder.build();
+ var id = requestConfig.getProfileID();
+ return coalesce(configs.get(id), configs.get("default")).get();
}
- private ServerType merge(ServerType primary, ServerType fallback) {
-
- var builder = serverTypeBuilder(fallback);
-
- if (primary.getX509() != null) builder.withX509 (primary.getX509() );
- if (primary.getZUSEUrlID() != null) builder.withZUSEUrlID(primary.getZUSEUrlID());
-
- return builder.build();
- }
}