From 911eacc883515958cde30cb84513386dd10d4fe7 Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Sun, 19 Nov 2023 19:36:22 -0500 Subject: [PATCH 01/14] Creation of DateTimeProcessor Closes #1865 This processor parses a DateTime string. It converts the string into a ZonedDateTime variable, and places the variable in the event variable. Tests are made to ensure that the code works properly. I am still somewhat new, so any feedback is welcome. --- .../processor/datetime/DateTimeProcessor.java | 137 +++++++++++ .../datetime/TestDateTimeProcessor.java | 229 ++++++++++++++++++ 2 files changed, 366 insertions(+) create mode 100644 streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java create mode 100644 streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java new file mode 100644 index 0000000000..1ccd28dd6c --- /dev/null +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java @@ -0,0 +1,137 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.streampipes.processors.transformation.jvm.processor.datetime; + +import org.apache.streampipes.commons.exceptions.SpRuntimeException; +import org.apache.streampipes.extensions.api.pe.context.EventProcessorRuntimeContext; +import org.apache.streampipes.extensions.api.pe.routing.SpOutputCollector; +import org.apache.streampipes.model.DataProcessorType; +import org.apache.streampipes.model.graph.DataProcessorDescription; +import org.apache.streampipes.model.runtime.Event; +import org.apache.streampipes.model.schema.PropertyScope; +import org.apache.streampipes.sdk.builder.ProcessingElementBuilder; +import org.apache.streampipes.sdk.builder.StreamRequirementsBuilder; +import org.apache.streampipes.sdk.extractor.ProcessingElementParameterExtractor; +import org.apache.streampipes.sdk.helpers.EpProperties; +import org.apache.streampipes.sdk.helpers.EpRequirements; +import org.apache.streampipes.sdk.helpers.Labels; +import org.apache.streampipes.sdk.helpers.Locales; +import org.apache.streampipes.sdk.helpers.Options; +import org.apache.streampipes.sdk.helpers.OutputStrategies; +import org.apache.streampipes.sdk.utils.Assets; +import org.apache.streampipes.wrapper.params.compat.ProcessorParams; +import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.time.format.DateTimeFormatter; +import java.time.format.DateTimeParseException; +import java.util.Iterator; +import java.util.Set; + +public class DateTimeProcessor extends StreamPipesDataProcessor { + + public static final String INPUT_DATETIME_FIELD_ID = "dateTimeField"; + public static final String OUTPUT_DATETIME_RUNTIME_NAME = "dateTime"; + public static final String SELECTED_INPUT_TIMEZONE = "inputTimeZone"; + + private String[] possibleTimeZones; + private String streamInputDateTimeFieldName; + private String selectedTimeZone; + + @Override + public DataProcessorDescription declareModel() { + possibleTimeZones = getTimeZoneOptions(); + DataProcessorDescription dpd = ProcessingElementBuilder + .create("org.apache.streampipes.processors.transformation.jvm.timeoperator.datetime", 0) + .category(DataProcessorType.STRING_OPERATOR, DataProcessorType.TIME) + .withLocales(Locales.EN) + .withAssets(Assets.DOCUMENTATION, Assets.ICON) + .requiredStream(StreamRequirementsBuilder.create() + .requiredPropertyWithUnaryMapping( + EpRequirements.stringReq(), + Labels.withId(INPUT_DATETIME_FIELD_ID), + PropertyScope.NONE) + .build()) + .requiredSingleValueSelection(Labels.withId(SELECTED_INPUT_TIMEZONE), + Options.from(possibleTimeZones)) + .outputStrategy(OutputStrategies.append( + EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) + .build(); + + return dpd; + } + + @Override + public void onInvocation(ProcessorParams parameters, SpOutputCollector spOutputCollector, + EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException { + ProcessingElementParameterExtractor extractor = parameters.extractor(); + this.streamInputDateTimeFieldName = extractor.mappingPropertyValue(INPUT_DATETIME_FIELD_ID); + this.selectedTimeZone = extractor.selectedSingleValue(SELECTED_INPUT_TIMEZONE, String.class); + } + + @Override + public void onEvent(Event event, SpOutputCollector collector) { + String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName).getAsPrimitive().getAsString(); + // DateTimeFormatter dtFormatter = detectFormat(enteredInputFormat); + DateTimeFormatter dtFormatter = DateTimeFormatter.ISO_DATE_TIME; + ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); + + event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); + collector.collect(event); + } + + @Override + public void onDetach() { + + } + + private ZonedDateTime parseDateTime(String dateTimeString, DateTimeFormatter dtf) { + ZonedDateTime zdt; + try { + zdt = ZonedDateTime.parse(dateTimeString); + + } catch (DateTimeParseException e1) { + try { + LocalDateTime ldt = LocalDateTime.parse(dateTimeString, dtf); + ZoneId timeZoneId = ZoneId.of(selectedTimeZone); + zdt = ldt.atZone(timeZoneId); + } catch (DateTimeParseException e2) { + throw new RuntimeException("Could not parse DateTime String: " + dateTimeString); + } + } + return zdt; + } + + private static String[] getTimeZoneOptions() { + Set possibleZonesSet = ZoneId.getAvailableZoneIds(); + int setSize = possibleZonesSet.size(); + String[] possibleZonesArray = new String[setSize]; + Iterator possibleZonesIterator = possibleZonesSet.iterator(); + for (int i = 0; i < setSize; i++) { + if (possibleZonesIterator.hasNext()) { + possibleZonesArray[i] = possibleZonesIterator.next(); + } else { + throw new RuntimeException("Time Zone option iterator & array mismatch"); + } + } + return possibleZonesArray; + } +} diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java new file mode 100644 index 0000000000..66a6dbdca1 --- /dev/null +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java @@ -0,0 +1,229 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package org.apache.streampipes.processors.transformation.jvm.processor.datetime; + +import org.apache.streampipes.commons.exceptions.SpRuntimeException; +import org.apache.streampipes.extensions.api.pe.routing.SpOutputCollector; +import org.apache.streampipes.messaging.InternalEventProcessor; +import org.apache.streampipes.model.graph.DataProcessorDescription; +import org.apache.streampipes.model.graph.DataProcessorInvocation; +import org.apache.streampipes.model.output.PropertyRenameRule; +import org.apache.streampipes.model.runtime.Event; +import org.apache.streampipes.model.runtime.EventFactory; +import org.apache.streampipes.model.runtime.SchemaInfo; +import org.apache.streampipes.model.runtime.SourceInfo; +import org.apache.streampipes.model.staticproperty.MappingPropertyUnary; +import org.apache.streampipes.model.staticproperty.OneOfStaticProperty; +import org.apache.streampipes.model.staticproperty.Option; +import org.apache.streampipes.sdk.helpers.Tuple2; +import org.apache.streampipes.test.generator.EventStreamGenerator; +import org.apache.streampipes.test.generator.InvocationGraphGenerator; +import org.apache.streampipes.test.generator.grounding.EventGroundingGenerator; +import org.apache.streampipes.wrapper.params.compat.ProcessorParams; + +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.time.ZonedDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.concurrent.TimeUnit; + +import static org.junit.Assert.assertEquals; + +@RunWith(Parameterized.class) +public class TestDateTimeProcessor { + private static final Logger LOG = LoggerFactory.getLogger(TestDateTimeProcessor.class); + + @org.junit.runners.Parameterized.Parameters + public static Iterable data() { + Iterable data = Arrays.asList(new Object[][] { + // the first test just demonstrates that the testing and the source code is + // functioning + { "dateTimeField", "US/Eastern", + List.of("2020-11-13T21:07:38.146120+01:00", "2023-11-14T16:17:01.286299-05:00", + "2023-11-14T14:05:57.519543100"), + List.of("1605298058", "1699996621", "1699988757") + }, + /* + * the next three tests demonstrate two things: (1) if the DateTime string has + * the zone information already in it, the user input on the timezone will not + * affect the DateTime variable. (2) The same instant in the real world will + * result in the same instant in the datetime variable + */ + { "dateTimeField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), + List.of("1700222655") }, + { "dateTimeField", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), + List.of("1700222655") }, + { "dateTimeField", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), + List.of("1700222655") }, + /* + * The next three tests demonstrate that if a localdatetime is given, when the + * user selects a time zone. An instant in time will be created for that + * specific timezone. + */ + { "dateTimeField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), + List.of("1700222655") }, + { "dateTimeField", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), + List.of("1700219055") }, + { "dateTimeField", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), + List.of("1700211855") }, + + }); + + return data; + } + + @org.junit.runners.Parameterized.Parameter + public String streamInputDateTimeFieldName; + + @org.junit.runners.Parameterized.Parameter(1) + public String selectedTimeZone; + + @org.junit.runners.Parameterized.Parameter(2) + public List eventsString; + + @org.junit.runners.Parameterized.Parameter(3) + public List expectedValues; + + public static final String DEFAULT_STREAM_PREFIX = "Stream"; + + @Test + public void testDateTime() { + DateTimeProcessor dateTime = new DateTimeProcessor(); + DataProcessorDescription originalGraph = dateTime.declareModel(); + originalGraph.setSupportedGrounding(EventGroundingGenerator.makeDummyGrounding()); + + DataProcessorInvocation graph = InvocationGraphGenerator.makeEmptyInvocation(originalGraph); + graph.setInputStreams(Collections.singletonList( + EventStreamGenerator.makeStreamWithProperties(Collections.singletonList("in-stream")))); + graph.setOutputStream( + EventStreamGenerator.makeStreamWithProperties(Collections.singletonList("out-stream"))); + graph.getOutputStream().getEventGrounding().getTransportProtocol().getTopicDefinition() + .setActualTopicName("output-topic"); + + MappingPropertyUnary mappingPropertyUnary = graph.getStaticProperties().stream() + .filter(p -> p instanceof MappingPropertyUnary) + .map(p -> (MappingPropertyUnary) p) + .filter(p -> (DateTimeProcessor.INPUT_DATETIME_FIELD_ID).equals(p.getInternalName())) + .findFirst().orElse(null); + + assert mappingPropertyUnary != null; + mappingPropertyUnary.setSelectedProperty(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName); + + OneOfStaticProperty selectedTimeZoneProperty = graph.getStaticProperties().stream() + .filter(p -> p instanceof OneOfStaticProperty) + .map(p -> (OneOfStaticProperty) p) + .filter(p -> (DateTimeProcessor.SELECTED_INPUT_TIMEZONE.equals(p.getInternalName()))) + .findFirst().orElse(null); + assert selectedTimeZoneProperty != null; + Option selectedTimeZoneOption = selectedTimeZoneProperty.getOptions().stream() + .filter(item -> item.getName().equals(selectedTimeZone)) + .findFirst().orElse(null); + assert selectedTimeZoneOption != null; + selectedTimeZoneOption.setSelected(true); + + ProcessorParams params = new ProcessorParams(graph); + SpOutputCollector spOut = new SpOutputCollector() { + @Override + public void registerConsumer(String routeId, InternalEventProcessor> consumer) { + } + + @Override + public void unregisterConsumer(String routeId) { + } + + @Override + public void connect() throws SpRuntimeException { + } + + @Override + public void disconnect() throws SpRuntimeException { + } + + @Override + public void collect(Event event) { + } + }; + dateTime.onInvocation(params, spOut, null); + Tuple2> res = sendEvents(dateTime, spOut); + List resValues = res.v; + assert eventsString.size() == expectedValues.size(); + int size = eventsString.size(); + for (int i = 0; i < size; i++) { + LOG.info("Expected value is {}.", expectedValues.get(i)); + LOG.info("Actual value is {}.", resValues.get(i).toString()); + assertEquals(expectedValues.get(i), resValues.get(i).toString()); + } + } + + private Tuple2> sendEvents(DateTimeProcessor dateTime, SpOutputCollector spOut) { + String field = ""; + ZonedDateTime dateTimeValue = null; + List events = makeEvents(); + List dateTimeValueList = new ArrayList(); + for (Event event : events) { + LOG.info("sending event with value " + + event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName).getAsPrimitive() + .getAsString()); + dateTime.onEvent(event, spOut); + + try { + TimeUnit.MILLISECONDS.sleep(100); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } + try { + field = event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + DateTimeProcessor.INPUT_DATETIME_FIELD_ID) + .getAsPrimitive() + .getAsString(); + dateTimeValue = (ZonedDateTime) event.getFieldBySelector(DateTimeProcessor.OUTPUT_DATETIME_RUNTIME_NAME) + .getRawValue(); + LOG.info(field + ":" + dateTimeValue); + } catch (IllegalArgumentException e) { + throw new RuntimeException(e); + } + dateTimeValueList.add(dateTimeValue.toEpochSecond()); + } + return new Tuple2<>(field, dateTimeValueList); + } + + private List makeEvents() { + List events = new ArrayList(); + for (String eventString : eventsString) { + events.add(makeEvent(eventString)); + } + return events; + } + + private Event makeEvent(String value) { + Map map = new HashMap(); + map.put(streamInputDateTimeFieldName, value); + return EventFactory.fromMap(map, + new SourceInfo("test-topic", DEFAULT_STREAM_PREFIX), + new SchemaInfo(null, new ArrayList())); + } +} From a8f960c7d9e35b4e7857d7b710752451adec9329 Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Thu, 23 Nov 2023 20:21:56 -0500 Subject: [PATCH 02/14] Updates to parse datetime. Incorporates feedback such as the following: * Way to initialize variables with constructors * simplifies methods with more efficient methods * creates the resource file for the processor * standardizes the names of inputs (i.e field) * creates the documentation for the processor --- ....java => DateTimeFromStringProcessor.java} | 32 +++------- .../documentation.md | 49 +++++++++++++++ .../strings.en | 28 +++++++++ .../datetime/TestDateTimeProcessor.java | 61 ++++++------------- 4 files changed, 104 insertions(+), 66 deletions(-) rename streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/{DateTimeProcessor.java => DateTimeFromStringProcessor.java} (81%) create mode 100644 streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md create mode 100644 streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java similarity index 81% rename from streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java rename to streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index 1ccd28dd6c..e64e3a8591 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -43,23 +43,19 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; -import java.util.Iterator; -import java.util.Set; -public class DateTimeProcessor extends StreamPipesDataProcessor { +public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { - public static final String INPUT_DATETIME_FIELD_ID = "dateTimeField"; + public static final String FIELD_ID = "field"; public static final String OUTPUT_DATETIME_RUNTIME_NAME = "dateTime"; public static final String SELECTED_INPUT_TIMEZONE = "inputTimeZone"; - private String[] possibleTimeZones; private String streamInputDateTimeFieldName; private String selectedTimeZone; @Override public DataProcessorDescription declareModel() { - possibleTimeZones = getTimeZoneOptions(); - DataProcessorDescription dpd = ProcessingElementBuilder + return ProcessingElementBuilder .create("org.apache.streampipes.processors.transformation.jvm.timeoperator.datetime", 0) .category(DataProcessorType.STRING_OPERATOR, DataProcessorType.TIME) .withLocales(Locales.EN) @@ -67,30 +63,27 @@ public DataProcessorDescription declareModel() { .requiredStream(StreamRequirementsBuilder.create() .requiredPropertyWithUnaryMapping( EpRequirements.stringReq(), - Labels.withId(INPUT_DATETIME_FIELD_ID), + Labels.withId(FIELD_ID), PropertyScope.NONE) .build()) .requiredSingleValueSelection(Labels.withId(SELECTED_INPUT_TIMEZONE), - Options.from(possibleTimeZones)) + Options.from(getTimeZoneOptions())) .outputStrategy(OutputStrategies.append( EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) .build(); - - return dpd; } @Override public void onInvocation(ProcessorParams parameters, SpOutputCollector spOutputCollector, EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException { ProcessingElementParameterExtractor extractor = parameters.extractor(); - this.streamInputDateTimeFieldName = extractor.mappingPropertyValue(INPUT_DATETIME_FIELD_ID); + this.streamInputDateTimeFieldName = extractor.mappingPropertyValue(FIELD_ID); this.selectedTimeZone = extractor.selectedSingleValue(SELECTED_INPUT_TIMEZONE, String.class); } @Override public void onEvent(Event event, SpOutputCollector collector) { String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName).getAsPrimitive().getAsString(); - // DateTimeFormatter dtFormatter = detectFormat(enteredInputFormat); DateTimeFormatter dtFormatter = DateTimeFormatter.ISO_DATE_TIME; ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); @@ -121,17 +114,6 @@ private ZonedDateTime parseDateTime(String dateTimeString, DateTimeFormatter dtf } private static String[] getTimeZoneOptions() { - Set possibleZonesSet = ZoneId.getAvailableZoneIds(); - int setSize = possibleZonesSet.size(); - String[] possibleZonesArray = new String[setSize]; - Iterator possibleZonesIterator = possibleZonesSet.iterator(); - for (int i = 0; i < setSize; i++) { - if (possibleZonesIterator.hasNext()) { - possibleZonesArray[i] = possibleZonesIterator.next(); - } else { - throw new RuntimeException("Time Zone option iterator & array mismatch"); - } - } - return possibleZonesArray; + return ZoneId.getAvailableZoneIds().toArray(new String[0]); } } diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md new file mode 100644 index 0000000000..47ae91c04a --- /dev/null +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md @@ -0,0 +1,49 @@ + + +## DateTime Parser + +

+ +

+ +*** + +## Description + +This processor parses a datetime string and puts it in a ZonedDateTime object. + +*** + +## Required input + +A string field that has an ISO DateTime format is required in the data stream. +A String field from a selection of possible time zones. + +*** + +## Configuration +A user can configure what TimeZone the datetime string applies to. This configuration will +only apply if the DateTime string does not already have the time zone information. + +## Output +The event is emitted each time a packet with a datetime is received. +The following field is appended to the event: + +* [ZonedDateTime] the parsed object from the input string +Runtime Name: dateTime diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en new file mode 100644 index 0000000000..c741c7b86b --- /dev/null +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en @@ -0,0 +1,28 @@ +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +org.apache.streampipes.processors.transformation.jvm.timeoperator.datetime.title=DateTime From String +org.apache.streampipes.processors.transformation.jvm.timeoperator.datetime.description=Parses a DateTime String into a ZonedDateTime Object + +field.title=DateTime Field +field.description=The String field that will be parsed to a DateTime + +inputTimeZone.title=Time Zone Parameter +inputTimeZone.description=The desired TimeZone for which the string applies + +dateTime.title=ZonedDateTime Variable +dateTime.description=The DateTime variable with a time zone. diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java index 66a6dbdca1..3be437756f 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java @@ -18,12 +18,9 @@ package org.apache.streampipes.processors.transformation.jvm.processor.datetime; -import org.apache.streampipes.commons.exceptions.SpRuntimeException; import org.apache.streampipes.extensions.api.pe.routing.SpOutputCollector; -import org.apache.streampipes.messaging.InternalEventProcessor; import org.apache.streampipes.model.graph.DataProcessorDescription; import org.apache.streampipes.model.graph.DataProcessorInvocation; -import org.apache.streampipes.model.output.PropertyRenameRule; import org.apache.streampipes.model.runtime.Event; import org.apache.streampipes.model.runtime.EventFactory; import org.apache.streampipes.model.runtime.SchemaInfo; @@ -32,6 +29,7 @@ import org.apache.streampipes.model.staticproperty.OneOfStaticProperty; import org.apache.streampipes.model.staticproperty.Option; import org.apache.streampipes.sdk.helpers.Tuple2; +import org.apache.streampipes.test.extensions.api.StoreEventCollector; import org.apache.streampipes.test.generator.EventStreamGenerator; import org.apache.streampipes.test.generator.InvocationGraphGenerator; import org.apache.streampipes.test.generator.grounding.EventGroundingGenerator; @@ -63,7 +61,7 @@ public static Iterable data() { Iterable data = Arrays.asList(new Object[][] { // the first test just demonstrates that the testing and the source code is // functioning - { "dateTimeField", "US/Eastern", + { "field", "US/Eastern", List.of("2020-11-13T21:07:38.146120+01:00", "2023-11-14T16:17:01.286299-05:00", "2023-11-14T14:05:57.519543100"), List.of("1605298058", "1699996621", "1699988757") @@ -74,22 +72,22 @@ public static Iterable data() { * affect the DateTime variable. (2) The same instant in the real world will * result in the same instant in the datetime variable */ - { "dateTimeField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), + { "field", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), List.of("1700222655") }, - { "dateTimeField", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), + { "field", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), List.of("1700222655") }, - { "dateTimeField", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), + { "field", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), List.of("1700222655") }, /* * The next three tests demonstrate that if a localdatetime is given, when the * user selects a time zone. An instant in time will be created for that * specific timezone. */ - { "dateTimeField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), + { "field", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), List.of("1700222655") }, - { "dateTimeField", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), + { "field", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), List.of("1700219055") }, - { "dateTimeField", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), + { "field", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), List.of("1700211855") }, }); @@ -113,7 +111,7 @@ public static Iterable data() { @Test public void testDateTime() { - DateTimeProcessor dateTime = new DateTimeProcessor(); + DateTimeFromStringProcessor dateTime = new DateTimeFromStringProcessor(); DataProcessorDescription originalGraph = dateTime.declareModel(); originalGraph.setSupportedGrounding(EventGroundingGenerator.makeDummyGrounding()); @@ -128,7 +126,7 @@ public void testDateTime() { MappingPropertyUnary mappingPropertyUnary = graph.getStaticProperties().stream() .filter(p -> p instanceof MappingPropertyUnary) .map(p -> (MappingPropertyUnary) p) - .filter(p -> (DateTimeProcessor.INPUT_DATETIME_FIELD_ID).equals(p.getInternalName())) + .filter(p -> (DateTimeFromStringProcessor.FIELD_ID).equals(p.getInternalName())) .findFirst().orElse(null); assert mappingPropertyUnary != null; @@ -137,7 +135,7 @@ public void testDateTime() { OneOfStaticProperty selectedTimeZoneProperty = graph.getStaticProperties().stream() .filter(p -> p instanceof OneOfStaticProperty) .map(p -> (OneOfStaticProperty) p) - .filter(p -> (DateTimeProcessor.SELECTED_INPUT_TIMEZONE.equals(p.getInternalName()))) + .filter(p -> (DateTimeFromStringProcessor.SELECTED_INPUT_TIMEZONE.equals(p.getInternalName()))) .findFirst().orElse(null); assert selectedTimeZoneProperty != null; Option selectedTimeZoneOption = selectedTimeZoneProperty.getOptions().stream() @@ -147,27 +145,7 @@ public void testDateTime() { selectedTimeZoneOption.setSelected(true); ProcessorParams params = new ProcessorParams(graph); - SpOutputCollector spOut = new SpOutputCollector() { - @Override - public void registerConsumer(String routeId, InternalEventProcessor> consumer) { - } - - @Override - public void unregisterConsumer(String routeId) { - } - - @Override - public void connect() throws SpRuntimeException { - } - - @Override - public void disconnect() throws SpRuntimeException { - } - - @Override - public void collect(Event event) { - } - }; + SpOutputCollector spOut = new StoreEventCollector(); dateTime.onInvocation(params, spOut, null); Tuple2> res = sendEvents(dateTime, spOut); List resValues = res.v; @@ -180,11 +158,11 @@ public void collect(Event event) { } } - private Tuple2> sendEvents(DateTimeProcessor dateTime, SpOutputCollector spOut) { + private Tuple2> sendEvents(DateTimeFromStringProcessor dateTime, SpOutputCollector spOut) { String field = ""; ZonedDateTime dateTimeValue = null; List events = makeEvents(); - List dateTimeValueList = new ArrayList(); + List dateTimeValueList = new ArrayList<>(); for (Event event : events) { LOG.info("sending event with value " + event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName).getAsPrimitive() @@ -197,10 +175,11 @@ private Tuple2> sendEvents(DateTimeProcessor dateTime, SpOutp throw new RuntimeException(e); } try { - field = event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + DateTimeProcessor.INPUT_DATETIME_FIELD_ID) + field = event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + DateTimeFromStringProcessor.FIELD_ID) .getAsPrimitive() .getAsString(); - dateTimeValue = (ZonedDateTime) event.getFieldBySelector(DateTimeProcessor.OUTPUT_DATETIME_RUNTIME_NAME) + dateTimeValue = (ZonedDateTime) event + .getFieldBySelector(DateTimeFromStringProcessor.OUTPUT_DATETIME_RUNTIME_NAME) .getRawValue(); LOG.info(field + ":" + dateTimeValue); } catch (IllegalArgumentException e) { @@ -212,7 +191,7 @@ private Tuple2> sendEvents(DateTimeProcessor dateTime, SpOutp } private List makeEvents() { - List events = new ArrayList(); + List events = new ArrayList<>(); for (String eventString : eventsString) { events.add(makeEvent(eventString)); } @@ -220,10 +199,10 @@ private List makeEvents() { } private Event makeEvent(String value) { - Map map = new HashMap(); + Map map = new HashMap<>(); map.put(streamInputDateTimeFieldName, value); return EventFactory.fromMap(map, new SourceInfo("test-topic", DEFAULT_STREAM_PREFIX), - new SchemaInfo(null, new ArrayList())); + new SchemaInfo(null, new ArrayList<>())); } } From 652b820cfa6a085eb669bfc313da853e61f0ceee Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Thu, 23 Nov 2023 20:33:24 -0500 Subject: [PATCH 03/14] I had renamed the processor, but I forgot to rename the Testing file. --- ...imeProcessor.java => TestDateTimeFromStringProcessor.java} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/{TestDateTimeProcessor.java => TestDateTimeFromStringProcessor.java} (99%) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java similarity index 99% rename from streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java rename to streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java index 3be437756f..a85abad128 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java @@ -53,8 +53,8 @@ import static org.junit.Assert.assertEquals; @RunWith(Parameterized.class) -public class TestDateTimeProcessor { - private static final Logger LOG = LoggerFactory.getLogger(TestDateTimeProcessor.class); +public class TestDateTimeFromStringProcessor { + private static final Logger LOG = LoggerFactory.getLogger(TestDateTimeFromStringProcessor.class); @org.junit.runners.Parameterized.Parameters public static Iterable data() { From eb3ac7a9dc03e708a0ca98672bb011e2a0fb8c00 Mon Sep 17 00:00:00 2001 From: bossenti Date: Fri, 24 Nov 2023 12:32:45 +0100 Subject: [PATCH 04/14] improve assets --- .../documentation.md | 48 +++++++++++++----- .../icon.png | Bin 0 -> 259252 bytes .../strings.en | 14 +++-- 3 files changed, 41 insertions(+), 21 deletions(-) create mode 100644 streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/icon.png diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md index 47ae91c04a..c7ddcb9764 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md @@ -16,7 +16,7 @@ ~ --> -## DateTime Parser +## Datetime From String

@@ -24,26 +24,48 @@ *** -## Description +## Overview -This processor parses a datetime string and puts it in a ZonedDateTime object. +The "Datetime From String" processor is a handy tool that helps convert human-readable datetime information into a +format that machines can understand. This is particularly useful when dealing with data that includes dates and times. + +### Why Use This Processor? + +In the context of event streams, you may encounter dates and times formatted for human readability but not necessarily +optimized for computer processing. The "Datetime From String" processor addresses this by facilitating the conversion +of human-readable datetime information within your continuous stream of events. *** -## Required input +## How It Works + +When you input a data stream into this processor containing a datetime in a specific format (such as "2023-11-24 15:30: +00"), it +undergoes a transformation. The processor converts it into a computer-friendly format called a ZonedDateTime object. -A string field that has an ISO DateTime format is required in the data stream. -A String field from a selection of possible time zones. +### Example + +Let's say you have an event stream with a property containing values like "2023-11-24 15:30:00" and you want to make +sure your computer understands it. You can use +this processor to convert it into a format that's machine-friendly. *** -## Configuration -A user can configure what TimeZone the datetime string applies to. This configuration will -only apply if the DateTime string does not already have the time zone information. +## Getting Started + +To use this processor, you need one thing in your data: + +1. **Datetime String**: This is the name of the event property that contains the human-readable datetime string, like "2023-11-24 15:30:00". + + +### Configuration + +The only thing you need to configure is the time zone. +1. **Time Zone**: Specify the time zone that applies to your datetime if it doesn't already have this information.This ensures that the processor understands the context of your +datetime. ## Output -The event is emitted each time a packet with a datetime is received. -The following field is appended to the event: -* [ZonedDateTime] the parsed object from the input string -Runtime Name: dateTime +After the conversion happens, the processor adds a new piece of information to your data stream: + +* **dateTime**: This is the transformed datetime in a format that computers can easily work with. \ No newline at end of file diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/icon.png b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c26c37e0607114d61ac6f574f59cf69b699f1b98 GIT binary patch literal 259252 zcmeEuWmFtd(Y+zvX z?%DnJ_x^uR_wA~_r@DVU_jJ{%s^@m}7d1sfJW4zi6coZwO7fa0D42+U;~59*-^_!W zlKnq{>ZYkEi&8yKefaMt%v%4GjjAdN`#&8A1rzlZ3i^Lc{v9Z&lqi`0TSr0pj7s%C zx+W^?|FJAt?JX`nMv|P< z6iQ4BJ>`q=7s)S(KzyNmRw)*q%<@%ND^7tS!r=-OU-e3-(>+NjQvJc zypWK&hO852@do}iNf1A1J!EJct}#$jQ4t6+LzaKW!FolH`rq@v2>cg;|03{T1pbS_ ze-ZdE0{=zezX<$)A`raALLVy~>&6&q8$CCE^G1hTG2*=^A@#|ttpxc^<<8lo%CfTS zN-LcV))i1u5DeN~LcxkTJ0m!6c@ZTh0?{neyynX|(WpLVeVt{^Bss#qP^aHrvFbbN zC(m*7ojgx)?~EGP{_md=!*^TXY6E&dGdmW|20G%MiS(GlJU68n+PeTl)Z6v5V#>1> z;Em)=h#B)MUhBoLk{m@GGYKh|zm68HSB$`8mKY9*i#Bw+&4w&ws%;~bLl#V-vOv|- z-=S3u{goO#vZp{sy{8XmYhnqyL(-i#&J7MmdE6nLyWLbSMAMcTtpnYdYxOzeVGdEL zY@`zvYeE4sUbh_a}}x zQ)osW@x&-5ngD#_TuTV=2-<&Xqb@!XzI#z+cpz2<-W7ikf@-x^a@N_~t5;WRM&ma! zJ<|w{H55*sElo9Sri3f==cO+!!eAzK^=~%`m{WN5X%b1(gw5~_xPO&~E^A?rmC*9e z;UxQGpXJaPPtJ+MdMqO!c|I^yp zr>R|nRA)L@tYpCeHOq>0=c92B^G1cHMhR0V;^BJvj1U^LS)a6TTAIzD%8Z(n7U=Rl z2s}#lzSdB2_;PTzo2a`hE5lqh$E%a-(WBQuWC^3yw`H^C&y=7xAN34D0qyExt5D!{ zmF&b%oUkP5^F9zCEEp31_M@7dK1$Jb748tEtsr-KWoPirJ7|CFy1{j3NO=>%SFju{n%2GMJXTfaOz9N;jBMx-TpDI4|j)pwM~JKjE}_l>3W+S|_8??-gmC zyq=!)j`A>*MIO#sV)kDWv0??k@aAE;2am#pvV4Hyw#O)myNcJF!*s1f;2tv4(J~~E z4K#ybT1J15i>&{qdjO1mvqrtXE;;LDfUwr=sxG-E%1IVJT?L(X4chN~4J+neGvNH@ zG3rNq1Pzke4^`vV^SrKpaLS*y>L~hvavf}8gTqm0^o@)LAd0Z&5$ZG@T694ZGQhbT zOn4ej$h}_pn8yuy8=xbaD~c3&lf@7(gv;Ye@pAkN|KL`&ws-@R_hh>98iLYQ8r z8FF%3TN@5k6lO{2;O_4piUDZsPmCi!#Gwu8JAWtRcx_mcD}R0elH`nz827ftQ2b%} zLP}CI>BF-$7`2hq3&dv)Apq`MaDz^r5<@nku>&!oK%O{8z4Hd*;LG)YU4di$N83X5tq$-}f&8~|j-ee@YXnt#xKS(*9A zA*%5$)#~|=^W-4vh#qw_Gqf5i!v2CU_~$IJ?;GuY$HP_>@K1Fl9(SUXoLTYNE_Yq3 zOu#$GI=jT@1jR?jL6O^csSjlGwU829e0b9#P}w!y8lJdmVPLZNt>V}64IWKO=rq*K zS4_29ow@y3OdObY48CI5tn2!i_Qkd!As2lG&4J|T-9bhHZoHu8-u|rPd}+e{dt*GB znTIA;H`@1-H2hU&zPUP85@3-kvm>%UG}6rJfrn0V4;PG^ZPH!JX0C{$Gu8E<5~$;D z3;EI@jn5^#jx(Xg<$WMec=dz1dy^|iF_R}?yN)xVwx%}hQFw9WO@=_Kd)P6Plz3$% zbZy~wE&!l+b+*dL^Pw`^uP-m-m9St{X@b2ElO_aHAya{T;#_d;6M4_OupC86vVtJw zaUiJ)5zr7um%%3eUH9SEIl--WfiU> z#;7&N!2E3B28ApiR)O5a_seNpsmwiwaLfWvOYDw-v-#nNqo`wvRkIFdk@)xHn)v*b z?3IOIb$PGxiu&-}%khz7@xFj3D!-EcwO<2z=e&k3HTs{)6|}IwyoHo$l})hF9M|RM z0^ZKlQ1}I3MtS*i38D=&@5vWzmuYQUT)L8M_mQhO42)uu^jL|nL3i?~w47C1Pyuze z*?oQBsH69xxeu`5;417GgSR7)%0AZt$~g^ik?BCyNSLnPHmWh!$98{9stjk-nQJQ9 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

sSo2Gg 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 Date: Fri, 24 Nov 2023 12:35:44 +0100 Subject: [PATCH 05/14] improve assets --- .../jvm/processor/datetime/DateTimeFromStringProcessor.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index e64e3a8591..eaaa62ef7a 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -46,7 +46,7 @@ public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { - public static final String FIELD_ID = "field"; + public static final String FIELD_ID = "inputField"; public static final String OUTPUT_DATETIME_RUNTIME_NAME = "dateTime"; public static final String SELECTED_INPUT_TIMEZONE = "inputTimeZone"; From e8fc0775a9350fd4fd57a9726aa32192309db80c Mon Sep 17 00:00:00 2001 From: bossenti Date: Fri, 24 Nov 2023 14:10:21 +0100 Subject: [PATCH 06/14] adapt parameter name in test --- .../datetime/TestDateTimeFromStringProcessor.java | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java index a85abad128..ca35068832 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java @@ -61,7 +61,7 @@ public static Iterable data() { Iterable data = Arrays.asList(new Object[][] { // the first test just demonstrates that the testing and the source code is // functioning - { "field", "US/Eastern", + { "inputField", "US/Eastern", List.of("2020-11-13T21:07:38.146120+01:00", "2023-11-14T16:17:01.286299-05:00", "2023-11-14T14:05:57.519543100"), List.of("1605298058", "1699996621", "1699988757") @@ -72,22 +72,22 @@ public static Iterable data() { * affect the DateTime variable. (2) The same instant in the real world will * result in the same instant in the datetime variable */ - { "field", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), + { "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), List.of("1700222655") }, - { "field", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), + { "inputField", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), List.of("1700222655") }, - { "field", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), + { "inputField", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), List.of("1700222655") }, /* * The next three tests demonstrate that if a localdatetime is given, when the * user selects a time zone. An instant in time will be created for that * specific timezone. */ - { "field", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), + { "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), List.of("1700222655") }, - { "field", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), + { "inputField", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), List.of("1700219055") }, - { "field", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), + { "inputField", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), List.of("1700211855") }, }); From 3193bcc925a1c75a62b4b7ea26d029306351ed6b Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Sat, 25 Nov 2023 12:54:52 -0500 Subject: [PATCH 07/14] Registering Processing Element and Aligning Ids --- .../jvm/TransformationExtensionModuleExport.java | 4 +++- .../processor/datetime/DateTimeFromStringProcessor.java | 9 +++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/TransformationExtensionModuleExport.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/TransformationExtensionModuleExport.java index fc7cdb5cd6..3afa98d2f2 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/TransformationExtensionModuleExport.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/TransformationExtensionModuleExport.java @@ -32,6 +32,7 @@ import org.apache.streampipes.processors.transformation.jvm.processor.booloperator.timekeeping.BooleanTimekeepingProcessor; import org.apache.streampipes.processors.transformation.jvm.processor.booloperator.timer.BooleanTimerProcessor; import org.apache.streampipes.processors.transformation.jvm.processor.csvmetadata.CsvMetadataEnrichmentProcessor; +import org.apache.streampipes.processors.transformation.jvm.processor.datetime.DateTimeFromStringProcessor; import org.apache.streampipes.processors.transformation.jvm.processor.fieldrename.FiledRenameProcessor; import org.apache.streampipes.processors.transformation.jvm.processor.hasher.FieldHasherProcessor; import org.apache.streampipes.processors.transformation.jvm.processor.mapper.FieldMapperProcessor; @@ -67,6 +68,7 @@ public List> pipelineElements() { new TimestampExtractorProcessor(), new BooleanCounterProcessor(), new BooleanInverterProcessor(), + new DateTimeFromStringProcessor(), new BooleanTimekeepingProcessor(), new BooleanTimerProcessor(), new CsvMetadataEnrichmentProcessor(), @@ -84,7 +86,7 @@ public List> pipelineElements() { new BooleanOperatorProcessor(), new FiledRenameProcessor(), new RoundProcessor() - ); + ); } @Override diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index e64e3a8591..d441c9bac8 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -43,6 +43,9 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeParseException; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { @@ -56,7 +59,7 @@ public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { @Override public DataProcessorDescription declareModel() { return ProcessingElementBuilder - .create("org.apache.streampipes.processors.transformation.jvm.timeoperator.datetime", 0) + .create("org.apache.streampipes.processors.transformation.jvm.datetime", 0) .category(DataProcessorType.STRING_OPERATOR, DataProcessorType.TIME) .withLocales(Locales.EN) .withAssets(Assets.DOCUMENTATION, Assets.ICON) @@ -114,6 +117,8 @@ private ZonedDateTime parseDateTime(String dateTimeString, DateTimeFormatter dtf } private static String[] getTimeZoneOptions() { - return ZoneId.getAvailableZoneIds().toArray(new String[0]); + List timeZones = new ArrayList<>(ZoneId.getAvailableZoneIds()); + Collections.sort(timeZones); + return timeZones.toArray(new String[0]); } } From 4cf75b73be91c2f082b0895c92758fd84418bc34 Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Tue, 28 Nov 2023 18:02:47 -0500 Subject: [PATCH 08/14] Drop down instead of radio group. Also change inputTimeZone description in resource files --- .../jvm/processor/datetime/DateTimeFromStringProcessor.java | 2 +- .../strings.en | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index 314b655e70..18f6d75c7e 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -70,7 +70,7 @@ public DataProcessorDescription declareModel() { PropertyScope.NONE) .build()) .requiredSingleValueSelection(Labels.withId(SELECTED_INPUT_TIMEZONE), - Options.from(getTimeZoneOptions())) + Options.from(getTimeZoneOptions()), true) .outputStrategy(OutputStrategies.append( EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) .build(); diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en index 90e87d03d4..d8c64687ca 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en @@ -22,5 +22,5 @@ inputField.title=DateTime String inputField.description=The event property that contains the timestamp strings inputTimeZone.title=Time Zone -inputTimeZone.description=The desired time zone for which the string applies (only required if the string does not contain time zone information) +inputTimeZone.description=The desired time zone for which the string applies (if the string already contains the time zone information, the user time zone will be ignored) From bc3b49deaf586bbe32ee254be0af51039ab747af Mon Sep 17 00:00:00 2001 From: bossenti Date: Wed, 29 Nov 2023 12:43:22 +0100 Subject: [PATCH 09/14] improve parameter description --- .../strings.en | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en index d8c64687ca..f87c4424d8 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en @@ -19,7 +19,7 @@ org.apache.streampipes.processors.transformation.jvm.datetime.title=Datetime Fro org.apache.streampipes.processors.transformation.jvm.datetime.description=Converts a human-readable timestamp from a textual (string) representation into a computer-readable object inputField.title=DateTime String -inputField.description=The event property that contains the timestamp strings +inputField.description=The event property that contains the timestamp ISO 8601 formatted strings, e.g., '2023-11-29T18:30:22' inputTimeZone.title=Time Zone inputTimeZone.description=The desired time zone for which the string applies (if the string already contains the time zone information, the user time zone will be ignored) From faedf377b15ffe4bb0812d199fa711845ea80989 Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Wed, 29 Nov 2023 14:04:07 -0500 Subject: [PATCH 10/14] put timestamp in event --- .../jvm/processor/datetime/DateTimeFromStringProcessor.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index 18f6d75c7e..9fb9863b41 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -51,6 +51,8 @@ public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { public static final String FIELD_ID = "inputField"; public static final String OUTPUT_DATETIME_RUNTIME_NAME = "dateTime"; + public static final String OUTPUT_TIMESTAMP_RUNTIME_NAME = "timeStamp"; + public static final String OUTPUT_TIMEZONE_RUNTIME_NAME = "timeZone"; public static final String SELECTED_INPUT_TIMEZONE = "inputTimeZone"; private String streamInputDateTimeFieldName; @@ -91,6 +93,8 @@ public void onEvent(Event event, SpOutputCollector collector) { ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); + event.addField(OUTPUT_TIMESTAMP_RUNTIME_NAME, zdt.toInstant().toEpochMilli()); + event.addField(OUTPUT_TIMEZONE_RUNTIME_NAME, selectedTimeZone); collector.collect(event); } From f8f44cdb4ec877ecef7a5b7922defbd54e830275 Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Wed, 29 Nov 2023 17:56:04 -0500 Subject: [PATCH 11/14] Temporary workaround --- .../jvm/processor/datetime/DateTimeFromStringProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index 9fb9863b41..b4b56f0f22 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -91,10 +91,12 @@ public void onEvent(Event event, SpOutputCollector collector) { String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName).getAsPrimitive().getAsString(); DateTimeFormatter dtFormatter = DateTimeFormatter.ISO_DATE_TIME; ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); - event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); + + // workaround to enable rendering temporarily event.addField(OUTPUT_TIMESTAMP_RUNTIME_NAME, zdt.toInstant().toEpochMilli()); event.addField(OUTPUT_TIMEZONE_RUNTIME_NAME, selectedTimeZone); + collector.collect(event); } From 3a4e7e3285b60ad816f6a3ae1302097830955d0c Mon Sep 17 00:00:00 2001 From: dshunter107 Date: Mon, 4 Dec 2023 12:53:46 -0500 Subject: [PATCH 12/14] Includes output strategy for time zone. One possible workaround is to use the time zone to reconstitute the datetime after the event has been collected. --- .../datetime/DateTimeFromStringProcessor.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index b4b56f0f22..c60029962e 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -73,8 +73,8 @@ public DataProcessorDescription declareModel() { .build()) .requiredSingleValueSelection(Labels.withId(SELECTED_INPUT_TIMEZONE), Options.from(getTimeZoneOptions()), true) - .outputStrategy(OutputStrategies.append( - EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) + .outputStrategy(OutputStrategies.append(EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) + .outputStrategy(OutputStrategies.append(EpProperties.timestampProperty(OUTPUT_TIMEZONE_RUNTIME_NAME))) .build(); } @@ -91,9 +91,14 @@ public void onEvent(Event event, SpOutputCollector collector) { String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName).getAsPrimitive().getAsString(); DateTimeFormatter dtFormatter = DateTimeFormatter.ISO_DATE_TIME; ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); - event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); - // workaround to enable rendering temporarily + /* + * A temporary workaround is in place to put a long represent the + * zonedDateTimeVariable One possible workaround is to use the time zone and the + * long to reconstitute the actual time after the event has been sent. + * event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); + */ + event.addField(OUTPUT_TIMESTAMP_RUNTIME_NAME, zdt.toInstant().toEpochMilli()); event.addField(OUTPUT_TIMEZONE_RUNTIME_NAME, selectedTimeZone); From 1428df0265d4fb3ff8e7f2954d4cf2d1daa76db7 Mon Sep 17 00:00:00 2001 From: bossenti Date: Thu, 7 Dec 2023 10:41:51 +0100 Subject: [PATCH 13/14] minor final improvements --- .../datetime/DateTimeFromStringProcessor.java | 54 ++++-- .../documentation.md | 3 +- .../strings.en | 2 +- .../TestDateTimeFromStringProcessor.java | 167 +++++++++++------- .../org/apache/streampipes/vocabulary/SO.java | 1 + 5 files changed, 142 insertions(+), 85 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java index c60029962e..be5b329468 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/DateTimeFromStringProcessor.java @@ -35,6 +35,7 @@ import org.apache.streampipes.sdk.helpers.Options; import org.apache.streampipes.sdk.helpers.OutputStrategies; import org.apache.streampipes.sdk.utils.Assets; +import org.apache.streampipes.vocabulary.SO; import org.apache.streampipes.wrapper.params.compat.ProcessorParams; import org.apache.streampipes.wrapper.standalone.StreamPipesDataProcessor; @@ -50,10 +51,9 @@ public class DateTimeFromStringProcessor extends StreamPipesDataProcessor { public static final String FIELD_ID = "inputField"; - public static final String OUTPUT_DATETIME_RUNTIME_NAME = "dateTime"; - public static final String OUTPUT_TIMESTAMP_RUNTIME_NAME = "timeStamp"; + public static final String OUTPUT_TIMESTAMP_RUNTIME_NAME = "timestringInMillis"; public static final String OUTPUT_TIMEZONE_RUNTIME_NAME = "timeZone"; - public static final String SELECTED_INPUT_TIMEZONE = "inputTimeZone"; + public static final String INPUT_TIMEZONE_KEY = "inputTimeZone"; private String streamInputDateTimeFieldName; private String selectedTimeZone; @@ -66,29 +66,44 @@ public DataProcessorDescription declareModel() { .withLocales(Locales.EN) .withAssets(Assets.DOCUMENTATION, Assets.ICON) .requiredStream(StreamRequirementsBuilder.create() - .requiredPropertyWithUnaryMapping( - EpRequirements.stringReq(), - Labels.withId(FIELD_ID), - PropertyScope.NONE) - .build()) - .requiredSingleValueSelection(Labels.withId(SELECTED_INPUT_TIMEZONE), - Options.from(getTimeZoneOptions()), true) - .outputStrategy(OutputStrategies.append(EpProperties.timestampProperty(OUTPUT_DATETIME_RUNTIME_NAME))) - .outputStrategy(OutputStrategies.append(EpProperties.timestampProperty(OUTPUT_TIMEZONE_RUNTIME_NAME))) + .requiredPropertyWithUnaryMapping( + EpRequirements.stringReq(), + Labels.withId(FIELD_ID), + PropertyScope.NONE + ) + .build()) + .requiredSingleValueSelection(Labels.withId(INPUT_TIMEZONE_KEY), + Options.from(getTimeZoneOptions()), true + ) + .outputStrategy( + OutputStrategies.append( + EpProperties.timestampProperty(OUTPUT_TIMESTAMP_RUNTIME_NAME), + EpProperties.stringEp( + // We can use the labels from the input timezone here + Labels.withId(INPUT_TIMEZONE_KEY), + OUTPUT_TIMEZONE_RUNTIME_NAME, + SO.SCHEDULE_TIMEZONE + ) + ) + ) .build(); } @Override - public void onInvocation(ProcessorParams parameters, SpOutputCollector spOutputCollector, - EventProcessorRuntimeContext runtimeContext) throws SpRuntimeException { + public void onInvocation( + ProcessorParams parameters, SpOutputCollector spOutputCollector, + EventProcessorRuntimeContext runtimeContext + ) throws SpRuntimeException { ProcessingElementParameterExtractor extractor = parameters.extractor(); this.streamInputDateTimeFieldName = extractor.mappingPropertyValue(FIELD_ID); - this.selectedTimeZone = extractor.selectedSingleValue(SELECTED_INPUT_TIMEZONE, String.class); + this.selectedTimeZone = extractor.selectedSingleValue(INPUT_TIMEZONE_KEY, String.class); } @Override public void onEvent(Event event, SpOutputCollector collector) { - String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName).getAsPrimitive().getAsString(); + String dateTimeString = event.getFieldBySelector(streamInputDateTimeFieldName) + .getAsPrimitive() + .getAsString(); DateTimeFormatter dtFormatter = DateTimeFormatter.ISO_DATE_TIME; ZonedDateTime zdt = parseDateTime(dateTimeString, dtFormatter); @@ -98,8 +113,11 @@ public void onEvent(Event event, SpOutputCollector collector) { * long to reconstitute the actual time after the event has been sent. * event.addField(OUTPUT_DATETIME_RUNTIME_NAME, zdt); */ - - event.addField(OUTPUT_TIMESTAMP_RUNTIME_NAME, zdt.toInstant().toEpochMilli()); + event.addField( + OUTPUT_TIMESTAMP_RUNTIME_NAME, + zdt.toInstant() + .toEpochMilli() + ); event.addField(OUTPUT_TIMEZONE_RUNTIME_NAME, selectedTimeZone); collector.collect(event); diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md index c7ddcb9764..3dfcb6657f 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/documentation.md @@ -68,4 +68,5 @@ datetime. After the conversion happens, the processor adds a new piece of information to your data stream: -* **dateTime**: This is the transformed datetime in a format that computers can easily work with. \ No newline at end of file +* **timestringInMillis**: This is the transformed datetime in a format that computers can easily work with (UNIX timestamp in milliseconds). +* **timeZone**: The name of the timezone the `dateTime` value refers to. Can be used to reconstitute the actual time. \ No newline at end of file diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en index f87c4424d8..a7b2e84277 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/main/resources/org.apache.streampipes.processors.transformation.jvm.datetime/strings.en @@ -22,5 +22,5 @@ inputField.title=DateTime String inputField.description=The event property that contains the timestamp ISO 8601 formatted strings, e.g., '2023-11-29T18:30:22' inputTimeZone.title=Time Zone -inputTimeZone.description=The desired time zone for which the string applies (if the string already contains the time zone information, the user time zone will be ignored) +inputTimeZone.description=The time zone for which the string applies (if the string already contains the time zone information, the user time zone will be ignored) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java index ca35068832..26c5d4b397 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java @@ -41,7 +41,6 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -58,41 +57,56 @@ public class TestDateTimeFromStringProcessor { @org.junit.runners.Parameterized.Parameters public static Iterable data() { - Iterable data = Arrays.asList(new Object[][] { - // the first test just demonstrates that the testing and the source code is - // functioning - { "inputField", "US/Eastern", - List.of("2020-11-13T21:07:38.146120+01:00", "2023-11-14T16:17:01.286299-05:00", - "2023-11-14T14:05:57.519543100"), - List.of("1605298058", "1699996621", "1699988757") - }, - /* - * the next three tests demonstrate two things: (1) if the DateTime string has - * the zone information already in it, the user input on the timezone will not - * affect the DateTime variable. (2) The same instant in the real world will - * result in the same instant in the datetime variable - */ - { "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), - List.of("1700222655") }, - { "inputField", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), - List.of("1700222655") }, - { "inputField", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), - List.of("1700222655") }, - /* - * The next three tests demonstrate that if a localdatetime is given, when the - * user selects a time zone. An instant in time will be created for that - * specific timezone. - */ - { "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), - List.of("1700222655") }, - { "inputField", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), - List.of("1700219055") }, - { "inputField", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), - List.of("1700211855") }, - - }); - - return data; + + var expectedTimestamp = 1700222655537L; + + return Arrays.asList(new Object[][]{ + // the first test just demonstrates that the testing and the source code is + // functioning + { + "inputField", "US/Eastern", + List.of("2020-11-13T21:07:38.146120+01:00", "2023-11-14T16:17:01.286299-05:00", + "2023-11-14T14:05:57.519543100" + ), + List.of(1605298058146L, 1699996621286L, 1699988757519L) + }, + /* + * the next three tests demonstrate two things: (1) if the DateTime string has + * the zone information already in it, the user input on the timezone will not + * affect the DateTime variable. (2) The same instant in the real world will + * result in the same instant in the datetime variable + */ + { + "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600-08:00[US/Pacific]"), + List.of(expectedTimestamp) + }, + { + "inputField", "US/Pacific", List.of("2023-11-17T05:04:15.537187600-07:00[US/Arizona]"), + List.of(expectedTimestamp) + }, + { + "inputField", "US/Pacific", List.of("2023-11-17T07:04:15.537187600-05:00[US/Eastern]"), + List.of(expectedTimestamp) + }, + /* + * The next three tests demonstrate that if a localdatetime is given, when the + * user selects a time zone. An instant in time will be created for that + * specific timezone. + */ + { + "inputField", "US/Pacific", List.of("2023-11-17T04:04:15.537187600"), + List.of(expectedTimestamp) + }, + { + "inputField", "US/Arizona", List.of("2023-11-17T04:04:15.537187600"), + List.of(1700219055537L) + }, + { + "inputField", "US/Eastern", List.of("2023-11-17T04:04:15.537187600"), + List.of(1700211855537L) + }, + + }); } @org.junit.runners.Parameterized.Parameter @@ -120,27 +134,39 @@ public void testDateTime() { EventStreamGenerator.makeStreamWithProperties(Collections.singletonList("in-stream")))); graph.setOutputStream( EventStreamGenerator.makeStreamWithProperties(Collections.singletonList("out-stream"))); - graph.getOutputStream().getEventGrounding().getTransportProtocol().getTopicDefinition() - .setActualTopicName("output-topic"); - - MappingPropertyUnary mappingPropertyUnary = graph.getStaticProperties().stream() - .filter(p -> p instanceof MappingPropertyUnary) - .map(p -> (MappingPropertyUnary) p) - .filter(p -> (DateTimeFromStringProcessor.FIELD_ID).equals(p.getInternalName())) - .findFirst().orElse(null); + graph.getOutputStream() + .getEventGrounding() + .getTransportProtocol() + .getTopicDefinition() + .setActualTopicName("output-topic"); + + MappingPropertyUnary mappingPropertyUnary = graph.getStaticProperties() + .stream() + .filter(p -> p instanceof MappingPropertyUnary) + .map(p -> (MappingPropertyUnary) p) + .filter(p -> (DateTimeFromStringProcessor.FIELD_ID).equals(p.getInternalName())) + .findFirst() + .orElse(null); assert mappingPropertyUnary != null; mappingPropertyUnary.setSelectedProperty(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName); - OneOfStaticProperty selectedTimeZoneProperty = graph.getStaticProperties().stream() - .filter(p -> p instanceof OneOfStaticProperty) - .map(p -> (OneOfStaticProperty) p) - .filter(p -> (DateTimeFromStringProcessor.SELECTED_INPUT_TIMEZONE.equals(p.getInternalName()))) - .findFirst().orElse(null); + OneOfStaticProperty selectedTimeZoneProperty = graph.getStaticProperties() + .stream() + .filter(p -> p instanceof OneOfStaticProperty) + .map(p -> (OneOfStaticProperty) p) + .filter(p -> ( + DateTimeFromStringProcessor.INPUT_TIMEZONE_KEY.equals(p.getInternalName()) + )) + .findFirst() + .orElse(null); assert selectedTimeZoneProperty != null; - Option selectedTimeZoneOption = selectedTimeZoneProperty.getOptions().stream() - .filter(item -> item.getName().equals(selectedTimeZone)) - .findFirst().orElse(null); + Option selectedTimeZoneOption = selectedTimeZoneProperty.getOptions() + .stream() + .filter(item -> item.getName() + .equals(selectedTimeZone)) + .findFirst() + .orElse(null); assert selectedTimeZoneOption != null; selectedTimeZoneOption.setSelected(true); @@ -153,20 +179,28 @@ public void testDateTime() { int size = eventsString.size(); for (int i = 0; i < size; i++) { LOG.info("Expected value is {}.", expectedValues.get(i)); - LOG.info("Actual value is {}.", resValues.get(i).toString()); - assertEquals(expectedValues.get(i), resValues.get(i).toString()); + LOG.info( + "Actual value is {}.", + resValues.get(i) + .toString() + ); + assertEquals( + expectedValues.get(i), + resValues.get(i) + ); } } private Tuple2> sendEvents(DateTimeFromStringProcessor dateTime, SpOutputCollector spOut) { String field = ""; - ZonedDateTime dateTimeValue = null; + Long timestampValue = null; List events = makeEvents(); List dateTimeValueList = new ArrayList<>(); for (Event event : events) { LOG.info("sending event with value " - + event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName).getAsPrimitive() - .getAsString()); + + event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + streamInputDateTimeFieldName) + .getAsPrimitive() + .getAsString()); dateTime.onEvent(event, spOut); try { @@ -176,16 +210,17 @@ private Tuple2> sendEvents(DateTimeFromStringProcessor dateTi } try { field = event.getFieldBySelector(DEFAULT_STREAM_PREFIX + "::" + DateTimeFromStringProcessor.FIELD_ID) + .getAsPrimitive() + .getAsString(); + timestampValue = event + .getFieldBySelector(DateTimeFromStringProcessor.OUTPUT_TIMESTAMP_RUNTIME_NAME) .getAsPrimitive() - .getAsString(); - dateTimeValue = (ZonedDateTime) event - .getFieldBySelector(DateTimeFromStringProcessor.OUTPUT_DATETIME_RUNTIME_NAME) - .getRawValue(); - LOG.info(field + ":" + dateTimeValue); + .getAsLong(); + LOG.info(field + ":" + timestampValue); } catch (IllegalArgumentException e) { throw new RuntimeException(e); } - dateTimeValueList.add(dateTimeValue.toEpochSecond()); + dateTimeValueList.add(timestampValue); } return new Tuple2<>(field, dateTimeValueList); } @@ -201,8 +236,10 @@ private List makeEvents() { private Event makeEvent(String value) { Map map = new HashMap<>(); map.put(streamInputDateTimeFieldName, value); - return EventFactory.fromMap(map, + return EventFactory.fromMap( + map, new SourceInfo("test-topic", DEFAULT_STREAM_PREFIX), - new SchemaInfo(null, new ArrayList<>())); + new SchemaInfo(null, new ArrayList<>()) + ); } } diff --git a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/SO.java b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/SO.java index dfea7eaaff..c4abd3e3ac 100644 --- a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/SO.java +++ b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/SO.java @@ -374,6 +374,7 @@ public class SO { public static final String SAME_AS = "http://schema.org/sameAs"; public static final String SAMPLE_TYPE = "http://schema.org/sampleType"; public static final String SATURATED_FAT_CONTENT = "http://schema.org/saturatedFatContent"; + public static final String SCHEDULE_TIMEZONE = "https://schema.org/scheduleTimezone"; public static final String SCHEDULED_TIME = "http://schema.org/scheduledTime"; public static final String SCREENSHOT = "http://schema.org/screenshot"; public static final String SEASON_NUMBER = "http://schema.org/seasonNumber"; From f2dbec07fa0acbbc4e699644fb55057ba4dc94ef Mon Sep 17 00:00:00 2001 From: bossenti Date: Thu, 7 Dec 2023 10:49:39 +0100 Subject: [PATCH 14/14] style: adapt to checkstyle --- .../datetime/TestDateTimeFromStringProcessor.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java index 26c5d4b397..14543c3d13 100644 --- a/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java +++ b/streampipes-extensions/streampipes-processors-transformation-jvm/src/test/java/org/apache/streampipes/processors/transformation/jvm/processor/datetime/TestDateTimeFromStringProcessor.java @@ -144,7 +144,10 @@ public void testDateTime() { .stream() .filter(p -> p instanceof MappingPropertyUnary) .map(p -> (MappingPropertyUnary) p) - .filter(p -> (DateTimeFromStringProcessor.FIELD_ID).equals(p.getInternalName())) + .filter(p -> DateTimeFromStringProcessor.FIELD_ID.equals( + p.getInternalName() + ) + ) .findFirst() .orElse(null); @@ -156,7 +159,9 @@ public void testDateTime() { .filter(p -> p instanceof OneOfStaticProperty) .map(p -> (OneOfStaticProperty) p) .filter(p -> ( - DateTimeFromStringProcessor.INPUT_TIMEZONE_KEY.equals(p.getInternalName()) + DateTimeFromStringProcessor.INPUT_TIMEZONE_KEY.equals( + p.getInternalName() + ) )) .findFirst() .orElse(null);