diff options
Diffstat (limited to 'datacollector/src/main/java/org/onap/rapp/datacollector/service/ParserFactory.java')
-rw-r--r-- | datacollector/src/main/java/org/onap/rapp/datacollector/service/ParserFactory.java | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/datacollector/src/main/java/org/onap/rapp/datacollector/service/ParserFactory.java b/datacollector/src/main/java/org/onap/rapp/datacollector/service/ParserFactory.java new file mode 100644 index 0000000..77b3877 --- /dev/null +++ b/datacollector/src/main/java/org/onap/rapp/datacollector/service/ParserFactory.java @@ -0,0 +1,43 @@ +package org.onap.rapp.datacollector.service; + +import java.util.List; + +import org.onap.rapp.datacollector.entity.ves.Event; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import com.google.gson.JsonObject; +import com.google.gson.JsonParseException; + +/** + * Factory which decided what parser to use to deserialize json event coming from PM Mapper Supported are FileReadyEvent and VES event + */ +@Service +public class ParserFactory extends ParserAbstractClass { + + private static final Logger logger = LoggerFactory.getLogger(ParserFactory.class); + private final VesParserImpl vesParser; + private final FileReadyParserImpl fileReadyParser; + + public ParserFactory(VesParserImpl vesParser, FileReadyParserImpl fileReadyParser) { + this.vesParser = vesParser; + this.fileReadyParser = fileReadyParser; + } + + public List<Event> getParsedEvents(String eventString) { + JsonObject json = gson.fromJson(eventString, JsonObject.class); + if (isFileReadyEvent(json)) { + return fileReadyParser.parse(eventString); + } else if (isVesEvent(json)) { + return vesParser.parse(eventString); + } else { + logger.error("Not supported event structure {}", eventString); + throw new JsonParseException("Not supported event structure"); + } + } + + private final Gson gson = new GsonBuilder().create(); +} |