aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java b/src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java
new file mode 100644
index 0000000..accae43
--- /dev/null
+++ b/src/main/java/at/gv/egiz/moazs/RedisDeliveryRepository.java
@@ -0,0 +1,61 @@
+package at.gv.egiz.moazs;
+
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.DeliveryRequestType;
+import at.gv.e_government.reference.namespace.zustellung.mzs.app2mzs_.ObjectFactory;
+import org.apache.tools.ant.filters.StringInputStream;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Profile;
+import org.springframework.data.redis.core.HashOperations;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.stereotype.Repository;
+
+import javax.xml.bind.JAXBElement;
+import java.util.Optional;
+
+@Repository
+@Profile("cluster")
+public class RedisDeliveryRepository implements DeliveryRepository {
+
+ private static final Logger logger = LoggerFactory.getLogger(RedisDeliveryRepository.class);
+
+ private static final String KEY = "MZS_DELIVERY_REQUEST";
+
+ private final RedisTemplate<String, Object> redisTemplate;
+ private final Marshaller marshaller;
+ private final HashOperations<String, String, String> hashOperations;
+ private final ObjectFactory factory = new ObjectFactory();
+
+ @Autowired
+ public RedisDeliveryRepository(RedisTemplate<String, Object> redisTemplate, Marshaller marshaller){
+ logger.info("RedisDeliveryRepository()");
+
+ this.redisTemplate = redisTemplate;
+ this.hashOperations = redisTemplate.opsForHash();
+ this.marshaller = marshaller;
+ }
+
+ @Override
+ public void add(DeliveryRequestType request) {
+ var hashKey = request.getMetaData().getAppDeliveryID();
+ var serializedRequest = marshaller.marshallXml(factory.createDeliveryRequest(request));
+
+ logger.info("Save DeliveryRequest with AppDeliveryId = {} to redis.", hashKey);
+ hashOperations.put(KEY, hashKey, serializedRequest);
+ }
+
+ @Override
+ public Optional<DeliveryRequestType> getDeliveryRequest(String appDeliveryID) {
+ var serializedRequest = (String) hashOperations.get(KEY, appDeliveryID);
+
+ if (serializedRequest == null) {
+ return Optional.empty();
+ }
+
+ var stream = new StringInputStream(serializedRequest);
+ var request = (JAXBElement<DeliveryRequestType>) marshaller.unmarshallXml(stream);
+ return Optional.of(request.getValue());
+ }
+
+}