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=d1697e96b8f97b21a06f4ce14fa99b26b8498598;hb=2d522d44bf5f69b091380b57e2879d3b7139bc8f;hp=690e465b432774a1ac48cce97ddf97f49853bdc7;hpb=18fddb8fc58d52d80e06ba87f43f028d30b68302;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 690e465b..d1697e96 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,42 @@ package org.oran.dmaapadapter.repository; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + import lombok.Getter; +import org.immutables.gson.Gson; + public class Job { + @Gson.TypeAdapters + public static class Parameters { + public String filter; + public BufferTimeout bufferTimeout; + + public Parameters() { + } + + public Parameters(String filter, BufferTimeout bufferTimeout) { + this.filter = filter; + this.bufferTimeout = bufferTimeout; + } + + public static class BufferTimeout { + public BufferTimeout(int maxSize, int maxTimeMiliseconds) { + this.maxSize = maxSize; + this.maxTimeMiliseconds = maxTimeMiliseconds; + } + + public BufferTimeout() { + } + + public int maxSize; + public int maxTimeMiliseconds; + } + } + @Getter private final String id; @@ -33,10 +65,42 @@ public class Job { @Getter private final InfoType type; - public Job(String id, String callbackUrl, InfoType type) { + @Getter + private final String owner; + + @Getter + private final Parameters parameters; + + @Getter + private final String lastUpdated; + + private final Pattern jobDataFilter; + + public Job(String id, String callbackUrl, InfoType type, String owner, String lastUpdated, Parameters parameters) { 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; + } + } + + 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; } }