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=b2d6339441c650962e34502e7527ca0835fa342f;hp=0da94a62cb6f47bb5a05b5a3e278d1a4de5961aa;hpb=54e5f0a956ea4a9f5a31b3b6319f8f3b2b980c91;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..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; @@ -36,15 +68,39 @@ 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; + + 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; } }