X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=dmaap-adaptor-java%2Fsrc%2Fmain%2Fjava%2Forg%2Foran%2Fdmaapadapter%2Frepository%2FJob.java;h=5f7521c37fabfb6af267d7c1a8043292913f5995;hb=f07ca52477eb610cf49c13b2d34f7e2c2eab3f74;hp=0da94a62cb6f47bb5a05b5a3e278d1a4de5961aa;hpb=960e66a1728c1c332f6b74320bbd086a442ba5ea;p=nonrtric.git diff --git a/dmaap-adaptor-java/src/main/java/org/oran/dmaapadapter/repository/Job.java b/dmaap-adaptor-java/src/main/java/org/oran/dmaapadapter/repository/Job.java index 0da94a62..5f7521c3 100644 --- a/dmaap-adaptor-java/src/main/java/org/oran/dmaapadapter/repository/Job.java +++ b/dmaap-adaptor-java/src/main/java/org/oran/dmaapadapter/repository/Job.java @@ -20,10 +20,58 @@ package org.oran.dmaapadapter.repository; +import java.time.Duration; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import lombok.Getter; +import org.immutables.gson.Gson; +import org.oran.dmaapadapter.clients.AsyncRestClient; + public class Job { + @Gson.TypeAdapters + public static class Parameters { + @Getter + private String filter; + @Getter + private BufferTimeout bufferTimeout; + + private int maxConcurrency; + + public Parameters() {} + + public Parameters(String filter, BufferTimeout bufferTimeout, int maxConcurrency) { + this.filter = filter; + this.bufferTimeout = bufferTimeout; + this.maxConcurrency = maxConcurrency; + } + + public int getMaxConcurrency() { + return maxConcurrency == 0 ? 1 : maxConcurrency; + } + } + + @Gson.TypeAdapters + public static class BufferTimeout { + public BufferTimeout(int maxSize, long maxTimeMiliseconds) { + this.maxSize = maxSize; + this.maxTimeMiliseconds = maxTimeMiliseconds; + } + + public BufferTimeout() {} + + @Getter + private int maxSize; + + private long maxTimeMiliseconds; + + public Duration getMaxTime() { + return Duration.ofMillis(maxTimeMiliseconds); + } + } + @Getter private final String id; @@ -36,15 +84,44 @@ public class Job { @Getter private final String owner; + @Getter + private final Parameters parameters; + @Getter private final String lastUpdated; - public Job(String id, String callbackUrl, InfoType type, String owner, String lastUpdated) { + private final Pattern jobDataFilter; + + @Getter + private final AsyncRestClient consumerRestClient; + + public Job(String id, String callbackUrl, InfoType type, String owner, String lastUpdated, Parameters parameters, + AsyncRestClient consumerRestClient) { this.id = id; this.callbackUrl = callbackUrl; this.type = type; this.owner = owner; this.lastUpdated = lastUpdated; + this.parameters = parameters; + if (parameters != null && parameters.filter != null) { + jobDataFilter = Pattern.compile(parameters.filter); + } else { + jobDataFilter = null; + } + this.consumerRestClient = consumerRestClient; + } + + public boolean isFilterMatch(String data) { + if (jobDataFilter == null) { + return true; + } + Matcher matcher = jobDataFilter.matcher(data); + return matcher.find(); + } + + public boolean isBuffered() { + return parameters != null && parameters.bufferTimeout != null && parameters.bufferTimeout.maxSize > 0 + && parameters.bufferTimeout.maxTimeMiliseconds > 0; } }