From 546b23c57a1f6efcab3db86ac1ce306ed7165d1a Mon Sep 17 00:00:00 2001 From: Silvan Heller Date: Mon, 5 Jun 2023 15:33:31 +0200 Subject: [PATCH] first cleanup --- .../AbstractFeatureClientWrapper.java | 3 ++- .../core/features/ExternalTextFeature.java | 19 ++++++++++++++++--- .../core/features/SimpleFESWrapper.java | 9 ++++----- .../{features => util/web}/FeatureClient.java | 6 +++--- 4 files changed, 25 insertions(+), 12 deletions(-) rename cineast-core/src/main/java/org/vitrivr/cineast/core/{features => util/web}/FeatureClient.java (89%) diff --git a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/AbstractFeatureClientWrapper.java b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/AbstractFeatureClientWrapper.java index 071f8f69d..9ac2ccf53 100644 --- a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/AbstractFeatureClientWrapper.java +++ b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/AbstractFeatureClientWrapper.java @@ -8,6 +8,7 @@ import java.util.Map; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.vitrivr.cineast.core.util.web.FeatureClient; public abstract class AbstractFeatureClientWrapper { protected final FeatureClient client; @@ -18,7 +19,7 @@ protected AbstractFeatureClientWrapper(FeatureClient client) { private static FeatureClient buildFeatureClient(Map properties){ if(!properties.containsKey("endpoint")){ - throw new IllegalStateException("No endpoint specified for external client"); //throw better exception + throw new IllegalArgumentException("No endpoint specified for external client"); //throw better exception } String endpoint = properties.get("endpoint"); return new FeatureClient(endpoint); diff --git a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/ExternalTextFeature.java b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/ExternalTextFeature.java index 1f05f9e07..a020c263c 100644 --- a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/ExternalTextFeature.java +++ b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/ExternalTextFeature.java @@ -6,23 +6,36 @@ import org.apache.logging.log4j.Logger; import org.vitrivr.cineast.core.data.entities.SimpleFulltextFeatureDescriptor; import org.vitrivr.cineast.core.data.entities.SimplePrimitiveTypeProviderFeatureDescriptor; +import org.vitrivr.cineast.core.data.frames.VideoFrame; import org.vitrivr.cineast.core.data.segments.SegmentContainer; import org.vitrivr.cineast.core.features.abstracts.AbstractTextRetriever; +import org.vitrivr.cineast.core.util.CineastConstants; public class ExternalTextFeature extends AbstractTextRetriever { + public static final String DEFAULT_TABLE_NAME = "features_externalText"; + final AbstractFeatureClientWrapper client; + + public ExternalTextFeature() { + super(DEFAULT_TABLE_NAME); + throw new IllegalArgumentException("no properties specified"); + } + public ExternalTextFeature(Map properties) throws Exception { - super("externalText", properties); // get or default tablenamekey (oder so) + super(properties.getOrDefault(CineastConstants.ENTITY_NAME_KEY, DEFAULT_TABLE_NAME), properties); this.client = AbstractFeatureClientWrapper.build(properties); } private static final Logger LOGGER = LogManager.getLogger(); @Override - public void processSegment(SegmentContainer sc){ - BufferedImage img = sc.getMostRepresentativeFrame().getImage().getBufferedImage(); + public void processSegment(SegmentContainer sc) { + if (sc.getMostRepresentativeFrame() == null || sc.getMostRepresentativeFrame() == VideoFrame.EMPTY_VIDEO_FRAME) { + return; + } try { + BufferedImage img = sc.getMostRepresentativeFrame().getImage().getBufferedImage(); String feature = client.extractTextFromImage(img); var descriptor = new SimpleFulltextFeatureDescriptor(sc.getId(), feature); this.writer.write(descriptor); diff --git a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/SimpleFESWrapper.java b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/SimpleFESWrapper.java index 808c6e4d1..dc08ef66e 100644 --- a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/SimpleFESWrapper.java +++ b/cineast-core/src/main/java/org/vitrivr/cineast/core/features/SimpleFESWrapper.java @@ -3,17 +3,16 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.json.JsonMapper; import com.fasterxml.jackson.databind.node.ObjectNode; -import com.google.gson.Gson; import java.awt.image.BufferedImage; import java.io.IOException; -import java.util.HashMap; -import java.util.Map; +import org.vitrivr.cineast.core.util.web.FeatureClient; import org.vitrivr.cineast.core.util.web.ImageParser; -public class SimpleFESWrapper extends AbstractFeatureClientWrapper{ +public class SimpleFESWrapper extends AbstractFeatureClientWrapper { private final JsonMapper mapper = new JsonMapper(); private final JsonNode config; + public SimpleFESWrapper(FeatureClient client, JsonNode config) throws Exception { super(client); this.config = config; @@ -42,7 +41,7 @@ public String extractTextFromImage(BufferedImage bufImg) throws IOException, Int // String body = gson.toJson(map); String responseBody = this.client.getResponse(requestBody); - return mapper.readValue(responseBody,String[].class)[0]; // change this + return mapper.readValue(responseBody, String[].class)[0]; // change this } @Override diff --git a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/FeatureClient.java b/cineast-core/src/main/java/org/vitrivr/cineast/core/util/web/FeatureClient.java similarity index 89% rename from cineast-core/src/main/java/org/vitrivr/cineast/core/features/FeatureClient.java rename to cineast-core/src/main/java/org/vitrivr/cineast/core/util/web/FeatureClient.java index fcdbeb7f9..0dc630171 100644 --- a/cineast-core/src/main/java/org/vitrivr/cineast/core/features/FeatureClient.java +++ b/cineast-core/src/main/java/org/vitrivr/cineast/core/util/web/FeatureClient.java @@ -1,4 +1,4 @@ -package org.vitrivr.cineast.core.features; +package org.vitrivr.cineast.core.util.web; import java.io.IOException; import java.net.URI; @@ -9,9 +9,9 @@ public class FeatureClient { - private String endpoint; + private final String endpoint; - public FeatureClient(String endpoint){ + public FeatureClient(String endpoint) { this.endpoint = endpoint; }