diff options
author | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 06:41:15 +0200 |
---|---|---|
committer | Christof Rabensteiner <christof.rabensteiner@iaik.tugraz.at> | 2019-05-15 06:41:15 +0200 |
commit | e70ec39488c0688d8144fa529d58d60ae9564fbd (patch) | |
tree | 07ef8e905d56b5ab2142f7a787d98317debcb38d /src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java | |
parent | 1c252d7fc336831188c628ecdd39cd1b84b0cada (diff) | |
download | moa-zs-e70ec39488c0688d8144fa529d58d60ae9564fbd.tar.gz moa-zs-e70ec39488c0688d8144fa529d58d60ae9564fbd.tar.bz2 moa-zs-e70ec39488c0688d8144fa529d58d60ae9564fbd.zip |
WIP: Generate Map of Config Profiles from Spring Environment
Augmenter
- Replace default Config Profile with map of Config Profiles. Now,
Augmenter can choose a config profile at runtime and augment it.
- Move Augmenter to sub package.
WIP
- Implement ConfigProfileGenerator, which retrieves Config profiles
from Spring Environment and returns an easy-to-use map with
profiles that is keyed with profile id's.
- Replace application.properties with application.yaml.
- Remove Augmenter test cases: They need to be adapted.
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.java | 69 |
1 files changed, 69 insertions, 0 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 new file mode 100644 index 0000000..623af38 --- /dev/null +++ b/src/main/java/at/gv/egiz/moazs/preprocess/DeliveryRequestAugmenter.java @@ -0,0 +1,69 @@ +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; + +@Component +public class DeliveryRequestAugmenter { + + private final ConfigType defaultMzsConfig; + + @Autowired + public DeliveryRequestAugmenter(Map<String, ConfigType> deliveryRequestConfigs) { + this.defaultMzsConfig = deliveryRequestConfigs.get("default"); + } + + /** + * Augments an incoming {@code request} by filling gaps with config- or default parameters. + * + * @param request + * @return augmented request + */ + public DeliveryRequestType augment(DeliveryRequestType request) { + + var config = merge(request.getConfig(), defaultMzsConfig); + + 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()); + } + + } + + return builder.build(); + + } + + 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(); + } +} |