You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2020/06/04 19:20:37 UTC
[incubator-streampipes] 01/01: [STREAMPIPES-145] Add new
serialization layer, add initial skeleton of new Angular-based editor module
This is an automated email from the ASF dual-hosted git repository.
riemer pushed a commit to branch STREAMPIPES-145
in repository https://gitbox.apache.org/repos/asf/incubator-streampipes.git
commit 6fc805fa5abbe4916951353f7c90fc9f02555c0c
Author: Dominik Riemer <ri...@fzi.de>
AuthorDate: Thu Jun 4 21:20:18 2020 +0200
[STREAMPIPES-145] Add new serialization layer, add initial skeleton of new Angular-based editor module
---
.../backend/StreamPipesResourceConfig.java | 37 +-
.../streampipes/connect/adapter/Adapter.java | 4 +-
.../TransformSchemaAdapterPipelineElement.java | 2 +-
.../elements/TransformStreamAdapterElement.java | 4 +-
.../client/user/ShiroAuthenticationRequest.java | 4 +
streampipes-model/pom.xml | 151 +-
.../org/apache/streampipes/model/AdapterType.java | 16 +
.../streampipes/model/DataProcessorType.java | 15 +
.../org/apache/streampipes/model/DataSinkType.java | 16 +
.../org/apache/streampipes/model/SpDataStream.java | 14 +-
.../streampipes/model/annotation/TsIgnore.java | 7 +-
.../streampipes/model/annotation/TsModel.java | 7 +-
.../model/base/AbstractStreamPipesEntity.java | 18 +-
.../model/base/ConsumableStreamPipesEntity.java | 12 +-
.../model/base/InvocableStreamPipesEntity.java | 17 +-
.../model/base/StreamPipesJsonLdContainer.java | 10 +-
.../model/base/UnnamedStreamPipesEntity.java | 73 +-
.../streampipes/model/connect/ListDescription.java | 56 -
.../model/connect/adapter/AdapterDescription.java | 14 +-
.../connect/adapter/AdapterSetDescription.java | 5 +
.../connect/adapter/AdapterStreamDescription.java | 5 +
.../model/connect/grounding/FormatDescription.java | 7 +-
.../rules/TransformationRuleDescription.java | 9 +
.../CreateNestedRuleDescription.java | 2 +-
.../{Schema => schema}/DeleteRuleDescription.java | 2 +-
.../{Schema => schema}/MoveRuleDescription.java | 2 +-
.../{Schema => schema}/RenameRuleDescription.java | 2 +-
.../SchemaTransformationRuleDescription.java | 9 +-
.../EventRateTransformationRuleDescription.java | 2 +-
...oveDuplicatesTransformationRuleDescription.java | 2 +-
.../StreamTransformationRuleDescription.java | 8 +-
.../value/ValueTransformationRuleDescription.java | 7 +
.../model/dashboard/DashboardEntity.java | 11 +-
.../model/graph/DataProcessorDescription.java | 5 +-
.../model/graph/DataProcessorInvocation.java | 9 +-
.../model/graph/DataSinkDescription.java | 5 +-
.../model/graph/DataSinkInvocation.java | 7 +-
.../model/graph/DataSourceDescription.java | 9 +-
.../model/grounding/TopicDefinition.java | 5 +
.../model/grounding/TransportProtocol.java | 12 +-
.../streampipes/model/output/OutputStrategy.java | 18 +-
.../quality/EventPropertyQualityDefinition.java | 7 +
.../quality/EventStreamQualityDefinition.java | 5 +
.../model/quality/MeasurementProperty.java | 7 +-
.../streampipes/model/schema/EventProperty.java | 14 +-
.../model/schema/ValueSpecification.java | 5 +
.../model/staticproperty/MappingProperty.java | 13 +-
.../model/staticproperty/MappingPropertyNary.java | 5 +-
.../model/staticproperty/OneOfStaticProperty.java | 4 +
.../RuntimeResolvableAnyStaticProperty.java | 3 +-
.../RuntimeResolvableOneOfStaticProperty.java | 3 +-
.../staticproperty/SelectionStaticProperty.java | 12 +-
.../model/staticproperty/StaticProperty.java | 22 +
.../streampipes/model/util/RdfIdGenerator.java | 15 +-
.../connect/adapter/AdapterDescriptionTest.java | 6 +-
.../JacksonSerialized.java} | 13 +-
.../shared/serializer/GsonClientModelProvider.java | 7 +
.../rest/shared/serializer/GsonJerseyProvider.java | 22 +-
.../rest/shared/serializer/GsonWithIdProvider.java | 7 +
.../shared/serializer/GsonWithoutIdProvider.java | 9 +-
...vider.java => JacksonSerializationFeature.java} | 29 +-
.../rest/shared/serializer/JsonLdProvider.java | 11 +-
.../streampipes/rest/shared/util/JsonLdUtils.java | 25 +-
.../streampipes/rest/shared/util/SpMediaType.java | 4 +
.../rest/impl/OntologyPipelineElement.java | 23 +-
.../rest/impl/SemanticEventConsumer.java | 19 +-
.../rest/impl/SemanticEventProcessingAgent.java | 35 +-
.../rest/impl/SemanticEventProducer.java | 19 +-
.../serializers/json/GsonSerializer.java | 12 +-
.../jsonld/CustomAnnotationProvider.java | 14 +-
.../apache/streampipes/vocabulary/StreamPipes.java | 1 +
ui/deployment/dev/config.yml | 1 +
ui/deployment/modules.yml | 15 +
.../app/connect/model/CodeInputStaticProperty.ts | 22 +-
.../app/connect/model/DataProcessorInvocation.ts | 8 +-
ui/src/app/connect/model/DataSinkInvocation.ts | 8 +-
...aSinkInvocation.ts => DataSourceDescription.ts} | 18 +-
ui/src/app/connect/model/DataStreamDescription.ts | 11 +-
.../connect/model/InvocableStreamPipesEntity.ts | 18 +-
ui/src/app/connect/model/NamedStreamPipesEntity.ts | 2 +
.../app/connect/model/UnnamedStreamPipesEntity.ts | 1 -
.../app/connect/model/grounding/EventGrounding.ts | 35 +-
.../model/grounding/JmsTransportProtocol.ts | 0
.../model/grounding/KafkaTransportProtocol.ts | 0
.../app/connect/model/grounding/TopicDefinition.ts | 12 +-
.../app/connect/model/grounding/TransportFormat.ts | 20 +-
.../TransportProtocol.ts} | 24 +-
.../UserDefinedOutputStrategy.ts} | 23 +-
ui/src/app/core-model/gen/streampipes-model.ts | 2587 ++++++++++++++++++++
.../pipeline-assembly.component.css | 0
.../pipeline-assembly.component.html | 0
.../pipeline-assembly.component.ts | 20 +-
.../pipeline-element-icon-stand.component.css | 0
.../pipeline-element-icon-stand.component.html | 95 +
.../pipeline-element-icon-stand.component.ts | 107 +
.../pipeline-element.component.css | 0
.../pipeline-element.component.html | 22 +
.../pipeline-element/pipeline-element.component.ts | 98 +
ui/src/app/editor-v2/editor.component.css | 0
ui/src/app/editor-v2/editor.component.html | 43 +
ui/src/app/editor-v2/editor.component.ts | 104 +
ui/src/app/editor-v2/editor.module.ts | 84 +
ui/src/app/editor-v2/services/editor.service.ts | 81 +
.../platform-services/tsonld-serializer.service.ts | 12 +
ui/src/app/services/image-checker.service.ts | 3 +
105 files changed, 3970 insertions(+), 495 deletions(-)
diff --git a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java
index e5b4868..478e7aa 100644
--- a/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java
+++ b/streampipes-backend/src/main/java/org/apache/streampipes/backend/StreamPipesResourceConfig.java
@@ -18,41 +18,7 @@
package org.apache.streampipes.backend;
-import org.apache.streampipes.rest.impl.ApplicationLink;
-import org.apache.streampipes.rest.impl.AssetDashboard;
-import org.apache.streampipes.rest.impl.Authentication;
-import org.apache.streampipes.rest.impl.AutoComplete;
-import org.apache.streampipes.rest.impl.ConsulConfig;
-import org.apache.streampipes.rest.impl.ContainerProvidedOptions;
-import org.apache.streampipes.rest.impl.Couchdb;
-import org.apache.streampipes.rest.impl.DataStream;
-import org.apache.streampipes.rest.impl.Deployment;
-import org.apache.streampipes.rest.impl.InternalPipelineTemplates;
-import org.apache.streampipes.rest.impl.MeasurementUnitResource;
-import org.apache.streampipes.rest.impl.Notification;
-import org.apache.streampipes.rest.impl.OntologyContext;
-import org.apache.streampipes.rest.impl.OntologyKnowledge;
-import org.apache.streampipes.rest.impl.OntologyMeasurementUnit;
-import org.apache.streampipes.rest.impl.OntologyPipelineElement;
-import org.apache.streampipes.rest.impl.PipelineCache;
-import org.apache.streampipes.rest.impl.PipelineCategory;
-import org.apache.streampipes.rest.impl.PipelineElementAsset;
-import org.apache.streampipes.rest.impl.PipelineElementCategory;
-import org.apache.streampipes.rest.impl.PipelineElementFile;
-import org.apache.streampipes.rest.impl.PipelineElementImport;
-import org.apache.streampipes.rest.impl.PipelineElementRuntimeInfo;
-import org.apache.streampipes.rest.impl.PipelineTemplate;
-import org.apache.streampipes.rest.impl.PipelineWithUserResource;
-import org.apache.streampipes.rest.impl.RdfEndpoint;
-import org.apache.streampipes.rest.impl.SemanticEventConsumer;
-import org.apache.streampipes.rest.impl.SemanticEventProcessingAgent;
-import org.apache.streampipes.rest.impl.SemanticEventProducer;
-import org.apache.streampipes.rest.impl.Setup;
-import org.apache.streampipes.rest.impl.StreamPipesLogs;
-import org.apache.streampipes.rest.impl.User;
-import org.apache.streampipes.rest.impl.Version;
-import org.apache.streampipes.rest.impl.VirtualSensor;
-import org.apache.streampipes.rest.impl.Visualization;
+import org.apache.streampipes.rest.impl.*;
import org.apache.streampipes.rest.impl.dashboard.Dashboard;
import org.apache.streampipes.rest.impl.dashboard.DashboardWidget;
import org.apache.streampipes.rest.impl.dashboard.VisualizablePipeline;
@@ -137,6 +103,7 @@ public class StreamPipesResourceConfig extends ResourceConfig {
register(GsonWithoutIdProvider.class);
register(GsonClientModelProvider.class);
register(JsonLdProvider.class);
+ //register(JacksonFeature.class);
register(MultiPartFeature.class);
}
diff --git a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/Adapter.java b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/Adapter.java
index d738322..a0f8881 100644
--- a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/Adapter.java
+++ b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/Adapter.java
@@ -35,8 +35,8 @@ import org.apache.streampipes.connect.adapter.preprocessing.elements.TransformSt
import org.apache.streampipes.connect.adapter.preprocessing.elements.TransformValueAdapterPipelineElement;
import org.apache.streampipes.model.connect.adapter.AdapterDescription;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.model.connect.rules.Stream.EventRateTransformationRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.RemoveDuplicatesTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription;
diff --git a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformSchemaAdapterPipelineElement.java b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformSchemaAdapterPipelineElement.java
index 111e711..cd860d0 100644
--- a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformSchemaAdapterPipelineElement.java
+++ b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformSchemaAdapterPipelineElement.java
@@ -25,7 +25,7 @@ import org.apache.streampipes.connect.adapter.preprocessing.Util;
import org.apache.streampipes.connect.adapter.preprocessing.transform.*;
import org.apache.streampipes.connect.adapter.preprocessing.transform.schema.*;
import org.apache.streampipes.model.connect.rules.*;
-import org.apache.streampipes.model.connect.rules.Schema.*;
+import org.apache.streampipes.model.connect.rules.schema.*;
import java.util.ArrayList;
import java.util.List;
diff --git a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformStreamAdapterElement.java b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformStreamAdapterElement.java
index 065c89b..499c3e0 100644
--- a/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformStreamAdapterElement.java
+++ b/streampipes-connect/src/main/java/org/apache/streampipes/connect/adapter/preprocessing/elements/TransformStreamAdapterElement.java
@@ -24,8 +24,8 @@ import org.apache.streampipes.connect.adapter.model.pipeline.AdapterPipelineElem
import org.apache.streampipes.connect.adapter.preprocessing.transform.TransformationRule;
import org.apache.streampipes.connect.adapter.preprocessing.transform.stream.EventRateTransformationRule;
import org.apache.streampipes.connect.adapter.preprocessing.transform.stream.StreamEventTransformer;
-import org.apache.streampipes.model.connect.rules.Stream.EventRateTransformationRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.StreamTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.StreamTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
import java.util.ArrayList;
diff --git a/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java b/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java
index 1fa0a2a..cd620a5 100644
--- a/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java
+++ b/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java
@@ -22,6 +22,10 @@ public class ShiroAuthenticationRequest {
private String username;
private String password;
+
+ public ShiroAuthenticationRequest() {
+
+ }
public ShiroAuthenticationRequest(String username, String password) {
super();
diff --git a/streampipes-model/pom.xml b/streampipes-model/pom.xml
index cd1f2d4..5987518 100644
--- a/streampipes-model/pom.xml
+++ b/streampipes-model/pom.xml
@@ -16,64 +16,111 @@
~
-->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
- <artifactId>streampipes-model</artifactId>
- <parent>
- <groupId>org.apache.streampipes</groupId>
- <artifactId>streampipes-parent</artifactId>
- <version>0.67.0-SNAPSHOT</version>
- </parent>
- <dependencies>
- <!-- StreamPipes dependencies -->
- <dependency>
- <groupId>org.apache.streampipes</groupId>
- <artifactId>streampipes-commons</artifactId>
- <version>0.67.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.streampipes</groupId>
- <artifactId>streampipes-logging</artifactId>
- <version>0.67.0-SNAPSHOT</version>
- </dependency>
- <dependency>
- <groupId>org.apache.streampipes</groupId>
- <artifactId>streampipes-vocabulary</artifactId>
- <version>0.67.0-SNAPSHOT</version>
- </dependency>
-
- <!-- External dependencies -->
- <dependency>
- <groupId>com.google.code.gson</groupId>
- <artifactId>gson</artifactId>
- </dependency>
- <dependency>
- <groupId>com.github.drapostolos</groupId>
- <artifactId>type-parser</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.persistence</groupId>
- <artifactId>persistence-api</artifactId>
- </dependency>
- <dependency>
- <groupId>io.fogsy</groupId>
- <artifactId>empire-annotations</artifactId>
- </dependency>
- <dependency>
- <groupId>io.fogsy</groupId>
- <artifactId>empire-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient-osgi</artifactId>
- </dependency>
+ <artifactId>streampipes-model</artifactId>
+ <parent>
+ <groupId>org.apache.streampipes</groupId>
+ <artifactId>streampipes-parent</artifactId>
+ <version>0.67.0-SNAPSHOT</version>
+ </parent>
+ <dependencies>
+ <!-- StreamPipes dependencies -->
+ <dependency>
+ <groupId>org.apache.streampipes</groupId>
+ <artifactId>streampipes-commons</artifactId>
+ <version>0.67.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streampipes</groupId>
+ <artifactId>streampipes-logging</artifactId>
+ <version>0.67.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.streampipes</groupId>
+ <artifactId>streampipes-vocabulary</artifactId>
+ <version>0.67.0-SNAPSHOT</version>
+ </dependency>
+ <!-- External dependencies -->
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
+ <artifactId>jackson-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.google.code.gson</groupId>
+ <artifactId>gson</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>com.github.drapostolos</groupId>
+ <artifactId>type-parser</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.fogsy</groupId>
+ <artifactId>empire-annotations</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>io.fogsy</groupId>
+ <artifactId>empire-core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient-osgi</artifactId>
+ </dependency>
- <!-- Test dependencies -->
+ <!-- Test dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>cz.habarta.typescript-generator</groupId>
+ <artifactId>typescript-generator-maven-plugin</artifactId>
+ <version>2.23.603</version>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <phase>process-classes</phase>
+ </execution>
+ </executions>
+ <configuration>
+ <jsonLibrary>jackson2</jsonLibrary>
+ <classesWithAnnotations>
+ <annotation>org.apache.streampipes.model.annotation.TsModel</annotation>
+ </classesWithAnnotations>
+ <excludePropertyAnnotations>
+ <annotation>org.apache.streampipes.model.annotation.TsIgnore</annotation>
+ </excludePropertyAnnotations>
+ <excludeClasses>
+ <class>io.fogsy.empire.core.empire.SupportsRdfId</class>
+ <class>java.io.Serializable</class>
+ </excludeClasses>
+ <outputKind>module</outputKind>
+ <outputFileType>implementationFile</outputFileType>
+ <outputKind>module</outputKind>
+ <disableTaggedUnions>false</disableTaggedUnions>
+ <mapClasses>asClasses</mapClasses>
+ <sortDeclarations>true</sortDeclarations>
+ <tsNoCheck>true</tsNoCheck>
+ <extensions>
+ <extension>cz.habarta.typescript.generator.ext.JsonDeserializationExtension</extension>
+ </extensions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
</project>
\ No newline at end of file
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/AdapterType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/AdapterType.java
index 6272396..e64c450 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/AdapterType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/AdapterType.java
@@ -17,6 +17,13 @@
*/
package org.apache.streampipes.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.streampipes.model.annotation.TsModel;
+
+@TsModel
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum AdapterType {
Generic("Generic Adapters", ""),
@@ -37,6 +44,10 @@ public enum AdapterType {
this.description = description;
}
+ public String getCode() {
+ return this.name();
+ }
+
public String getLabel() {
return label;
}
@@ -44,4 +55,9 @@ public enum AdapterType {
public String getDescription() {
return description;
}
+
+ @JsonCreator
+ public static AdapterType fromString(JsonNode json) {
+ return AdapterType.valueOf(json.get("code").asText());
+ }
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/DataProcessorType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/DataProcessorType.java
index f4940e3..a12275b 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/DataProcessorType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/DataProcessorType.java
@@ -18,7 +18,13 @@
package org.apache.streampipes.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.streampipes.model.annotation.TsModel;
+@TsModel
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum DataProcessorType {
FILTER("Filter", "b"),
@@ -39,6 +45,10 @@ public enum DataProcessorType {
this.description = description;
}
+ public String getCode() {
+ return this.name();
+ }
+
public String getLabel() {
return label;
}
@@ -46,4 +56,9 @@ public enum DataProcessorType {
public String getDescription() {
return description;
}
+
+ @JsonCreator
+ public static AdapterType fromString(JsonNode json) {
+ return AdapterType.valueOf(json.get("code").asText());
+ }
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/DataSinkType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/DataSinkType.java
index 79f2859..a8a213e 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/DataSinkType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/DataSinkType.java
@@ -18,6 +18,13 @@
package org.apache.streampipes.model;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.databind.JsonNode;
+import org.apache.streampipes.model.annotation.TsModel;
+
+@TsModel
+@JsonFormat(shape = JsonFormat.Shape.OBJECT)
public enum DataSinkType {
VISUALIZATION_CHART("Charts", ""),
@@ -36,6 +43,10 @@ public enum DataSinkType {
this.description = description;
}
+ public String getCode() {
+ return this.name();
+ }
+
public String getLabel() {
return label;
}
@@ -43,4 +54,9 @@ public enum DataSinkType {
public String getDescription() {
return description;
}
+
+ @JsonCreator
+ public static AdapterType fromString(JsonNode json) {
+ return AdapterType.valueOf(json.get("code").asText());
+ }
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/SpDataStream.java b/streampipes-model/src/main/java/org/apache/streampipes/model/SpDataStream.java
index db509f1..f6c09b7 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/SpDataStream.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/SpDataStream.java
@@ -18,9 +18,10 @@
package org.apache.streampipes.model;
-import org.apache.commons.lang.RandomStringUtils;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
+import org.apache.commons.lang.RandomStringUtils;
import org.apache.streampipes.model.base.NamedStreamPipesEntity;
import org.apache.streampipes.model.grounding.EventGrounding;
import org.apache.streampipes.model.quality.EventStreamQualityDefinition;
@@ -31,18 +32,17 @@ import org.apache.streampipes.model.schema.EventSchema;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
@RdfsClass(StreamPipes.DATA_STREAM)
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(SpDataStream.class),
+ @JsonSubTypes.Type(SpDataSet.class)
+})
public class SpDataStream extends NamedStreamPipesEntity {
private static final long serialVersionUID = -5732549347563182863L;
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsIgnore.java
similarity index 85%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsIgnore.java
index 7f22a1b..25a63b8 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsIgnore.java
@@ -1,4 +1,4 @@
-/*
+package org.apache.streampipes.model.annotation;/*
* 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.
@@ -15,9 +15,6 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
-public class SpMediaType {
-
- public static final String JSONLD = "application/ld+json";
+public @interface TsIgnore {
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsModel.java
similarity index 85%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsModel.java
index 7f22a1b..3c1e6d3 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/annotation/TsModel.java
@@ -1,4 +1,4 @@
-/*
+package org.apache.streampipes.model.annotation;/*
* 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.
@@ -15,9 +15,6 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
-public class SpMediaType {
-
- public static final String JSONLD = "application/ld+json";
+public @interface TsModel {
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/base/AbstractStreamPipesEntity.java b/streampipes-model/src/main/java/org/apache/streampipes/model/base/AbstractStreamPipesEntity.java
index 5034990..85119fb 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/base/AbstractStreamPipesEntity.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/base/AbstractStreamPipesEntity.java
@@ -19,14 +19,14 @@
package org.apache.streampipes.model.base;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
+import com.fasterxml.jackson.annotation.JsonTypeInfo;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.core.empire.SupportsRdfId;
import io.fogsy.empire.core.empire.annotation.SupportsRdfIdImpl;
-import org.apache.streampipes.vocabulary.RDF;
-import org.apache.streampipes.vocabulary.RDFS;
-import org.apache.streampipes.vocabulary.SO;
-import org.apache.streampipes.vocabulary.SSN;
-import org.apache.streampipes.vocabulary.StreamPipes;
+import org.apache.streampipes.model.annotation.TsModel;
+import org.apache.streampipes.vocabulary.*;
import java.io.Serializable;
@@ -38,6 +38,12 @@ import java.io.Serializable;
@Namespaces({StreamPipes.NS_PREFIX, StreamPipes.NS,
"dc", "http://purl.org/dc/terms/", RDFS.NS_PREFIX, RDFS.NS, RDF.NS_PREFIX, RDF.NS, SO.NS_PREFIX, SO.NS,
SSN.NS_PREFIX, SSN.NS})
+@JsonTypeInfo(use = JsonTypeInfo.Id.CLASS, property="@class")
+@JsonSubTypes({
+ @JsonSubTypes.Type(NamedStreamPipesEntity.class),
+ @JsonSubTypes.Type(UnnamedStreamPipesEntity.class)
+})
+@TsModel
public class AbstractStreamPipesEntity implements SupportsRdfId, Serializable {
private static final long serialVersionUID = -8593749314663582071L;
@@ -50,6 +56,7 @@ public class AbstractStreamPipesEntity implements SupportsRdfId, Serializable {
@SuppressWarnings("rawtypes")
@Override
+ @JsonIgnore
public RdfKey getRdfId() {
return myId.getRdfId();
}
@@ -57,6 +64,7 @@ public class AbstractStreamPipesEntity implements SupportsRdfId, Serializable {
@SuppressWarnings("rawtypes")
@Override
+ @JsonIgnore
public void setRdfId(RdfKey arg0) {
myId.setRdfId(arg0);
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/base/ConsumableStreamPipesEntity.java b/streampipes-model/src/main/java/org/apache/streampipes/model/base/ConsumableStreamPipesEntity.java
index 569b5a2..04bafaa 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/base/ConsumableStreamPipesEntity.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/base/ConsumableStreamPipesEntity.java
@@ -18,21 +18,27 @@
package org.apache.streampipes.model.base;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.grounding.EventGrounding;
import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
+import java.util.ArrayList;
+import java.util.List;
+@JsonSubTypes({
+ @JsonSubTypes.Type(DataProcessorDescription.class),
+ @JsonSubTypes.Type(DataSinkDescription.class)
+})
public abstract class ConsumableStreamPipesEntity extends NamedStreamPipesEntity {
private static final long serialVersionUID = -6617391345752016449L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/base/InvocableStreamPipesEntity.java b/streampipes-model/src/main/java/org/apache/streampipes/model/base/InvocableStreamPipesEntity.java
index 6736149..206e99b 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/base/InvocableStreamPipesEntity.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/base/InvocableStreamPipesEntity.java
@@ -18,23 +18,29 @@
package org.apache.streampipes.model.base;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import org.apache.streampipes.logging.LoggerFactory;
import org.apache.streampipes.logging.api.Logger;
import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
+import org.apache.streampipes.model.graph.DataSinkInvocation;
import org.apache.streampipes.model.grounding.EventGrounding;
import org.apache.streampipes.model.monitoring.ElementStatusInfoSettings;
import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
+import java.util.List;
+@JsonSubTypes({
+ @JsonSubTypes.Type(DataProcessorInvocation.class),
+ @JsonSubTypes.Type(DataSinkInvocation.class),
+})
public abstract class InvocableStreamPipesEntity extends NamedStreamPipesEntity {
private static final long serialVersionUID = 2727573914765473470L;
@@ -57,6 +63,9 @@ public abstract class InvocableStreamPipesEntity extends NamedStreamPipesEntity
@RdfProperty(StreamPipes.STATUS_INFO_SETTINGS)
private ElementStatusInfoSettings statusInfoSettings;
+ @OneToOne(fetch = FetchType.EAGER,
+ cascade = {CascadeType.PERSIST, CascadeType.MERGE})
+ @RdfProperty(StreamPipes.SUPPORTED_GROUNDING)
private EventGrounding supportedGrounding;
@RdfProperty(StreamPipes.CORRESPONDING_PIPELINE)
@@ -65,8 +74,12 @@ public abstract class InvocableStreamPipesEntity extends NamedStreamPipesEntity
@RdfProperty(StreamPipes.CORRESPONDING_USER)
private String correspondingUser;
+ @OneToMany(fetch = FetchType.EAGER,
+ cascade = {CascadeType.ALL})
+ @RdfProperty(StreamPipes.REQUIRES_STREAM)
private List<SpDataStream> streamRequirements;
+ //@RdfProperty(StreamPipes.PE_CONFIGURED)
private boolean configured;
public InvocableStreamPipesEntity() {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/base/StreamPipesJsonLdContainer.java b/streampipes-model/src/main/java/org/apache/streampipes/model/base/StreamPipesJsonLdContainer.java
index f1437ac..d6761a8 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/base/StreamPipesJsonLdContainer.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/base/StreamPipesJsonLdContainer.java
@@ -18,15 +18,14 @@
package org.apache.streampipes.model.base;
-import org.apache.streampipes.vocabulary.StreamPipes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
-
-import java.util.List;
+import org.apache.streampipes.vocabulary.StreamPipes;
import javax.persistence.CascadeType;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.List;
@RdfsClass(StreamPipes.ENTITY_CONTAINER)
public class StreamPipesJsonLdContainer extends UnnamedStreamPipesEntity {
@@ -45,6 +44,11 @@ public class StreamPipesJsonLdContainer extends UnnamedStreamPipesEntity {
this.containedElements = containedElements;
}
+ public StreamPipesJsonLdContainer(StreamPipesJsonLdContainer other) {
+ super(other);
+ this.containedElements = other.getContainedElements();
+ }
+
public List<? extends AbstractStreamPipesEntity> getContainedElements() {
return containedElements;
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/base/UnnamedStreamPipesEntity.java b/streampipes-model/src/main/java/org/apache/streampipes/model/base/UnnamedStreamPipesEntity.java
index d6e38da..68ac6bc 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/base/UnnamedStreamPipesEntity.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/base/UnnamedStreamPipesEntity.java
@@ -19,31 +19,90 @@
package org.apache.streampipes.model.base;
-import org.apache.commons.lang.RandomStringUtils;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfId;
import io.fogsy.empire.annotations.RdfProperty;
+import org.apache.streampipes.model.annotation.TsIgnore;
+import org.apache.streampipes.model.connect.guess.DomainPropertyProbability;
+import org.apache.streampipes.model.connect.guess.DomainPropertyProbabilityList;
+import org.apache.streampipes.model.connect.guess.GuessSchema;
+import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
+import org.apache.streampipes.model.connect.worker.ConnectWorkerContainer;
+import org.apache.streampipes.model.dashboard.DashboardEntity;
+import org.apache.streampipes.model.dashboard.DashboardWidgetSettings;
+import org.apache.streampipes.model.datalake.DataLakeMeasure;
+import org.apache.streampipes.model.grounding.*;
+import org.apache.streampipes.model.monitoring.ElementStatusInfoSettings;
+import org.apache.streampipes.model.output.OutputStrategy;
+import org.apache.streampipes.model.output.PropertyRenameRule;
+import org.apache.streampipes.model.output.TransformOperation;
+import org.apache.streampipes.model.quality.*;
+import org.apache.streampipes.model.runtime.RuntimeOptionsRequest;
+import org.apache.streampipes.model.schema.EventProperty;
+import org.apache.streampipes.model.schema.EventSchema;
+import org.apache.streampipes.model.schema.ValueSpecification;
+import org.apache.streampipes.model.staticproperty.Option;
+import org.apache.streampipes.model.staticproperty.PropertyValueSpecification;
+import org.apache.streampipes.model.staticproperty.StaticProperty;
+import org.apache.streampipes.model.staticproperty.SupportedProperty;
+import org.apache.streampipes.model.template.BoundPipelineElement;
+import org.apache.streampipes.model.template.PipelineTemplateDescriptionContainer;
+import org.apache.streampipes.model.template.PipelineTemplateInvocation;
+import org.apache.streampipes.model.util.RdfIdGenerator;
import org.apache.streampipes.vocabulary.StreamPipes;
/**
* unnamed SEPA elements (that do not require any readable identifier)
*/
+@JsonSubTypes({
+ @JsonSubTypes.Type(StreamPipesJsonLdContainer.class),
+ @JsonSubTypes.Type(DomainPropertyProbability.class),
+ @JsonSubTypes.Type(DomainPropertyProbabilityList.class),
+ @JsonSubTypes.Type(GuessSchema.class),
+ @JsonSubTypes.Type(TransformationRuleDescription.class),
+ @JsonSubTypes.Type(ConnectWorkerContainer.class),
+ @JsonSubTypes.Type(DashboardEntity.class),
+ @JsonSubTypes.Type(DashboardWidgetSettings.class),
+ @JsonSubTypes.Type(DataLakeMeasure.class),
+ @JsonSubTypes.Type(EventGrounding.class),
+ @JsonSubTypes.Type(TopicDefinition.class),
+ @JsonSubTypes.Type(TransportFormat.class),
+ @JsonSubTypes.Type(TransportProtocol.class),
+ @JsonSubTypes.Type(WildcardTopicMapping.class),
+ @JsonSubTypes.Type(ElementStatusInfoSettings.class),
+ @JsonSubTypes.Type(OutputStrategy.class),
+ @JsonSubTypes.Type(PropertyRenameRule.class),
+ @JsonSubTypes.Type(TransformOperation.class),
+ @JsonSubTypes.Type(EventPropertyQualityRequirement.class),
+ @JsonSubTypes.Type(EventStreamQualityRequirement.class),
+ @JsonSubTypes.Type(MeasurementCapability.class),
+ @JsonSubTypes.Type(MeasurementObject.class),
+ @JsonSubTypes.Type(MeasurementProperty.class),
+ @JsonSubTypes.Type(RuntimeOptionsRequest.class),
+ @JsonSubTypes.Type(EventProperty.class),
+ @JsonSubTypes.Type(EventSchema.class),
+ @JsonSubTypes.Type(ValueSpecification.class),
+ @JsonSubTypes.Type(Option.class),
+ @JsonSubTypes.Type(PropertyValueSpecification.class),
+ @JsonSubTypes.Type(StaticProperty.class),
+ @JsonSubTypes.Type(SupportedProperty.class),
+ @JsonSubTypes.Type(BoundPipelineElement.class),
+ @JsonSubTypes.Type(PipelineTemplateDescriptionContainer.class),
+ @JsonSubTypes.Type(PipelineTemplateInvocation.class),
+})
public abstract class UnnamedStreamPipesEntity extends AbstractStreamPipesEntity {
private static final long serialVersionUID = 8051137255998890188L;
- private static final String prefix = "urn:streampipes.org:spi:";
-
@RdfId
@RdfProperty(StreamPipes.HAS_ELEMENT_NAME)
+ @TsIgnore
private String elementId;
public UnnamedStreamPipesEntity() {
super();
- this.elementId = prefix
- + this.getClass().getSimpleName().toLowerCase()
- + ":"
- + RandomStringUtils.randomAlphabetic(6);
+ this.elementId = RdfIdGenerator.makeRdfId(this);
}
public UnnamedStreamPipesEntity(UnnamedStreamPipesEntity other) {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/ListDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/ListDescription.java
deleted file mode 100644
index 9dc35c6..0000000
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/ListDescription.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * 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.model.connect;
-
-import io.fogsy.empire.annotations.Namespaces;
-import io.fogsy.empire.annotations.RdfProperty;
-import io.fogsy.empire.annotations.RdfsClass;
-import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
-import java.util.ArrayList;
-import java.util.List;
-
-@Namespaces({"sp", "https://streampipes.org/vocabulary/v1/\""})
-@RdfsClass("sp:List")
-@Entity
-public class ListDescription <T> extends UnnamedStreamPipesEntity {
- // TODO not sure if I can deserialize it in the client
-
- @OneToMany(fetch = FetchType.EAGER,
- cascade = {CascadeType.ALL})
- @RdfProperty("sp:list")
- private List<T> list;
-
- public ListDescription() {
- super();
- list = new ArrayList<>();
- }
-
- public List<T> getList() {
- return list;
- }
-
- public void setList(List<T> list) {
- this.list = list;
- }
-}
\ No newline at end of file
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
index 9549433..d6805c4 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterDescription.java
@@ -18,14 +18,15 @@
package org.apache.streampipes.model.connect.adapter;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.google.gson.annotations.SerializedName;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.NamedStreamPipesEntity;
-import org.apache.streampipes.model.connect.rules.Schema.SchemaTransformationRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.StreamTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.SchemaTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.StreamTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.value.ValueTransformationRuleDescription;
import org.apache.streampipes.model.grounding.EventGrounding;
import org.apache.streampipes.model.grounding.KafkaTransportProtocol;
@@ -35,17 +36,20 @@ import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@Namespaces({"sp", "https://streampipes.org/vocabulary/v1/"})
@RdfsClass("sp:AdapterDescription")
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(AdapterSetDescription.class),
+ @JsonSubTypes.Type(AdapterStreamDescription.class)
+})
public abstract class AdapterDescription extends NamedStreamPipesEntity {
@RdfProperty("sp:couchDBId")
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterSetDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterSetDescription.java
index 457ca9e..5a20ef7 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterSetDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterSetDescription.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.connect.adapter;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
@@ -28,6 +29,10 @@ import javax.persistence.Entity;
@Namespaces({"sp", "https://streampipes.org/vocabulary/v1/"})
@RdfsClass("sp:AdapterSetDescription")
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(GenericAdapterSetDescription.class),
+ @JsonSubTypes.Type(SpecificAdapterSetDescription.class)
+})
public abstract class AdapterSetDescription extends AdapterDescription {
public AdapterSetDescription() {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
index 52c4d05..2dd8de0 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/adapter/AdapterStreamDescription.java
@@ -17,6 +17,7 @@
*/
package org.apache.streampipes.model.connect.adapter;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
@@ -28,6 +29,10 @@ import javax.persistence.Entity;
@Namespaces({"sp", "https://streampipes.org/vocabulary/v1/"})
@RdfsClass(StreamPipes.ADAPTER_STREAM_DESCRIPTION)
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(SpecificAdapterStreamDescription.class),
+ @JsonSubTypes.Type(SpecificAdapterStreamDescription.class)
+})
public abstract class AdapterStreamDescription extends AdapterDescription {
@RdfProperty("sp:hasDataStream")
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/grounding/FormatDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/grounding/FormatDescription.java
index 2a8ae58..6c0fac4 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/grounding/FormatDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/grounding/FormatDescription.java
@@ -26,13 +26,12 @@ import org.apache.streampipes.model.base.NamedStreamPipesEntity;
import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@Namespaces({"sp", "https://streampipes.org/vocabulary/v1/"})
@@ -40,8 +39,6 @@ import javax.persistence.OneToMany;
@Entity
public class FormatDescription extends NamedStreamPipesEntity {
-
-
@OneToMany(fetch = FetchType.EAGER,
cascade = {CascadeType.ALL})
@RdfProperty("sp:config")
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/TransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/TransformationRuleDescription.java
index 55c611d..e7df785 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/TransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/TransformationRuleDescription.java
@@ -18,9 +18,13 @@
package org.apache.streampipes.model.connect.rules;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
+import org.apache.streampipes.model.connect.rules.schema.SchemaTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.StreamTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.value.ValueTransformationRuleDescription;
import org.apache.streampipes.vocabulary.StreamPipes;
import javax.persistence.Entity;
@@ -28,6 +32,11 @@ import javax.persistence.Entity;
@Namespaces({StreamPipes.NS_PREFIX, StreamPipes.NS})
@RdfsClass(StreamPipes.TRANSFORM_RULE_DESCRIPTION)
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(ValueTransformationRuleDescription.class),
+ @JsonSubTypes.Type(StreamTransformationRuleDescription.class),
+ @JsonSubTypes.Type(SchemaTransformationRuleDescription.class),
+})
public abstract class TransformationRuleDescription extends UnnamedStreamPipesEntity {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/CreateNestedRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/CreateNestedRuleDescription.java
similarity index 96%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/CreateNestedRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/CreateNestedRuleDescription.java
index 9780e2a..6390cc6 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/CreateNestedRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/CreateNestedRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+package org.apache.streampipes.model.connect.rules.schema;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/DeleteRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/DeleteRuleDescription.java
similarity index 96%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/DeleteRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/DeleteRuleDescription.java
index f2c53e6..0c3aad7 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/DeleteRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/DeleteRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+package org.apache.streampipes.model.connect.rules.schema;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/MoveRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/MoveRuleDescription.java
similarity index 97%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/MoveRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/MoveRuleDescription.java
index fcd0372..f8402c3 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/MoveRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/MoveRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+package org.apache.streampipes.model.connect.rules.schema;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/RenameRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/RenameRuleDescription.java
similarity index 97%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/RenameRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/RenameRuleDescription.java
index dd881c6..b38dd8e 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/RenameRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/RenameRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+package org.apache.streampipes.model.connect.rules.schema;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/SchemaTransformationRuleDescription.java
similarity index 76%
copy from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
copy to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/SchemaTransformationRuleDescription.java
index 79123f7..45a5b9b 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/schema/SchemaTransformationRuleDescription.java
@@ -16,10 +16,17 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+package org.apache.streampipes.model.connect.rules.schema;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
+@JsonSubTypes({
+ @JsonSubTypes.Type(CreateNestedRuleDescription.class),
+ @JsonSubTypes.Type(DeleteRuleDescription.class),
+ @JsonSubTypes.Type(RenameRuleDescription.class),
+ @JsonSubTypes.Type(MoveRuleDescription.class),
+})
public abstract class SchemaTransformationRuleDescription extends TransformationRuleDescription {
public SchemaTransformationRuleDescription() {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/EventRateTransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/EventRateTransformationRuleDescription.java
similarity index 97%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/EventRateTransformationRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/EventRateTransformationRuleDescription.java
index f557bb1..5465844 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/EventRateTransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/EventRateTransformationRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Stream;
+package org.apache.streampipes.model.connect.rules.stream;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/RemoveDuplicatesTransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/RemoveDuplicatesTransformationRuleDescription.java
similarity index 96%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/RemoveDuplicatesTransformationRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/RemoveDuplicatesTransformationRuleDescription.java
index d847569..24c4b00 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/RemoveDuplicatesTransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/RemoveDuplicatesTransformationRuleDescription.java
@@ -16,7 +16,7 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Stream;
+package org.apache.streampipes.model.connect.rules.stream;
import io.fogsy.empire.annotations.Namespaces;
import io.fogsy.empire.annotations.RdfProperty;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/StreamTransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/StreamTransformationRuleDescription.java
similarity index 80%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/StreamTransformationRuleDescription.java
rename to streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/StreamTransformationRuleDescription.java
index 05bc7d4..5e6bca2 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Stream/StreamTransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/stream/StreamTransformationRuleDescription.java
@@ -16,11 +16,15 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Stream;
+package org.apache.streampipes.model.connect.rules.stream;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
-
+@JsonSubTypes({
+ @JsonSubTypes.Type(EventRateTransformationRuleDescription.class),
+ @JsonSubTypes.Type(RemoveDuplicatesTransformationRuleDescription.class),
+})
public abstract class StreamTransformationRuleDescription extends TransformationRuleDescription {
public StreamTransformationRuleDescription() {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/value/ValueTransformationRuleDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/value/ValueTransformationRuleDescription.java
index abbffdd..0729606 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/value/ValueTransformationRuleDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/value/ValueTransformationRuleDescription.java
@@ -18,8 +18,15 @@
package org.apache.streampipes.model.connect.rules.value;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
+@JsonSubTypes({
+ @JsonSubTypes.Type(AddTimestampRuleDescription.class),
+ @JsonSubTypes.Type(AddValueTransformationRuleDescription.class),
+ @JsonSubTypes.Type(TimestampTranfsformationRuleDescription.class),
+ @JsonSubTypes.Type(UnitTransformRuleDescription.class),
+})
public abstract class ValueTransformationRuleDescription extends TransformationRuleDescription {
public ValueTransformationRuleDescription() {
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardEntity.java b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardEntity.java
index 6e05071..78133d8 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardEntity.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/dashboard/DashboardEntity.java
@@ -18,11 +18,13 @@
package org.apache.streampipes.model.dashboard;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.google.gson.annotations.SerializedName;
-import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
-import org.apache.streampipes.vocabulary.StreamPipes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
+import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
+import org.apache.streampipes.model.datalake.DataExplorerWidgetModel;
+import org.apache.streampipes.vocabulary.StreamPipes;
import javax.persistence.Entity;
import javax.persistence.MappedSuperclass;
@@ -30,6 +32,11 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.DASHBOARD_ENTITY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(DashboardWidgetModel.class),
+ @JsonSubTypes.Type(VisualizablePipeline.class),
+ @JsonSubTypes.Type(DataExplorerWidgetModel.class)
+})
public abstract class DashboardEntity extends UnnamedStreamPipesEntity {
@RdfProperty("sp:couchDbId")
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorDescription.java
index 75e6afc..0921ed4 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorDescription.java
@@ -27,13 +27,12 @@ import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@RdfsClass(StreamPipes.DATA_PROCESSOR_DESCRIPTION)
@Entity
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorInvocation.java b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorInvocation.java
index 043ec09..fbaafe7 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorInvocation.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataProcessorInvocation.java
@@ -25,18 +25,14 @@ import org.apache.streampipes.model.base.InvocableStreamPipesEntity;
import org.apache.streampipes.model.output.OutputStrategy;
import org.apache.streampipes.model.staticproperty.StaticProperty;
import org.apache.streampipes.model.util.Cloner;
+import org.apache.streampipes.model.util.RdfIdGenerator;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
@RdfsClass(StreamPipes.DATA_PROCESSOR_INVOCATION)
@Entity
public class DataProcessorInvocation extends InvocableStreamPipesEntity implements Serializable {
@@ -74,6 +70,7 @@ public class DataProcessorInvocation extends InvocableStreamPipesEntity implemen
this.setStreamRequirements(sepa.getSpDataStreams());
this.setAppId(sepa.getAppId());
this.setIncludesAssets(sepa.isIncludesAssets());
+ this.setElementId(RdfIdGenerator.makeRdfId(this));
//this.setUri(belongsTo +"/" +getElementId());
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkDescription.java
index 909d738..3b7b4d6 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkDescription.java
@@ -24,13 +24,12 @@ import org.apache.streampipes.model.base.ConsumableStreamPipesEntity;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@RdfsClass(StreamPipes.DATA_SINK_DESCRIPTION)
@Entity
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkInvocation.java b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkInvocation.java
index 564c82a..a07dc21 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkInvocation.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSinkInvocation.java
@@ -22,15 +22,15 @@ import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.InvocableStreamPipesEntity;
import org.apache.streampipes.model.staticproperty.StaticProperty;
+import org.apache.streampipes.model.util.RdfIdGenerator;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@RdfsClass(StreamPipes.DATA_SINK_INVOCATION)
@Entity
@@ -61,6 +61,7 @@ public class DataSinkInvocation extends InvocableStreamPipesEntity {
this.setStreamRequirements(sec.getSpDataStreams());
this.setAppId(sec.getAppId());
this.setIncludesAssets(sec.isIncludesAssets());
+ this.setElementId(RdfIdGenerator.makeRdfId(this));
//this.setUri(belongsTo +"/" +getElementId());
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSourceDescription.java b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSourceDescription.java
index 8f86f3e..e793829 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSourceDescription.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/graph/DataSourceDescription.java
@@ -21,24 +21,25 @@ package org.apache.streampipes.model.graph;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.SpDataStream;
+import org.apache.streampipes.model.annotation.TsModel;
import org.apache.streampipes.model.base.NamedStreamPipesEntity;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
/**
* class that represents Semantic Event Producers.
*/
@RdfsClass(StreamPipes.DATA_SOURCE_DESCRIPTION)
@Entity
+@TsModel
public class DataSourceDescription extends NamedStreamPipesEntity {
private static final long serialVersionUID = 5607030219013954697L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TopicDefinition.java b/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TopicDefinition.java
index 89f1ea6..9588096 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TopicDefinition.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TopicDefinition.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.grounding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
@@ -29,6 +30,10 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.TOPIC_DEFINITION)
@Entity
@MappedSuperclass
+@JsonSubTypes({
+ @JsonSubTypes.Type(SimpleTopicDefinition.class),
+ @JsonSubTypes.Type(WildcardTopicDefinition.class)
+})
public abstract class TopicDefinition extends UnnamedStreamPipesEntity {
@RdfProperty(StreamPipes.HAS_ACTUAL_TOPIC_NAME)
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TransportProtocol.java b/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TransportProtocol.java
index 3d65d45..36f2d01 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TransportProtocol.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/grounding/TransportProtocol.java
@@ -18,21 +18,23 @@
package org.apache.streampipes.model.grounding;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToOne;
+import javax.persistence.*;
@RdfsClass(StreamPipes.TRANSPORT_PROTOCOL)
@Entity
@MappedSuperclass
+@JsonSubTypes({
+ @JsonSubTypes.Type(JmsTransportProtocol.class),
+ @JsonSubTypes.Type(KafkaTransportProtocol.class),
+ @JsonSubTypes.Type(MqttTransportProtocol.class),
+})
public abstract class TransportProtocol extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 7625791395504335184L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/output/OutputStrategy.java b/streampipes-model/src/main/java/org/apache/streampipes/model/output/OutputStrategy.java
index 5fdedf3..5916039 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/output/OutputStrategy.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/output/OutputStrategy.java
@@ -18,24 +18,30 @@
package org.apache.streampipes.model.output;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToMany;
-
@RdfsClass(StreamPipes.OUTPUT_STRATEGY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(AppendOutputStrategy.class),
+ @JsonSubTypes.Type(CustomOutputStrategy.class),
+ @JsonSubTypes.Type(CustomTransformOutputStrategy.class),
+ @JsonSubTypes.Type(FixedOutputStrategy.class),
+ @JsonSubTypes.Type(KeepOutputStrategy.class),
+ @JsonSubTypes.Type(ListOutputStrategy.class),
+ @JsonSubTypes.Type(TransformOutputStrategy.class),
+ @JsonSubTypes.Type(UserDefinedOutputStrategy.class),
+})
public abstract class OutputStrategy extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 1953204905003864143L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventPropertyQualityDefinition.java b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventPropertyQualityDefinition.java
index c9feb94..19581da 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventPropertyQualityDefinition.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventPropertyQualityDefinition.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.quality;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
@@ -27,6 +28,12 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.EVENT_PROPERTY_QUALITY_DEFINITION)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(Accuracy.class),
+ @JsonSubTypes.Type(MeasurementRange.class),
+ @JsonSubTypes.Type(Precision.class),
+ @JsonSubTypes.Type(Resolution.class),
+})
public abstract class EventPropertyQualityDefinition extends MeasurementProperty /*implements Comparable<EventPropertyQualityDefinition>*/{
private static final long serialVersionUID = -3849772043514528797L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventStreamQualityDefinition.java b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventStreamQualityDefinition.java
index bcb161b..1b50c83 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventStreamQualityDefinition.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/EventStreamQualityDefinition.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.quality;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
@@ -27,6 +28,10 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.EVENT_STREAM_QUALITY_DEFINITION)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(Frequency.class),
+ @JsonSubTypes.Type(Latency.class),
+})
public class EventStreamQualityDefinition extends MeasurementProperty {
private static final long serialVersionUID = 6310763356941481868L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/MeasurementProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/MeasurementProperty.java
index d991a1b..5beb21a 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/quality/MeasurementProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/quality/MeasurementProperty.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.quality;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.vocabulary.SSN;
@@ -26,7 +27,11 @@ import javax.persistence.Entity;
@RdfsClass(SSN.MEASUREMENT_PROPERTY)
@Entity
-public class MeasurementProperty extends UnnamedStreamPipesEntity {
+@JsonSubTypes({
+ @JsonSubTypes.Type(EventPropertyQualityDefinition.class),
+ @JsonSubTypes.Type(EventStreamQualityDefinition.class)
+})
+public abstract class MeasurementProperty extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 8527800469513813552L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/schema/EventProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/schema/EventProperty.java
index 9277395..f3c3bf6 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/schema/EventProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/schema/EventProperty.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.schema;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
@@ -27,21 +28,20 @@ import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.RDFS;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
@RdfsClass(StreamPipes.EVENT_PROPERTY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(EventPropertyList.class),
+ @JsonSubTypes.Type(EventPropertyNested.class),
+ @JsonSubTypes.Type(EventPropertyPrimitive.class)
+})
public abstract class EventProperty extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 7079045979946059387L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/schema/ValueSpecification.java b/streampipes-model/src/main/java/org/apache/streampipes/model/schema/ValueSpecification.java
index 0895c14..7ee076c 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/schema/ValueSpecification.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/schema/ValueSpecification.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.schema;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.vocabulary.StreamPipes;
@@ -28,6 +29,10 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.VALUE_SPECIFICATION)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(QuantitativeValue.class),
+ @JsonSubTypes.Type(Enumeration.class),
+})
public abstract class ValueSpecification extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 1L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingProperty.java
index f8f8b79..2e9ef39 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingProperty.java
@@ -18,23 +18,22 @@
package org.apache.streampipes.model.staticproperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToMany;
-import javax.persistence.OneToOne;
-
@RdfsClass(StreamPipes.MAPPING_PROPERTY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(MappingPropertyNary.class),
+ @JsonSubTypes.Type(MappingPropertyUnary.class)
+})
public abstract class MappingProperty extends StaticProperty {
private static final long serialVersionUID = -7849999126274124847L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingPropertyNary.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingPropertyNary.java
index c00d793..9eaf7f0 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingPropertyNary.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/MappingPropertyNary.java
@@ -22,13 +22,12 @@ import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.ArrayList;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.ArrayList;
+import java.util.List;
@RdfsClass(StreamPipes.MAPPING_PROPERTY_NARY)
@Entity
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/OneOfStaticProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/OneOfStaticProperty.java
index c75103b..30f9b07 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/OneOfStaticProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/OneOfStaticProperty.java
@@ -18,6 +18,7 @@
package org.apache.streampipes.model.staticproperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
@@ -25,6 +26,9 @@ import javax.persistence.Entity;
@RdfsClass(StreamPipes.ONE_OF_STATIC_PROPERTY)
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(RuntimeResolvableOneOfStaticProperty.class),
+})
public class OneOfStaticProperty extends SelectionStaticProperty {
private static final long serialVersionUID = 3483290363677184344L;
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableAnyStaticProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableAnyStaticProperty.java
index 39edfbd..9cb27ca 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableAnyStaticProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableAnyStaticProperty.java
@@ -21,12 +21,11 @@ import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.List;
@RdfsClass(StreamPipes.RUNTIME_RESOLVABLE_ANY_STATIC_PROPERTY)
@Entity
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableOneOfStaticProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableOneOfStaticProperty.java
index 6ca0c4c..d03b8fc 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableOneOfStaticProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/RuntimeResolvableOneOfStaticProperty.java
@@ -21,12 +21,11 @@ import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.vocabulary.StreamPipes;
-import java.util.List;
-
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
+import java.util.List;
@RdfsClass(StreamPipes.RUNTIME_RESOLVABLE_ONE_OF_STATIC_PROPERTY)
@Entity
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/SelectionStaticProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/SelectionStaticProperty.java
index 14b4814..c6e278c 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/SelectionStaticProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/SelectionStaticProperty.java
@@ -17,23 +17,23 @@
*/
package org.apache.streampipes.model.staticproperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
import org.apache.streampipes.model.util.Cloner;
import org.apache.streampipes.vocabulary.StreamPipes;
+import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;
-import javax.persistence.CascadeType;
-import javax.persistence.Entity;
-import javax.persistence.FetchType;
-import javax.persistence.MappedSuperclass;
-import javax.persistence.OneToMany;
-
@RdfsClass(StreamPipes.SELECTION_STATIC_PROPERTY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(AnyStaticProperty.class),
+ @JsonSubTypes.Type(OneOfStaticProperty.class)
+})
public abstract class SelectionStaticProperty extends StaticProperty {
@OneToMany(fetch = FetchType.EAGER,
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/StaticProperty.java b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/StaticProperty.java
index 96fd610..95ba91f 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/StaticProperty.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/staticproperty/StaticProperty.java
@@ -18,8 +18,10 @@
package org.apache.streampipes.model.staticproperty;
+import com.fasterxml.jackson.annotation.JsonSubTypes;
import io.fogsy.empire.annotations.RdfProperty;
import io.fogsy.empire.annotations.RdfsClass;
+import org.apache.streampipes.model.annotation.TsModel;
import org.apache.streampipes.model.base.UnnamedStreamPipesEntity;
import org.apache.streampipes.vocabulary.RDFS;
import org.apache.streampipes.vocabulary.SO;
@@ -31,6 +33,26 @@ import javax.persistence.MappedSuperclass;
@RdfsClass(StreamPipes.STATIC_PROPERTY)
@MappedSuperclass
@Entity
+@JsonSubTypes({
+ @JsonSubTypes.Type(AnyStaticProperty.class),
+ @JsonSubTypes.Type(CodeInputStaticProperty.class),
+ @JsonSubTypes.Type(CollectionStaticProperty.class),
+ @JsonSubTypes.Type(ColorPickerStaticProperty.class),
+ @JsonSubTypes.Type(DomainStaticProperty.class),
+ @JsonSubTypes.Type(FileStaticProperty.class),
+ @JsonSubTypes.Type(FreeTextStaticProperty.class),
+ @JsonSubTypes.Type(MappingPropertyUnary.class),
+ @JsonSubTypes.Type(MappingPropertyNary.class),
+ @JsonSubTypes.Type(MatchingStaticProperty.class),
+ @JsonSubTypes.Type(OneOfStaticProperty.class),
+ @JsonSubTypes.Type(RuntimeResolvableAnyStaticProperty.class),
+ @JsonSubTypes.Type(RuntimeResolvableOneOfStaticProperty.class),
+ @JsonSubTypes.Type(SecretStaticProperty.class),
+ @JsonSubTypes.Type(StaticPropertyAlternative.class),
+ @JsonSubTypes.Type(StaticPropertyAlternatives.class),
+ @JsonSubTypes.Type(StaticPropertyGroup.class),
+})
+@TsModel
public abstract class StaticProperty extends UnnamedStreamPipesEntity {
private static final long serialVersionUID = 2509153122084646025L;
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/streampipes-model/src/main/java/org/apache/streampipes/model/util/RdfIdGenerator.java
similarity index 67%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to streampipes-model/src/main/java/org/apache/streampipes/model/util/RdfIdGenerator.java
index 7f22a1b..a63243d 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/streampipes-model/src/main/java/org/apache/streampipes/model/util/RdfIdGenerator.java
@@ -15,9 +15,18 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
+package org.apache.streampipes.model.util;
-public class SpMediaType {
+import org.apache.commons.lang.RandomStringUtils;
- public static final String JSONLD = "application/ld+json";
+public class RdfIdGenerator {
+
+ private static final String prefix = "urn:streampipes.org:spi:";
+
+ public static String makeRdfId(Object obj) {
+ return prefix
+ + obj.getClass().getSimpleName().toLowerCase()
+ + ":"
+ + RandomStringUtils.randomAlphabetic(6);
+ }
}
diff --git a/streampipes-model/src/test/java/org/apache/streampipes/model/connect/adapter/AdapterDescriptionTest.java b/streampipes-model/src/test/java/org/apache/streampipes/model/connect/adapter/AdapterDescriptionTest.java
index 3aff24d..43ec00d 100644
--- a/streampipes-model/src/test/java/org/apache/streampipes/model/connect/adapter/AdapterDescriptionTest.java
+++ b/streampipes-model/src/test/java/org/apache/streampipes/model/connect/adapter/AdapterDescriptionTest.java
@@ -20,9 +20,9 @@ package org.apache.streampipes.model.connect.adapter;
import org.junit.Before;
import org.junit.Test;
-import org.apache.streampipes.model.connect.rules.Schema.CreateNestedRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.DeleteRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.MoveRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription;
import org.apache.streampipes.model.connect.rules.value.UnitTransformRuleDescription;
import java.util.ArrayList;
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/annotation/JacksonSerialized.java
similarity index 67%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/annotation/JacksonSerialized.java
index 7f22a1b..33af951 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/annotation/JacksonSerialized.java
@@ -15,9 +15,16 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
+package org.apache.streampipes.rest.shared.annotation;
-public class SpMediaType {
+import javax.ws.rs.NameBinding;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
- public static final String JSONLD = "application/ld+json";
+@NameBinding
+@Target({ElementType.TYPE, ElementType.METHOD})
+@Retention(RetentionPolicy.RUNTIME)
+public @interface JacksonSerialized {
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java
index 092e38e..07eac86 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java
@@ -26,6 +26,8 @@ import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
@Provider
@GsonClientModel
@@ -37,4 +39,9 @@ public class GsonClientModelProvider extends GsonJerseyProvider {
protected Gson getGsonSerializer() {
return Utils.getGson();
}
+
+ @Override
+ protected boolean requiredAnnotationsPresent(Annotation[] annotations) {
+ return Arrays.stream(annotations).anyMatch(a -> a.annotationType().equals(GsonClientModel.class));
+ }
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonJerseyProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonJerseyProvider.java
index be3b11c..cd2eac7 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonJerseyProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonJerseyProvider.java
@@ -20,19 +20,14 @@ package org.apache.streampipes.rest.shared.serializer;
import com.google.gson.Gson;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Type;
-
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
+import java.io.*;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.Type;
public abstract class GsonJerseyProvider implements MessageBodyWriter<Object>,
@@ -45,7 +40,7 @@ public abstract class GsonJerseyProvider implements MessageBodyWriter<Object>,
@Override
public boolean isReadable(Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
- return true;
+ return jsonSerialized(mediaType) && requiredAnnotationsPresent(annotations);
}
@Override
@@ -74,7 +69,7 @@ public abstract class GsonJerseyProvider implements MessageBodyWriter<Object>,
@Override
public boolean isWriteable(Class<?> type, Type genericType,
Annotation[] annotations, MediaType mediaType) {
- return true;
+ return jsonSerialized(mediaType) && requiredAnnotationsPresent(annotations);
}
@Override
@@ -105,4 +100,11 @@ public abstract class GsonJerseyProvider implements MessageBodyWriter<Object>,
writer.close();
}
}
+
+ protected boolean jsonSerialized(MediaType mediaType) {
+ return mediaType.getType().equals(MediaType.APPLICATION_JSON_TYPE.getType()) &&
+ mediaType.getSubtype().equals(MediaType.APPLICATION_JSON_TYPE.getSubtype());
+ }
+
+ protected abstract boolean requiredAnnotationsPresent(Annotation[] annotations);
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithIdProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithIdProvider.java
index 7dab403..cbe1ba6 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithIdProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithIdProvider.java
@@ -27,6 +27,8 @@ import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
@Provider
@Priority(1)
@@ -39,4 +41,9 @@ public class GsonWithIdProvider extends GsonJerseyProvider {
protected Gson getGsonSerializer() {
return Utils.getGson();
}
+
+ @Override
+ protected boolean requiredAnnotationsPresent(Annotation[] annotations) {
+ return Arrays.stream(annotations).anyMatch(a -> a.annotationType().equals(GsonWithIds.class));
+ }
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithoutIdProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithoutIdProvider.java
index 12b3633..cd7d5c1 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithoutIdProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonWithoutIdProvider.java
@@ -19,14 +19,16 @@
package org.apache.streampipes.rest.shared.serializer;
import com.google.gson.Gson;
-import org.apache.streampipes.serializers.json.GsonSerializer;
import org.apache.streampipes.rest.shared.annotation.GsonWithoutIds;
+import org.apache.streampipes.serializers.json.GsonSerializer;
import javax.annotation.Priority;
import javax.ws.rs.Consumes;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.ext.Provider;
+import java.lang.annotation.Annotation;
+import java.util.Arrays;
@Provider
@Priority(2)
@@ -39,4 +41,9 @@ public class GsonWithoutIdProvider extends GsonJerseyProvider {
protected Gson getGsonSerializer() {
return GsonSerializer.getGsonWithIds();
}
+
+ @Override
+ protected boolean requiredAnnotationsPresent(Annotation[] annotations) {
+ return Arrays.stream(annotations).anyMatch(a -> a.annotationType().equals(GsonWithoutIds.class));
+ }
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JacksonSerializationFeature.java
similarity index 58%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java
copy to streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JacksonSerializationFeature.java
index 092e38e..4c4bf01 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/GsonClientModelProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JacksonSerializationFeature.java
@@ -15,26 +15,25 @@
* limitations under the License.
*
*/
-
package org.apache.streampipes.rest.shared.serializer;
-import com.google.gson.Gson;
-import org.apache.streampipes.rest.shared.annotation.GsonClientModel;
-import org.apache.streampipes.serializers.json.Utils;
+import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+import org.glassfish.jersey.jackson.JacksonFeature;
-import javax.ws.rs.Consumes;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
+import javax.ws.rs.container.DynamicFeature;
+import javax.ws.rs.container.ResourceInfo;
+import javax.ws.rs.core.FeatureContext;
import javax.ws.rs.ext.Provider;
+import java.util.Arrays;
@Provider
-@GsonClientModel
-@Produces(MediaType.APPLICATION_JSON)
-@Consumes(MediaType.APPLICATION_JSON)
-public class GsonClientModelProvider extends GsonJerseyProvider {
-
- @Override
- protected Gson getGsonSerializer() {
- return Utils.getGson();
+public class JacksonSerializationFeature implements DynamicFeature {
+ @Override
+ public void configure(ResourceInfo resInfo, FeatureContext ctx) {
+ if (Arrays
+ .stream(resInfo.getResourceMethod().getDeclaredAnnotations())
+ .anyMatch(a -> a.annotationType().equals(JacksonSerialized.class))) {
+ ctx.register(JacksonFeature.class);
}
+ }
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JsonLdProvider.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JsonLdProvider.java
index f9ccde5..6c5ab5f 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JsonLdProvider.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/serializer/JsonLdProvider.java
@@ -18,7 +18,6 @@
package org.apache.streampipes.rest.shared.serializer;
import org.apache.commons.io.IOUtils;
-import org.apache.streampipes.rest.shared.annotation.JsonLdSerialized;
import org.apache.streampipes.rest.shared.util.JsonLdUtils;
import org.apache.streampipes.rest.shared.util.SpMediaType;
import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
@@ -36,7 +35,6 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Type;
@Provider
-@JsonLdSerialized
@Produces(SpMediaType.JSONLD)
@Consumes(SpMediaType.JSONLD)
public class JsonLdProvider implements MessageBodyWriter<Object>,
@@ -46,7 +44,7 @@ public class JsonLdProvider implements MessageBodyWriter<Object>,
@Override
public boolean isReadable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return true;
+ return jsonLdSerialized(mediaType);
}
@Override
@@ -60,7 +58,7 @@ public class JsonLdProvider implements MessageBodyWriter<Object>,
@Override
public boolean isWriteable(Class<?> type, Type genericType, Annotation[] annotations, MediaType mediaType) {
- return true;
+ return jsonLdSerialized(mediaType);
}
@Override
@@ -75,4 +73,9 @@ public class JsonLdProvider implements MessageBodyWriter<Object>,
writer.write(JsonLdUtils.toJsonLD(o));
}
}
+
+ protected boolean jsonLdSerialized(MediaType mediaType) {
+ return mediaType.getType().equals(SpMediaType.JSONLD_TYPE.getType()) &&
+ mediaType.getSubtype().equals(SpMediaType.JSONLD_TYPE.getSubtype());
+ }
}
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/JsonLdUtils.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/JsonLdUtils.java
index 788005e..f26cf9d 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/JsonLdUtils.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/JsonLdUtils.java
@@ -18,14 +18,18 @@
package org.apache.streampipes.rest.shared.util;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.apache.streampipes.commons.Utils;
import io.fogsy.empire.core.empire.annotation.InvalidRdfException;
+import org.apache.streampipes.commons.Utils;
+import org.apache.streampipes.model.base.AbstractStreamPipesEntity;
+import org.apache.streampipes.model.base.StreamPipesJsonLdContainer;
import org.apache.streampipes.serializers.jsonld.JsonLdTransformer;
+import org.eclipse.rdf4j.model.Model;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
+import java.util.List;
public class JsonLdUtils {
@@ -33,14 +37,23 @@ public class JsonLdUtils {
public static String toJsonLD(Object o) {
JsonLdTransformer jsonLdTransformer = new JsonLdTransformer();
- String result = null;
try {
- result = Utils.asString(jsonLdTransformer.toJsonLd(o));
+ if (o instanceof List) {
+ return Utils.asString(createJsonLdContainer(jsonLdTransformer,
+ (List<? extends AbstractStreamPipesEntity>) o));
+ } else {
+ return Utils.asString(jsonLdTransformer.toJsonLd(o));
+ }
} catch (IllegalAccessException | InvocationTargetException | InvalidRdfException | ClassNotFoundException e) {
logger.error("Could not serialize JsonLd", e);
}
+ return null;
+ }
+
+ private static Model createJsonLdContainer(JsonLdTransformer jsonLdTransformer, List<? extends AbstractStreamPipesEntity> o)
+ throws InvocationTargetException, ClassNotFoundException, InvalidRdfException, IllegalAccessException {
- return result;
+ return jsonLdTransformer.toJsonLd(new StreamPipesJsonLdContainer(o));
}
public static <T> T fromJsonLd(String json, Class<T> clazz) {
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
index 7f22a1b..dc11779 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
@@ -17,7 +17,11 @@
*/
package org.apache.streampipes.rest.shared.util;
+import javax.ws.rs.core.MediaType;
+
public class SpMediaType {
public static final String JSONLD = "application/ld+json";
+
+ public static final MediaType JSONLD_TYPE = new MediaType("application", "ld+json");
}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyPipelineElement.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyPipelineElement.java
index 2a93575..0f14a6f 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyPipelineElement.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/OntologyPipelineElement.java
@@ -18,7 +18,6 @@
package org.apache.streampipes.rest.impl;
-import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonPrimitive;
@@ -28,21 +27,15 @@ import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.graph.DataSourceDescription;
import org.apache.streampipes.rest.api.IOntologyPipelineElement;
import org.apache.streampipes.rest.shared.annotation.GsonWithIds;
-import org.apache.streampipes.serializers.json.GsonSerializer;
import org.apache.streampipes.storage.management.StorageManager;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
-import javax.ws.rs.GET;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
@Path("/v2/ontology")
public class OntologyPipelineElement extends AbstractRestInterface implements IOntologyPipelineElement {
@@ -146,14 +139,4 @@ public class OntologyPipelineElement extends AbstractRestInterface implements IO
return jsonObj;
}
-
- private Gson getGson(boolean keepIds) {
- if (keepIds) {
- return GsonSerializer.getGsonWithIds();
- } else {
- return GsonSerializer.getGsonWithoutIds();
- }
- }
-
-
}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventConsumer.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventConsumer.java
index 1cafd0d..aec4833 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventConsumer.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventConsumer.java
@@ -26,23 +26,18 @@ import org.apache.streampipes.model.graph.DataSinkDescription;
import org.apache.streampipes.model.graph.DataSinkInvocation;
import org.apache.streampipes.rest.api.IPipelineElement;
import org.apache.streampipes.rest.shared.annotation.GsonWithIds;
+import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+import org.apache.streampipes.rest.shared.util.SpMediaType;
import org.apache.streampipes.storage.api.IPipelineElementDescriptionStorage;
import org.apache.streampipes.storage.rdf4j.filter.Filter;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import java.net.URISyntaxException;
import java.util.List;
import java.util.stream.Collectors;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
@Path("/v2/users/{username}/actions")
public class SemanticEventConsumer extends AbstractRestInterface implements IPipelineElement {
@@ -73,8 +68,8 @@ public class SemanticEventConsumer extends AbstractRestInterface implements IPip
@GET
@Path("/own")
@RequiresAuthentication
- @Produces(MediaType.APPLICATION_JSON)
- @GsonWithIds
+ @Produces({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
+ @JacksonSerialized
@Override
public Response getOwn(@PathParam("username") String username) {
List<DataSinkDescription> secs = Filter.byUri(getPipelineElementRdfStorage().getAllDataSinks(),
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProcessingAgent.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProcessingAgent.java
index 1023fd1..9fa9d12 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProcessingAgent.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProcessingAgent.java
@@ -18,30 +18,24 @@
package org.apache.streampipes.rest.impl;
-import java.net.URISyntaxException;
-import java.util.List;
-import java.util.stream.Collectors;
-
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
-import org.apache.streampipes.model.graph.DataProcessorInvocation;
import org.apache.shiro.authz.annotation.RequiresAuthentication;
-
import org.apache.streampipes.model.client.messages.NotificationType;
import org.apache.streampipes.model.client.messages.Notifications;
import org.apache.streampipes.model.graph.DataProcessorDescription;
+import org.apache.streampipes.model.graph.DataProcessorInvocation;
import org.apache.streampipes.rest.api.IPipelineElement;
import org.apache.streampipes.rest.shared.annotation.GsonWithIds;
+import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+import org.apache.streampipes.rest.shared.util.SpMediaType;
import org.apache.streampipes.storage.rdf4j.filter.Filter;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
+import java.net.URISyntaxException;
+import java.util.List;
+import java.util.stream.Collectors;
+
@Path("/v2/users/{username}/sepas")
public class SemanticEventProcessingAgent extends AbstractRestInterface implements IPipelineElement {
@@ -72,13 +66,16 @@ public class SemanticEventProcessingAgent extends AbstractRestInterface implemen
@GET
@Path("/own")
@RequiresAuthentication
- @Produces(MediaType.APPLICATION_JSON)
- @GsonWithIds
+ @JacksonSerialized
+ @Produces({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
@Override
public Response getOwn(@PathParam("username") String username) {
List<DataProcessorDescription> sepas = Filter.byUri(getPipelineElementRdfStorage().getAllDataProcessors(),
getUserService().getOwnSepaUris(username));
- List<DataProcessorInvocation> si = sepas.stream().map(s -> new DataProcessorInvocation(new DataProcessorInvocation(s))).collect(Collectors.toList());
+ List<DataProcessorInvocation> si = sepas
+ .stream()
+ .map(s -> new DataProcessorInvocation(new DataProcessorInvocation(s)))
+ .collect(Collectors.toList());
return ok(si);
}
diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProducer.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProducer.java
index 01cb1c0..d31d0bf 100644
--- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProducer.java
+++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/SemanticEventProducer.java
@@ -25,22 +25,17 @@ import org.apache.streampipes.model.client.messages.Notifications;
import org.apache.streampipes.model.graph.DataSourceDescription;
import org.apache.streampipes.rest.api.IPipelineElement;
import org.apache.streampipes.rest.shared.annotation.GsonWithIds;
+import org.apache.streampipes.rest.shared.annotation.JacksonSerialized;
+import org.apache.streampipes.rest.shared.util.SpMediaType;
import org.apache.streampipes.storage.rdf4j.filter.Filter;
+import javax.ws.rs.*;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
import java.net.URISyntaxException;
import java.util.List;
import java.util.stream.Collectors;
-import javax.ws.rs.DELETE;
-import javax.ws.rs.FormParam;
-import javax.ws.rs.GET;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.Produces;
-import javax.ws.rs.core.MediaType;
-import javax.ws.rs.core.Response;
-
@Path("/v2/users/{username}/sources")
public class SemanticEventProducer extends AbstractRestInterface implements IPipelineElement {
@@ -90,8 +85,8 @@ public class SemanticEventProducer extends AbstractRestInterface implements IPip
@GET
@Path("/own")
@RequiresAuthentication
- @Produces(MediaType.APPLICATION_JSON)
- @GsonWithIds
+ @Produces({MediaType.APPLICATION_JSON, SpMediaType.JSONLD})
+ @JacksonSerialized
@Override
public Response getOwn(@PathParam("username") String username) {
List<DataSourceDescription> seps = Filter.byUri(getPipelineElementRdfStorage().getAllDataSources(),
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
index 088fa68..70c6ca2 100644
--- a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
+++ b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/json/GsonSerializer.java
@@ -25,12 +25,12 @@ import com.google.gson.GsonBuilder;
import org.apache.streampipes.model.*;
import org.apache.streampipes.model.client.messages.Message;
import org.apache.streampipes.model.connect.adapter.*;
-import org.apache.streampipes.model.connect.rules.Schema.CreateNestedRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.DeleteRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.MoveRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.RenameRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.EventRateTransformationRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.RemoveDuplicatesTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.RenameRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription;
diff --git a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
index c881353..8370ef1 100644
--- a/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
+++ b/streampipes-serializers/src/main/java/org/apache/streampipes/serializers/jsonld/CustomAnnotationProvider.java
@@ -36,12 +36,12 @@ import org.apache.streampipes.model.connect.grounding.ProtocolDescriptionList;
import org.apache.streampipes.model.connect.guess.DomainPropertyProbability;
import org.apache.streampipes.model.connect.guess.DomainPropertyProbabilityList;
import org.apache.streampipes.model.connect.guess.GuessSchema;
-import org.apache.streampipes.model.connect.rules.Schema.CreateNestedRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.DeleteRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.MoveRuleDescription;
-import org.apache.streampipes.model.connect.rules.Schema.RenameRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.EventRateTransformationRuleDescription;
-import org.apache.streampipes.model.connect.rules.Stream.RemoveDuplicatesTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription;
+import org.apache.streampipes.model.connect.rules.schema.RenameRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription;
+import org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription;
import org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription;
import org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription;
@@ -64,8 +64,6 @@ import org.apache.streampipes.model.grounding.SimpleTopicDefinition;
import org.apache.streampipes.model.grounding.TransportFormat;
import org.apache.streampipes.model.grounding.TransportProtocol;
import org.apache.streampipes.model.grounding.WildcardTopicDefinition;
-import org.apache.streampipes.model.graph.*;
-import org.apache.streampipes.model.grounding.*;
import org.apache.streampipes.model.monitoring.ElementStatusInfoSettings;
import org.apache.streampipes.model.output.*;
import org.apache.streampipes.model.quality.*;
diff --git a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
index 69b07c2..fb65a75 100644
--- a/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
+++ b/streampipes-vocabulary/src/main/java/org/apache/streampipes/vocabulary/StreamPipes.java
@@ -395,4 +395,5 @@ public class StreamPipes {
public static final String HAS_CODE_INPUT = NS + "hasCodeInput";
public static final String HAS_CODE_TEMPLATE = NS + "hasCodeTemplate";
public static final String USER_DEFINED_OUTPUT_STRATEGY = NS + "UserDefinedOutputStrategy";
+ public static final String PE_CONFIGURED = NS + "isPeConfigured" ;
}
diff --git a/ui/deployment/dev/config.yml b/ui/deployment/dev/config.yml
index 568a8c6..3efb6ec 100644
--- a/ui/deployment/dev/config.yml
+++ b/ui/deployment/dev/config.yml
@@ -28,3 +28,4 @@ modules:
- spDataExplorer
- spConfiguration
- spDataExplorer2
+ - spEditor2
diff --git a/ui/deployment/modules.yml b/ui/deployment/modules.yml
index 65231fe..515ecde 100644
--- a/ui/deployment/modules.yml
+++ b/ui/deployment/modules.yml
@@ -170,4 +170,19 @@ spDataExplorer2:
description: 'data-explorer-v2'
icon: 'navigation:ic_apps_24px'
homeImage: '/assets/img/home/configuration.png'
+ admin: false
+spEditor2:
+ ng5: True
+ ng1_templateUrl: ''
+ ng1_controller: ''
+ ng5_moduleName: 'EditorModule'
+ ng5_component: 'EditorComponent'
+ ng5_componentPath: '../editor-v2/editor.component'
+ path: './editor-v2/editor.module'
+ link: 'streampipes.editor2'
+ url: '/editor2'
+ title: 'Editor'
+ description: 'editor-v2'
+ icon: 'action:ic_dashboard_24px'
+ homeImage: '/assets/img/home/configuration.png'
admin: false
\ No newline at end of file
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java b/ui/src/app/connect/model/CodeInputStaticProperty.ts
similarity index 62%
copy from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
copy to ui/src/app/connect/model/CodeInputStaticProperty.ts
index 79123f7..20fd079 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
+++ b/ui/src/app/connect/model/CodeInputStaticProperty.ts
@@ -16,18 +16,24 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+import {RdfsClass} from "../../platform-services/tsonld/RdfsClass";
+import {StaticProperty} from "./StaticProperty";
+import {RdfProperty} from "../../platform-services/tsonld/RdfsProperty";
-import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
+@RdfsClass('sp:CodeInputStaticProperty')
+export class CodeInputStaticProperty extends StaticProperty {
-public abstract class SchemaTransformationRuleDescription extends TransformationRuleDescription {
+ @RdfProperty('sp:hasLanguage')
+ public language: string;
- public SchemaTransformationRuleDescription() {
- super();
- }
+ @RdfProperty('sp:hasCodeTemplate')
+ public codeTemplate: string;
+
+ @RdfProperty('hasCodeInput')
+ public value: string;
- public SchemaTransformationRuleDescription(TransformationRuleDescription other) {
+ constructor() {
super();
}
-}
+}
\ No newline at end of file
diff --git a/ui/src/app/connect/model/DataProcessorInvocation.ts b/ui/src/app/connect/model/DataProcessorInvocation.ts
index a484525..2060db8 100644
--- a/ui/src/app/connect/model/DataProcessorInvocation.ts
+++ b/ui/src/app/connect/model/DataProcessorInvocation.ts
@@ -21,16 +21,14 @@ import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
import {DataStreamDescription} from './DataStreamDescription';
import {OutputStrategy} from './output/OutputStrategy';
+import {InvocableStreamPipesEntity} from "./InvocableStreamPipesEntity";
@RdfsClass('sp:DataProcessorInvocation')
-export class DataProcessorInvocation {
+export class DataProcessorInvocation extends InvocableStreamPipesEntity {
@RdfId
public id: string;
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
-
@RdfProperty('sp:produces')
public outputStream: DataStreamDescription;
@@ -41,7 +39,7 @@ export class DataProcessorInvocation {
public category: string[];
constructor(id: string) {
- this.id = id;
+ super(id);
}
}
\ No newline at end of file
diff --git a/ui/src/app/connect/model/DataSinkInvocation.ts b/ui/src/app/connect/model/DataSinkInvocation.ts
index a3d9544..a91ddfc 100644
--- a/ui/src/app/connect/model/DataSinkInvocation.ts
+++ b/ui/src/app/connect/model/DataSinkInvocation.ts
@@ -19,18 +19,16 @@
import {RdfId} from '../../platform-services/tsonld/RdfId';
import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
+import {InvocableStreamPipesEntity} from "./InvocableStreamPipesEntity";
@RdfsClass('sp:DataSinkInvocation')
-export class DataSinkInvocation {
+export class DataSinkInvocation extends InvocableStreamPipesEntity {
@RdfId
public id: string;
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
-
constructor(id: string) {
- this.id = id;
+ super(id);
}
}
diff --git a/ui/src/app/connect/model/DataSinkInvocation.ts b/ui/src/app/connect/model/DataSourceDescription.ts
similarity index 74%
copy from ui/src/app/connect/model/DataSinkInvocation.ts
copy to ui/src/app/connect/model/DataSourceDescription.ts
index a3d9544..b25a8af 100644
--- a/ui/src/app/connect/model/DataSinkInvocation.ts
+++ b/ui/src/app/connect/model/DataSourceDescription.ts
@@ -16,21 +16,19 @@
*
*/
-import {RdfId} from '../../platform-services/tsonld/RdfId';
import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
+import {NamedStreamPipesEntity} from "./NamedStreamPipesEntity";
+import {DataStreamDescription} from "./DataStreamDescription";
-@RdfsClass('sp:DataSinkInvocation')
-export class DataSinkInvocation {
+@RdfsClass('sp:DataSourceDescription')
+export class DataSourceDescription extends NamedStreamPipesEntity {
- @RdfId
- public id: string;
-
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
+ @RdfProperty('sp:produces')
+ public spDataStreams: DataStreamDescription[];
constructor(id: string) {
- this.id = id;
+ super(id);
}
-}
+}
\ No newline at end of file
diff --git a/ui/src/app/connect/model/DataStreamDescription.ts b/ui/src/app/connect/model/DataStreamDescription.ts
index eeb90db..f18acb3 100644
--- a/ui/src/app/connect/model/DataStreamDescription.ts
+++ b/ui/src/app/connect/model/DataStreamDescription.ts
@@ -20,19 +20,14 @@ import {RdfId} from '../../platform-services/tsonld/RdfId';
import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
import {EventSchema} from '../schema-editor/model/EventSchema';
+import {NamedStreamPipesEntity} from "./NamedStreamPipesEntity";
@RdfsClass('sp:DataStream')
-export class DataStreamDescription {
+export class DataStreamDescription extends NamedStreamPipesEntity {
@RdfId
public id: string;
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
-
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#description')
- public description: string;
-
@RdfProperty('sp:hasUri')
public uri: string;
@@ -40,7 +35,7 @@ export class DataStreamDescription {
public eventSchema: EventSchema;
constructor(id: string) {
- this.id = id;
+ super(id);
}
}
diff --git a/ui/src/app/connect/model/InvocableStreamPipesEntity.ts b/ui/src/app/connect/model/InvocableStreamPipesEntity.ts
index 9a9eae5..3d081ae 100644
--- a/ui/src/app/connect/model/InvocableStreamPipesEntity.ts
+++ b/ui/src/app/connect/model/InvocableStreamPipesEntity.ts
@@ -20,12 +20,14 @@ import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
import {NamedStreamPipesEntity} from "./NamedStreamPipesEntity";
import {StaticProperty} from "./StaticProperty";
+import {DataStreamDescription} from "./DataStreamDescription";
+import {EventGrounding} from "./grounding/EventGrounding";
@RdfsClass('sp:InvocableStreamPipesEntity')
export class InvocableStreamPipesEntity extends NamedStreamPipesEntity {
- //@RdfProperty('sp:receivesStream')
- //public inputStreams: Array<SpDataStream>;
+ @RdfProperty('sp:receivesStream')
+ public inputStreams: DataStreamDescription[];
@RdfProperty('sp:hasStaticProperty')
public staticProperties: Array<StaticProperty>;
@@ -33,9 +35,21 @@ export class InvocableStreamPipesEntity extends NamedStreamPipesEntity {
@RdfProperty('sp:belongsTo')
public belongsTo: string;
+ @RdfProperty('sp:supportedGrounding')
+ public supportedGrounding: EventGrounding;
+
@RdfProperty('sp:correspondingPipeline')
public correspondingPipeline: string;
+ @RdfProperty('sp:hasCorrespondingUser')
+ public correspondingUser: string;
+
+ @RdfProperty('sp:requiresStream')
+ public streamRequirements: DataStreamDescription[];
+
+ @RdfProperty('sp:isPeConfigured')
+ public configured: boolean;
+
constructor(id: string) {
super(id);
}
diff --git a/ui/src/app/connect/model/NamedStreamPipesEntity.ts b/ui/src/app/connect/model/NamedStreamPipesEntity.ts
index 7d272da..80cab38 100644
--- a/ui/src/app/connect/model/NamedStreamPipesEntity.ts
+++ b/ui/src/app/connect/model/NamedStreamPipesEntity.ts
@@ -40,6 +40,8 @@ export class NamedStreamPipesEntity {
@RdfProperty('sp:hasApplicationLink')
public applicationLinks: Array<ApplicationLink>;
+ public type: string;
+
constructor(uri: string) {
this.uri = uri;
}
diff --git a/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts b/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts
index 9d6025d..9864e0a 100644
--- a/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts
+++ b/ui/src/app/connect/model/UnnamedStreamPipesEntity.ts
@@ -22,7 +22,6 @@ import { RdfsClass } from '../../platform-services/tsonld/RdfsClass';
@RdfsClass('sp:UnnamedStreamPipesEntity')
export class UnnamedStreamPipesEntity {
-
@RdfId
public id: string;
diff --git a/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java b/ui/src/app/connect/model/grounding/EventGrounding.ts
similarity index 56%
copy from streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java
copy to ui/src/app/connect/model/grounding/EventGrounding.ts
index 1fa0a2a..b66b85c 100644
--- a/streampipes-model-client/src/main/java/org/apache/streampipes/model/client/user/ShiroAuthenticationRequest.java
+++ b/ui/src/app/connect/model/grounding/EventGrounding.ts
@@ -16,31 +16,18 @@
*
*/
-package org.apache.streampipes.model.client.user;
+import {RdfsClass} from "../../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../UnnamedStreamPipesEntity";
+import {TransportProtocol} from "./TransportProtocol";
+import {RdfProperty} from "../../../platform-services/tsonld/RdfsProperty";
+import {TransportFormat} from "./TransportFormat";
-public class ShiroAuthenticationRequest {
+@RdfsClass('sp:DataStreamGrounding')
+export class EventGrounding extends UnnamedStreamPipesEntity {
- private String username;
- private String password;
-
- public ShiroAuthenticationRequest(String username, String password) {
- super();
- this.username = username;
- this.password = password;
- }
-
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
+ @RdfProperty('sp:hasTransportProtocol')
+ public transportProtocols: TransportProtocol[];
-
+ //@RdfProperty('sp:hasTransportFormat')
+ //public transportFormats: TransportFormat[];
}
diff --git a/ui/src/app/connect/model/grounding/JmsTransportProtocol.ts b/ui/src/app/connect/model/grounding/JmsTransportProtocol.ts
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/connect/model/grounding/KafkaTransportProtocol.ts b/ui/src/app/connect/model/grounding/KafkaTransportProtocol.ts
new file mode 100644
index 0000000..e69de29
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/ui/src/app/connect/model/grounding/TopicDefinition.ts
similarity index 67%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to ui/src/app/connect/model/grounding/TopicDefinition.ts
index 7f22a1b..0be2c63 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/ui/src/app/connect/model/grounding/TopicDefinition.ts
@@ -15,9 +15,15 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
-public class SpMediaType {
+import {RdfsClass} from "../../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../UnnamedStreamPipesEntity";
+import {RdfProperty} from "../../../platform-services/tsonld/RdfsProperty";
+
+@RdfsClass('sp:TopicDefinition')
+export class TopicDefinition extends UnnamedStreamPipesEntity {
+
+ @RdfProperty('sp:hasActualTopicName')
+ public actualTopicName: String;
- public static final String JSONLD = "application/ld+json";
}
diff --git a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java b/ui/src/app/connect/model/grounding/TransportFormat.ts
similarity index 64%
rename from streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
rename to ui/src/app/connect/model/grounding/TransportFormat.ts
index 79123f7..1663c8f 100644
--- a/streampipes-model/src/main/java/org/apache/streampipes/model/connect/rules/Schema/SchemaTransformationRuleDescription.java
+++ b/ui/src/app/connect/model/grounding/TransportFormat.ts
@@ -16,18 +16,14 @@
*
*/
-package org.apache.streampipes.model.connect.rules.Schema;
+import {RdfsClass} from "../../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../UnnamedStreamPipesEntity";
+import {RdfProperty} from "../../../platform-services/tsonld/RdfsProperty";
+import {URI} from "../URI";
-import org.apache.streampipes.model.connect.rules.TransformationRuleDescription;
-
-public abstract class SchemaTransformationRuleDescription extends TransformationRuleDescription {
-
- public SchemaTransformationRuleDescription() {
- super();
- }
-
- public SchemaTransformationRuleDescription(TransformationRuleDescription other) {
- super();
- }
+@RdfsClass('sp:TransportFormat')
+export class TransportFormat extends UnnamedStreamPipesEntity {
+ //@RdfProperty('http://www.w3.org/1999/02/22-rdf-syntax-ns#type')
+ //public rdfType: URI[];
}
diff --git a/ui/src/app/connect/model/DataSinkInvocation.ts b/ui/src/app/connect/model/grounding/TransportProtocol.ts
similarity index 61%
copy from ui/src/app/connect/model/DataSinkInvocation.ts
copy to ui/src/app/connect/model/grounding/TransportProtocol.ts
index a3d9544..1208465 100644
--- a/ui/src/app/connect/model/DataSinkInvocation.ts
+++ b/ui/src/app/connect/model/grounding/TransportProtocol.ts
@@ -16,21 +16,17 @@
*
*/
-import {RdfId} from '../../platform-services/tsonld/RdfId';
-import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
-import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
+import {RdfsClass} from "../../../platform-services/tsonld/RdfsClass";
+import {UnnamedStreamPipesEntity} from "../UnnamedStreamPipesEntity";
+import {RdfProperty} from "../../../platform-services/tsonld/RdfsProperty";
+import {TopicDefinition} from "./TopicDefinition";
-@RdfsClass('sp:DataSinkInvocation')
-export class DataSinkInvocation {
+@RdfsClass('sp:TransportProtocol')
+export class TransportProtocol extends UnnamedStreamPipesEntity {
- @RdfId
- public id: string;
-
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
-
- constructor(id: string) {
- this.id = id;
- }
+ @RdfProperty('sp:brokerHostname')
+ public brokerHostname: String;
+ @RdfProperty('sp:topic')
+ public topicDefinition: TopicDefinition;
}
diff --git a/ui/src/app/connect/model/DataSinkInvocation.ts b/ui/src/app/connect/model/output/UserDefinedOutputStrategy.ts
similarity index 63%
copy from ui/src/app/connect/model/DataSinkInvocation.ts
copy to ui/src/app/connect/model/output/UserDefinedOutputStrategy.ts
index a3d9544..5234d82 100644
--- a/ui/src/app/connect/model/DataSinkInvocation.ts
+++ b/ui/src/app/connect/model/output/UserDefinedOutputStrategy.ts
@@ -16,21 +16,18 @@
*
*/
-import {RdfId} from '../../platform-services/tsonld/RdfId';
-import {RdfProperty} from '../../platform-services/tsonld/RdfsProperty';
-import {RdfsClass} from '../../platform-services/tsonld/RdfsClass';
+import {RdfsClass} from "../../../platform-services/tsonld/RdfsClass";
+import {OutputStrategy} from "./OutputStrategy";
+import {RdfProperty} from "../../../platform-services/tsonld/RdfsProperty";
+import {EventProperty} from "../../schema-editor/model/EventProperty";
-@RdfsClass('sp:DataSinkInvocation')
-export class DataSinkInvocation {
+@RdfsClass('sp:UserDefinedOutputStrategy')
+export class UserDefinedOutputStrategy extends OutputStrategy {
- @RdfId
- public id: string;
-
- @RdfProperty('http://www.w3.org/2000/01/rdf-schema#label')
- public label: string;
+ @RdfProperty('sp:producesProperty')
+ public eventProperties: EventProperty [];
constructor(id: string) {
- this.id = id;
+ super(id);
}
-
-}
+}
\ No newline at end of file
diff --git a/ui/src/app/core-model/gen/streampipes-model.ts b/ui/src/app/core-model/gen/streampipes-model.ts
new file mode 100644
index 0000000..36cadc9
--- /dev/null
+++ b/ui/src/app/core-model/gen/streampipes-model.ts
@@ -0,0 +1,2587 @@
+/* tslint:disable */
+/* eslint-disable */
+// @ts-nocheck
+// Generated using typescript-generator version 2.23.603 on 2020-06-02 23:02:02.
+
+export class AbstractStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.base.NamedStreamPipesEntity" | "org.apache.streampipes.model.connect.grounding.ProtocolDescription" | "org.apache.streampipes.model.connect.adapter.AdapterDescription" | "org.apache.streampipes.model.connect.adapter.AdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.Adap [...]
+
+ static fromData(data: AbstractStreamPipesEntity, target?: AbstractStreamPipesEntity): AbstractStreamPipesEntity {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AbstractStreamPipesEntity();
+ instance["@class"] = data["@class"];
+ return instance;
+ }
+
+ static fromDataUnion(data: AbstractStreamPipesEntityUnion): AbstractStreamPipesEntityUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.base.NamedStreamPipesEntity":
+ return NamedStreamPipesEntity.fromData(data);
+ case "org.apache.streampipes.model.base.UnnamedStreamPipesEntity":
+ return UnnamedStreamPipesEntity.fromData(data);
+ }
+ }
+}
+
+export class UnnamedStreamPipesEntity extends AbstractStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.base.UnnamedStreamPipesEntity" | "org.apache.streampipes.model.staticproperty.StaticProperty" | "org.apache.streampipes.model.staticproperty.CodeInputStaticProperty" | "org.apache.streampipes.model.staticproperty.CollectionStaticProperty" | "org.apache.streampipes.model.staticproperty.ColorPickerStaticProperty" | "org.apache.streampipes.model.staticproperty.DomainStaticProperty" | "org.apache.streampipes.model.staticproperty.FileStaticProperty" [...]
+ elementId: string;
+
+ static fromData(data: UnnamedStreamPipesEntity, target?: UnnamedStreamPipesEntity): UnnamedStreamPipesEntity {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new UnnamedStreamPipesEntity();
+ super.fromData(data, instance);
+ instance.elementId = data.elementId;
+ return instance;
+ }
+
+ static fromDataUnion(data: UnnamedStreamPipesEntityUnion): UnnamedStreamPipesEntityUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.base.StreamPipesJsonLdContainer":
+ return StreamPipesJsonLdContainer.fromData(data);
+ case "org.apache.streampipes.model.connect.guess.DomainPropertyProbability":
+ return DomainPropertyProbability.fromData(data);
+ case "org.apache.streampipes.model.connect.guess.DomainPropertyProbabilityList":
+ return DomainPropertyProbabilityList.fromData(data);
+ case "org.apache.streampipes.model.connect.guess.GuessSchema":
+ return GuessSchema.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.TransformationRuleDescription":
+ return TransformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.worker.ConnectWorkerContainer":
+ return ConnectWorkerContainer.fromData(data);
+ case "org.apache.streampipes.model.dashboard.DashboardEntity":
+ return DashboardEntity.fromData(data);
+ case "org.apache.streampipes.model.dashboard.DashboardWidgetSettings":
+ return DashboardWidgetSettings.fromData(data);
+ case "org.apache.streampipes.model.datalake.DataLakeMeasure":
+ return DataLakeMeasure.fromData(data);
+ case "org.apache.streampipes.model.grounding.EventGrounding":
+ return EventGrounding.fromData(data);
+ case "org.apache.streampipes.model.grounding.TopicDefinition":
+ return TopicDefinition.fromData(data);
+ case "org.apache.streampipes.model.grounding.TransportFormat":
+ return TransportFormat.fromData(data);
+ case "org.apache.streampipes.model.grounding.TransportProtocol":
+ return TransportProtocol.fromData(data);
+ case "org.apache.streampipes.model.grounding.WildcardTopicMapping":
+ return WildcardTopicMapping.fromData(data);
+ case "org.apache.streampipes.model.monitoring.ElementStatusInfoSettings":
+ return ElementStatusInfoSettings.fromData(data);
+ case "org.apache.streampipes.model.output.OutputStrategy":
+ return OutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.PropertyRenameRule":
+ return PropertyRenameRule.fromData(data);
+ case "org.apache.streampipes.model.output.TransformOperation":
+ return TransformOperation.fromData(data);
+ case "org.apache.streampipes.model.quality.EventPropertyQualityRequirement":
+ return EventPropertyQualityRequirement.fromData(data);
+ case "org.apache.streampipes.model.quality.EventStreamQualityRequirement":
+ return EventStreamQualityRequirement.fromData(data);
+ case "org.apache.streampipes.model.quality.MeasurementCapability":
+ return MeasurementCapability.fromData(data);
+ case "org.apache.streampipes.model.quality.MeasurementObject":
+ return MeasurementObject.fromData(data);
+ case "org.apache.streampipes.model.quality.MeasurementProperty":
+ return MeasurementProperty.fromData(data);
+ case "org.apache.streampipes.model.runtime.RuntimeOptionsRequest":
+ return RuntimeOptionsRequest.fromData(data);
+ case "org.apache.streampipes.model.schema.EventProperty":
+ return EventProperty.fromData(data);
+ case "org.apache.streampipes.model.schema.EventSchema":
+ return EventSchema.fromData(data);
+ case "org.apache.streampipes.model.schema.ValueSpecification":
+ return ValueSpecification.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.Option":
+ return Option.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.PropertyValueSpecification":
+ return PropertyValueSpecification.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.StaticProperty":
+ return StaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.SupportedProperty":
+ return SupportedProperty.fromData(data);
+ case "org.apache.streampipes.model.template.BoundPipelineElement":
+ return BoundPipelineElement.fromData(data);
+ case "org.apache.streampipes.model.template.PipelineTemplateDescriptionContainer":
+ return PipelineTemplateDescriptionContainer.fromData(data);
+ case "org.apache.streampipes.model.template.PipelineTemplateInvocation":
+ return PipelineTemplateInvocation.fromData(data);
+ }
+ }
+}
+
+export class MeasurementProperty extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.quality.MeasurementProperty" | "org.apache.streampipes.model.quality.EventPropertyQualityDefinition" | "org.apache.streampipes.model.quality.Accuracy" | "org.apache.streampipes.model.quality.MeasurementRange" | "org.apache.streampipes.model.quality.Precision" | "org.apache.streampipes.model.quality.Resolution" | "org.apache.streampipes.model.quality.EventStreamQualityDefinition" | "org.apache.streampipes.model.quality.Frequency" | "org.apache.s [...]
+
+ static fromData(data: MeasurementProperty, target?: MeasurementProperty): MeasurementProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MeasurementProperty();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: MeasurementPropertyUnion): MeasurementPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.quality.EventPropertyQualityDefinition":
+ return EventPropertyQualityDefinition.fromData(data);
+ case "org.apache.streampipes.model.quality.EventStreamQualityDefinition":
+ return EventStreamQualityDefinition.fromData(data);
+ }
+ }
+}
+
+export class EventPropertyQualityDefinition extends MeasurementProperty {
+ "@class": "org.apache.streampipes.model.quality.EventPropertyQualityDefinition" | "org.apache.streampipes.model.quality.Accuracy" | "org.apache.streampipes.model.quality.MeasurementRange" | "org.apache.streampipes.model.quality.Precision" | "org.apache.streampipes.model.quality.Resolution";
+
+ static fromData(data: EventPropertyQualityDefinition, target?: EventPropertyQualityDefinition): EventPropertyQualityDefinition {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventPropertyQualityDefinition();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: EventPropertyQualityDefinitionUnion): EventPropertyQualityDefinitionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.quality.Accuracy":
+ return Accuracy.fromData(data);
+ case "org.apache.streampipes.model.quality.MeasurementRange":
+ return MeasurementRange.fromData(data);
+ case "org.apache.streampipes.model.quality.Precision":
+ return Precision.fromData(data);
+ case "org.apache.streampipes.model.quality.Resolution":
+ return Resolution.fromData(data);
+ }
+ }
+}
+
+export class Accuracy extends EventPropertyQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.Accuracy";
+ quantityValue: number;
+
+ static fromData(data: Accuracy, target?: Accuracy): Accuracy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Accuracy();
+ super.fromData(data, instance);
+ instance.quantityValue = data.quantityValue;
+ return instance;
+ }
+}
+
+export class NamedStreamPipesEntity extends AbstractStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.base.NamedStreamPipesEntity" | "org.apache.streampipes.model.connect.grounding.ProtocolDescription" | "org.apache.streampipes.model.connect.adapter.AdapterDescription" | "org.apache.streampipes.model.connect.adapter.AdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.Adap [...]
+ appId: string;
+ applicationLinks: ApplicationLink[];
+ connectedTo: string[];
+ description: string;
+ dom: string;
+ elementId: string;
+ iconUrl: string;
+ includedAssets: string[];
+ includedLocales: string[];
+ includesAssets: boolean;
+ includesLocales: boolean;
+ name: string;
+ uri: string;
+
+ static fromData(data: NamedStreamPipesEntity, target?: NamedStreamPipesEntity): NamedStreamPipesEntity {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new NamedStreamPipesEntity();
+ super.fromData(data, instance);
+ instance.name = data.name;
+ instance.description = data.description;
+ instance.iconUrl = data.iconUrl;
+ instance.elementId = data.elementId;
+ instance.appId = data.appId;
+ instance.includesAssets = data.includesAssets;
+ instance.includesLocales = data.includesLocales;
+ instance.includedAssets = __getCopyArrayFn(__identity<string>())(data.includedAssets);
+ instance.includedLocales = __getCopyArrayFn(__identity<string>())(data.includedLocales);
+ instance.applicationLinks = __getCopyArrayFn(ApplicationLink.fromData)(data.applicationLinks);
+ instance.connectedTo = __getCopyArrayFn(__identity<string>())(data.connectedTo);
+ instance.uri = data.uri;
+ instance.dom = data.dom;
+ return instance;
+ }
+}
+
+export class AdapterDescription extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.adapter.AdapterDescription" | "org.apache.streampipes.model.connect.adapter.AdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.AdapterStreamDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription";
+ adapterId: string;
+ adapterType: string;
+ category: string[];
+ config: StaticPropertyUnion[];
+ eventGrounding: EventGrounding;
+ icon: string;
+ id: string;
+ rev: string;
+ rules: TransformationRuleDescriptionUnion[];
+ schemaRules: any[];
+ streamRules: any[];
+ userName: string;
+ valueRules: any[];
+
+ static fromData(data: AdapterDescription, target?: AdapterDescription): AdapterDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AdapterDescription();
+ super.fromData(data, instance);
+ instance.id = data.id;
+ instance.rev = data.rev;
+ instance.adapterId = data.adapterId;
+ instance.userName = data.userName;
+ instance.eventGrounding = EventGrounding.fromData(data.eventGrounding);
+ instance.adapterType = data.adapterType;
+ instance.icon = data.icon;
+ instance.config = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.config);
+ instance.rules = __getCopyArrayFn(TransformationRuleDescription.fromDataUnion)(data.rules);
+ instance.category = __getCopyArrayFn(__identity<string>())(data.category);
+ instance.streamRules = __getCopyArrayFn(__identity<any>())(data.streamRules);
+ instance.schemaRules = __getCopyArrayFn(__identity<any>())(data.schemaRules);
+ instance.valueRules = __getCopyArrayFn(__identity<any>())(data.valueRules);
+ return instance;
+ }
+
+ static fromDataUnion(data: AdapterDescriptionUnion): AdapterDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.adapter.AdapterSetDescription":
+ return AdapterSetDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.adapter.AdapterStreamDescription":
+ return AdapterStreamDescription.fromData(data);
+ }
+ }
+}
+
+export class AdapterSetDescription extends AdapterDescription {
+ "@class": "org.apache.streampipes.model.connect.adapter.AdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription";
+ dataSet: SpDataSet;
+ stopPipeline: boolean;
+
+ static fromData(data: AdapterSetDescription, target?: AdapterSetDescription): AdapterSetDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AdapterSetDescription();
+ super.fromData(data, instance);
+ instance.dataSet = SpDataSet.fromData(data.dataSet);
+ instance.stopPipeline = data.stopPipeline;
+ return instance;
+ }
+
+ static fromDataUnion(data: AdapterSetDescriptionUnion): AdapterSetDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription":
+ return GenericAdapterSetDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription":
+ return SpecificAdapterSetDescription.fromData(data);
+ }
+ }
+}
+
+export class AdapterStreamDescription extends AdapterDescription {
+ "@class": "org.apache.streampipes.model.connect.adapter.AdapterStreamDescription" | "org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription";
+ dataStream: SpDataStreamUnion;
+
+ static fromData(data: AdapterStreamDescription, target?: AdapterStreamDescription): AdapterStreamDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AdapterStreamDescription();
+ super.fromData(data, instance);
+ instance.dataStream = SpDataStream.fromDataUnion(data.dataStream);
+ return instance;
+ }
+
+ static fromDataUnion(data: AdapterStreamDescriptionUnion): AdapterStreamDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription":
+ return SpecificAdapterStreamDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription":
+ return SpecificAdapterStreamDescription.fromData(data);
+ }
+ }
+}
+
+export class AdapterType {
+ code: string;
+ description: string;
+ label: string;
+
+ static fromData(data: AdapterType, target?: AdapterType): AdapterType {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AdapterType();
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.code = data.code;
+ return instance;
+ }
+}
+
+export class TransformationRuleDescription extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.rules.TransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.ValueTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription" | "org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription" | "org.apache.streampipes.model.connect.rules.valu [...]
+
+ static fromData(data: TransformationRuleDescription, target?: TransformationRuleDescription): TransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TransformationRuleDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: TransformationRuleDescriptionUnion): TransformationRuleDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.rules.value.ValueTransformationRuleDescription":
+ return ValueTransformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.stream.StreamTransformationRuleDescription":
+ return StreamTransformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.schema.SchemaTransformationRuleDescription":
+ return SchemaTransformationRuleDescription.fromData(data);
+ }
+ }
+}
+
+export class ValueTransformationRuleDescription extends TransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.value.ValueTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription" | "org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription" | "org.apache.streampipes.model.connect.rules.value.UnitTransformRuleDescription";
+
+ static fromData(data: ValueTransformationRuleDescription, target?: ValueTransformationRuleDescription): ValueTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ValueTransformationRuleDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: ValueTransformationRuleDescriptionUnion): ValueTransformationRuleDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription":
+ return AddTimestampRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription":
+ return AddValueTransformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription":
+ return TimestampTranfsformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.value.UnitTransformRuleDescription":
+ return UnitTransformRuleDescription.fromData(data);
+ }
+ }
+}
+
+export class AddTimestampRuleDescription extends ValueTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.value.AddTimestampRuleDescription";
+ runtimeKey: string;
+
+ static fromData(data: AddTimestampRuleDescription, target?: AddTimestampRuleDescription): AddTimestampRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AddTimestampRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ return instance;
+ }
+}
+
+export class AddValueTransformationRuleDescription extends ValueTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.value.AddValueTransformationRuleDescription";
+ runtimeKey: string;
+ staticValue: string;
+
+ static fromData(data: AddValueTransformationRuleDescription, target?: AddValueTransformationRuleDescription): AddValueTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AddValueTransformationRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ instance.staticValue = data.staticValue;
+ return instance;
+ }
+}
+
+export class StaticProperty extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.staticproperty.StaticProperty" | "org.apache.streampipes.model.staticproperty.CodeInputStaticProperty" | "org.apache.streampipes.model.staticproperty.CollectionStaticProperty" | "org.apache.streampipes.model.staticproperty.ColorPickerStaticProperty" | "org.apache.streampipes.model.staticproperty.DomainStaticProperty" | "org.apache.streampipes.model.staticproperty.FileStaticProperty" | "org.apache.streampipes.model.staticproperty.FreeTextStaticP [...]
+ description: string;
+ index: number;
+ internalName: string;
+ label: string;
+ predefined: boolean;
+ staticPropertyType: StaticPropertyType;
+ valueRequired: boolean;
+
+ static fromData(data: StaticProperty, target?: StaticProperty): StaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StaticProperty();
+ super.fromData(data, instance);
+ instance.index = data.index;
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.internalName = data.internalName;
+ instance.valueRequired = data.valueRequired;
+ instance.predefined = data.predefined;
+ instance.staticPropertyType = data.staticPropertyType;
+ return instance;
+ }
+
+ static fromDataUnion(data: StaticPropertyUnion): StaticPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.staticproperty.AnyStaticProperty":
+ return AnyStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.CodeInputStaticProperty":
+ return CodeInputStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.CollectionStaticProperty":
+ return CollectionStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.ColorPickerStaticProperty":
+ return ColorPickerStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.DomainStaticProperty":
+ return DomainStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.FileStaticProperty":
+ return FileStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.FreeTextStaticProperty":
+ return FreeTextStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.MappingPropertyUnary":
+ return MappingPropertyUnary.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.MappingPropertyNary":
+ return MappingPropertyNary.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.MatchingStaticProperty":
+ return MatchingStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.OneOfStaticProperty":
+ return OneOfStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.RuntimeResolvableAnyStaticProperty":
+ return RuntimeResolvableAnyStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty":
+ return RuntimeResolvableOneOfStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.SecretStaticProperty":
+ return SecretStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.StaticPropertyAlternative":
+ return StaticPropertyAlternative.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.StaticPropertyAlternatives":
+ return StaticPropertyAlternatives.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.StaticPropertyGroup":
+ return StaticPropertyGroup.fromData(data);
+ }
+ }
+}
+
+export class SelectionStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.SelectionStaticProperty" | "org.apache.streampipes.model.staticproperty.AnyStaticProperty" | "org.apache.streampipes.model.staticproperty.RuntimeResolvableAnyStaticProperty" | "org.apache.streampipes.model.staticproperty.OneOfStaticProperty" | "org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty";
+ horizontalRendering: boolean;
+ options: Option[];
+
+ static fromData(data: SelectionStaticProperty, target?: SelectionStaticProperty): SelectionStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SelectionStaticProperty();
+ super.fromData(data, instance);
+ instance.options = __getCopyArrayFn(Option.fromData)(data.options);
+ instance.horizontalRendering = data.horizontalRendering;
+ return instance;
+ }
+
+ static fromDataUnion(data: SelectionStaticPropertyUnion): SelectionStaticPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.staticproperty.AnyStaticProperty":
+ return AnyStaticProperty.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.OneOfStaticProperty":
+ return OneOfStaticProperty.fromData(data);
+ }
+ }
+}
+
+export class AnyStaticProperty extends SelectionStaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.AnyStaticProperty" | "org.apache.streampipes.model.staticproperty.RuntimeResolvableAnyStaticProperty";
+
+ static fromData(data: AnyStaticProperty, target?: AnyStaticProperty): AnyStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AnyStaticProperty();
+ super.fromData(data, instance);
+ return instance;
+ }
+}
+
+export class OutputStrategy extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.output.OutputStrategy" | "org.apache.streampipes.model.output.AppendOutputStrategy" | "org.apache.streampipes.model.output.CustomOutputStrategy" | "org.apache.streampipes.model.output.CustomTransformOutputStrategy" | "org.apache.streampipes.model.output.FixedOutputStrategy" | "org.apache.streampipes.model.output.KeepOutputStrategy" | "org.apache.streampipes.model.output.ListOutputStrategy" | "org.apache.streampipes.model.output.TransformOutputS [...]
+ name: string;
+ renameRules: PropertyRenameRule[];
+
+ static fromData(data: OutputStrategy, target?: OutputStrategy): OutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new OutputStrategy();
+ super.fromData(data, instance);
+ instance.name = data.name;
+ instance.renameRules = __getCopyArrayFn(PropertyRenameRule.fromData)(data.renameRules);
+ return instance;
+ }
+
+ static fromDataUnion(data: OutputStrategyUnion): OutputStrategyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.output.AppendOutputStrategy":
+ return AppendOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.CustomOutputStrategy":
+ return CustomOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.CustomTransformOutputStrategy":
+ return CustomTransformOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.FixedOutputStrategy":
+ return FixedOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.KeepOutputStrategy":
+ return KeepOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.ListOutputStrategy":
+ return ListOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.TransformOutputStrategy":
+ return TransformOutputStrategy.fromData(data);
+ case "org.apache.streampipes.model.output.UserDefinedOutputStrategy":
+ return UserDefinedOutputStrategy.fromData(data);
+ }
+ }
+}
+
+export class AppendOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.AppendOutputStrategy";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: AppendOutputStrategy, target?: AppendOutputStrategy): AppendOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new AppendOutputStrategy();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class ApplicationLink extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.ApplicationLink";
+ applicationDescription: string;
+ applicationIconUrl: string;
+ applicationLinkType: string;
+ applicationName: string;
+ applicationUrl: string;
+
+ static fromData(data: ApplicationLink, target?: ApplicationLink): ApplicationLink {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ApplicationLink();
+ super.fromData(data, instance);
+ instance.applicationName = data.applicationName;
+ instance.applicationDescription = data.applicationDescription;
+ instance.applicationUrl = data.applicationUrl;
+ instance.applicationIconUrl = data.applicationIconUrl;
+ instance.applicationLinkType = data.applicationLinkType;
+ return instance;
+ }
+}
+
+export class BoundPipelineElement extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.template.BoundPipelineElement";
+ connectedTo: BoundPipelineElement[];
+ pipelineElementTemplate: InvocableStreamPipesEntityUnion;
+
+ static fromData(data: BoundPipelineElement, target?: BoundPipelineElement): BoundPipelineElement {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new BoundPipelineElement();
+ super.fromData(data, instance);
+ instance.pipelineElementTemplate = InvocableStreamPipesEntity.fromDataUnion(data.pipelineElementTemplate);
+ instance.connectedTo = __getCopyArrayFn(BoundPipelineElement.fromData)(data.connectedTo);
+ return instance;
+ }
+}
+
+export class CodeInputStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.CodeInputStaticProperty";
+ codeTemplate: string;
+ language: string;
+ value: string;
+
+ static fromData(data: CodeInputStaticProperty, target?: CodeInputStaticProperty): CodeInputStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new CodeInputStaticProperty();
+ super.fromData(data, instance);
+ instance.language = data.language;
+ instance.codeTemplate = data.codeTemplate;
+ instance.value = data.value;
+ return instance;
+ }
+}
+
+export class CollectionStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.CollectionStaticProperty";
+ memberType: string;
+ members: StaticPropertyUnion[];
+ staticPropertyTemplate: StaticPropertyUnion;
+
+ static fromData(data: CollectionStaticProperty, target?: CollectionStaticProperty): CollectionStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new CollectionStaticProperty();
+ super.fromData(data, instance);
+ instance.staticPropertyTemplate = StaticProperty.fromDataUnion(data.staticPropertyTemplate);
+ instance.members = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.members);
+ instance.memberType = data.memberType;
+ return instance;
+ }
+}
+
+export class ColorPickerStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.ColorPickerStaticProperty";
+ selectedColor: string;
+
+ static fromData(data: ColorPickerStaticProperty, target?: ColorPickerStaticProperty): ColorPickerStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ColorPickerStaticProperty();
+ super.fromData(data, instance);
+ instance.selectedColor = data.selectedColor;
+ return instance;
+ }
+}
+
+export interface Comparable<T> {
+}
+
+export class ConnectWorkerContainer extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.worker.ConnectWorkerContainer";
+ adapters: AdapterDescriptionUnion[];
+ endpointUrl: string;
+ id: string;
+ protocols: ProtocolDescription[];
+ rev: string;
+
+ static fromData(data: ConnectWorkerContainer, target?: ConnectWorkerContainer): ConnectWorkerContainer {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ConnectWorkerContainer();
+ super.fromData(data, instance);
+ instance.id = data.id;
+ instance.rev = data.rev;
+ instance.endpointUrl = data.endpointUrl;
+ instance.protocols = __getCopyArrayFn(ProtocolDescription.fromData)(data.protocols);
+ instance.adapters = __getCopyArrayFn(AdapterDescription.fromDataUnion)(data.adapters);
+ return instance;
+ }
+}
+
+export class SchemaTransformationRuleDescription extends TransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.schema.SchemaTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription" | "org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription" | "org.apache.streampipes.model.connect.rules.schema.RenameRuleDescription" | "org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription";
+
+ static fromData(data: SchemaTransformationRuleDescription, target?: SchemaTransformationRuleDescription): SchemaTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SchemaTransformationRuleDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: SchemaTransformationRuleDescriptionUnion): SchemaTransformationRuleDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription":
+ return CreateNestedRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription":
+ return DeleteRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.schema.RenameRuleDescription":
+ return RenameRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription":
+ return MoveRuleDescription.fromData(data);
+ }
+ }
+}
+
+export class CreateNestedRuleDescription extends SchemaTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.schema.CreateNestedRuleDescription";
+ runtimeKey: string;
+
+ static fromData(data: CreateNestedRuleDescription, target?: CreateNestedRuleDescription): CreateNestedRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new CreateNestedRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ return instance;
+ }
+}
+
+export class CustomOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.CustomOutputStrategy";
+ availablePropertyKeys: string[];
+ outputRight: boolean;
+ selectedPropertyKeys: string[];
+
+ static fromData(data: CustomOutputStrategy, target?: CustomOutputStrategy): CustomOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new CustomOutputStrategy();
+ super.fromData(data, instance);
+ instance.selectedPropertyKeys = __getCopyArrayFn(__identity<string>())(data.selectedPropertyKeys);
+ instance.outputRight = data.outputRight;
+ instance.availablePropertyKeys = __getCopyArrayFn(__identity<string>())(data.availablePropertyKeys);
+ return instance;
+ }
+}
+
+export class CustomTransformOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.CustomTransformOutputStrategy";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: CustomTransformOutputStrategy, target?: CustomTransformOutputStrategy): CustomTransformOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new CustomTransformOutputStrategy();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class DashboardEntity extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.dashboard.DashboardEntity" | "org.apache.streampipes.model.dashboard.DashboardWidgetModel" | "org.apache.streampipes.model.dashboard.VisualizablePipeline" | "org.apache.streampipes.model.datalake.DataExplorerWidgetModel";
+ id: string;
+ rev: string;
+
+ static fromData(data: DashboardEntity, target?: DashboardEntity): DashboardEntity {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DashboardEntity();
+ super.fromData(data, instance);
+ instance.id = data.id;
+ instance.rev = data.rev;
+ return instance;
+ }
+
+ static fromDataUnion(data: DashboardEntityUnion): DashboardEntityUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.dashboard.DashboardWidgetModel":
+ return DashboardWidgetModel.fromData(data);
+ case "org.apache.streampipes.model.dashboard.VisualizablePipeline":
+ return VisualizablePipeline.fromData(data);
+ case "org.apache.streampipes.model.datalake.DataExplorerWidgetModel":
+ return DataExplorerWidgetModel.fromData(data);
+ }
+ }
+}
+
+export class DashboardWidgetModel extends DashboardEntity {
+ "@class": "org.apache.streampipes.model.dashboard.DashboardWidgetModel";
+ dashboardWidgetSettings: DashboardWidgetSettings;
+ visualizablePipelineId: string;
+ visualizablePipelineTopic: string;
+ widgetId: string;
+
+ static fromData(data: DashboardWidgetModel, target?: DashboardWidgetModel): DashboardWidgetModel {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DashboardWidgetModel();
+ super.fromData(data, instance);
+ instance.widgetId = data.widgetId;
+ instance.dashboardWidgetSettings = DashboardWidgetSettings.fromData(data.dashboardWidgetSettings);
+ instance.visualizablePipelineId = data.visualizablePipelineId;
+ instance.visualizablePipelineTopic = data.visualizablePipelineTopic;
+ return instance;
+ }
+}
+
+export class DashboardWidgetSettings extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.dashboard.DashboardWidgetSettings";
+ config: StaticPropertyUnion[];
+ requiredSchema: EventSchema;
+ widgetDescription: string;
+ widgetIconName: string;
+ widgetLabel: string;
+ widgetName: string;
+
+ static fromData(data: DashboardWidgetSettings, target?: DashboardWidgetSettings): DashboardWidgetSettings {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DashboardWidgetSettings();
+ super.fromData(data, instance);
+ instance.widgetLabel = data.widgetLabel;
+ instance.widgetName = data.widgetName;
+ instance.config = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.config);
+ instance.requiredSchema = EventSchema.fromData(data.requiredSchema);
+ instance.widgetIconName = data.widgetIconName;
+ instance.widgetDescription = data.widgetDescription;
+ return instance;
+ }
+}
+
+export class DataExplorerWidgetModel extends DashboardEntity {
+ "@class": "org.apache.streampipes.model.datalake.DataExplorerWidgetModel";
+ dataLakeMeasure: DataLakeMeasure;
+ selectedKeys: string;
+ widgetId: string;
+ widgetType: string;
+
+ static fromData(data: DataExplorerWidgetModel, target?: DataExplorerWidgetModel): DataExplorerWidgetModel {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataExplorerWidgetModel();
+ super.fromData(data, instance);
+ instance.widgetId = data.widgetId;
+ instance.widgetType = data.widgetType;
+ instance.selectedKeys = data.selectedKeys;
+ instance.dataLakeMeasure = DataLakeMeasure.fromData(data.dataLakeMeasure);
+ return instance;
+ }
+}
+
+export class DataLakeMeasure extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.datalake.DataLakeMeasure";
+ eventSchema: EventSchema;
+ measureName: string;
+
+ static fromData(data: DataLakeMeasure, target?: DataLakeMeasure): DataLakeMeasure {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataLakeMeasure();
+ super.fromData(data, instance);
+ instance.measureName = data.measureName;
+ instance.eventSchema = EventSchema.fromData(data.eventSchema);
+ return instance;
+ }
+}
+
+export class InvocableStreamPipesEntity extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.base.InvocableStreamPipesEntity" | "org.apache.streampipes.model.graph.DataProcessorInvocation" | "org.apache.streampipes.model.graph.DataSinkInvocation";
+ belongsTo: string;
+ configured: boolean;
+ correspondingPipeline: string;
+ correspondingUser: string;
+ inputStreams: SpDataStreamUnion[];
+ staticProperties: StaticPropertyUnion[];
+ statusInfoSettings: ElementStatusInfoSettings;
+ streamRequirements: SpDataStreamUnion[];
+ supportedGrounding: EventGrounding;
+
+ static fromData(data: InvocableStreamPipesEntity, target?: InvocableStreamPipesEntity): InvocableStreamPipesEntity {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new InvocableStreamPipesEntity();
+ super.fromData(data, instance);
+ instance.inputStreams = __getCopyArrayFn(SpDataStream.fromDataUnion)(data.inputStreams);
+ instance.staticProperties = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.staticProperties);
+ instance.belongsTo = data.belongsTo;
+ instance.statusInfoSettings = ElementStatusInfoSettings.fromData(data.statusInfoSettings);
+ instance.supportedGrounding = EventGrounding.fromData(data.supportedGrounding);
+ instance.correspondingPipeline = data.correspondingPipeline;
+ instance.correspondingUser = data.correspondingUser;
+ instance.streamRequirements = __getCopyArrayFn(SpDataStream.fromDataUnion)(data.streamRequirements);
+ instance.configured = data.configured;
+ return instance;
+ }
+
+ static fromDataUnion(data: InvocableStreamPipesEntityUnion): InvocableStreamPipesEntityUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.graph.DataProcessorInvocation":
+ return DataProcessorInvocation.fromData(data);
+ case "org.apache.streampipes.model.graph.DataSinkInvocation":
+ return DataSinkInvocation.fromData(data);
+ }
+ }
+}
+
+export class DataProcessorInvocation extends InvocableStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.graph.DataProcessorInvocation";
+ category: string[];
+ outputStrategies: OutputStrategyUnion[];
+ outputStream: SpDataStreamUnion;
+ pathName: string;
+
+ static fromData(data: DataProcessorInvocation, target?: DataProcessorInvocation): DataProcessorInvocation {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataProcessorInvocation();
+ super.fromData(data, instance);
+ instance.outputStream = SpDataStream.fromDataUnion(data.outputStream);
+ instance.outputStrategies = __getCopyArrayFn(OutputStrategy.fromDataUnion)(data.outputStrategies);
+ instance.pathName = data.pathName;
+ instance.category = __getCopyArrayFn(__identity<string>())(data.category);
+ return instance;
+ }
+}
+
+export class DataProcessorType {
+ code: string;
+ description: string;
+ label: string;
+
+ static fromData(data: DataProcessorType, target?: DataProcessorType): DataProcessorType {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataProcessorType();
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.code = data.code;
+ return instance;
+ }
+}
+
+export class DataSinkInvocation extends InvocableStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.graph.DataSinkInvocation";
+ category: string[];
+
+ static fromData(data: DataSinkInvocation, target?: DataSinkInvocation): DataSinkInvocation {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataSinkInvocation();
+ super.fromData(data, instance);
+ instance.category = __getCopyArrayFn(__identity<string>())(data.category);
+ return instance;
+ }
+}
+
+export class DataSinkType {
+ code: string;
+ description: string;
+ label: string;
+
+ static fromData(data: DataSinkType, target?: DataSinkType): DataSinkType {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DataSinkType();
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.code = data.code;
+ return instance;
+ }
+}
+
+export class DeleteRuleDescription extends SchemaTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.schema.DeleteRuleDescription";
+ runtimeKey: string;
+
+ static fromData(data: DeleteRuleDescription, target?: DeleteRuleDescription): DeleteRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DeleteRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ return instance;
+ }
+}
+
+export class DomainPropertyProbability extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.guess.DomainPropertyProbability";
+ domainProperty: string;
+ probability: string;
+
+ static fromData(data: DomainPropertyProbability, target?: DomainPropertyProbability): DomainPropertyProbability {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DomainPropertyProbability();
+ super.fromData(data, instance);
+ instance.domainProperty = data.domainProperty;
+ instance.probability = data.probability;
+ return instance;
+ }
+}
+
+export class DomainPropertyProbabilityList extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.guess.DomainPropertyProbabilityList";
+ list: DomainPropertyProbability[];
+ runtimeName: string;
+
+ static fromData(data: DomainPropertyProbabilityList, target?: DomainPropertyProbabilityList): DomainPropertyProbabilityList {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DomainPropertyProbabilityList();
+ super.fromData(data, instance);
+ instance.runtimeName = data.runtimeName;
+ instance.list = __getCopyArrayFn(DomainPropertyProbability.fromData)(data.list);
+ return instance;
+ }
+}
+
+export class DomainStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.DomainStaticProperty";
+ requiredClass: string;
+ supportedProperties: SupportedProperty[];
+
+ static fromData(data: DomainStaticProperty, target?: DomainStaticProperty): DomainStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new DomainStaticProperty();
+ super.fromData(data, instance);
+ instance.requiredClass = data.requiredClass;
+ instance.supportedProperties = __getCopyArrayFn(SupportedProperty.fromData)(data.supportedProperties);
+ return instance;
+ }
+}
+
+export class ElementStatusInfoSettings extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.monitoring.ElementStatusInfoSettings";
+ elementIdentifier: string;
+ errorTopic: string;
+ kafkaHost: string;
+ kafkaPort: number;
+ statsTopic: string;
+
+ static fromData(data: ElementStatusInfoSettings, target?: ElementStatusInfoSettings): ElementStatusInfoSettings {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ElementStatusInfoSettings();
+ super.fromData(data, instance);
+ instance.elementIdentifier = data.elementIdentifier;
+ instance.kafkaHost = data.kafkaHost;
+ instance.kafkaPort = data.kafkaPort;
+ instance.errorTopic = data.errorTopic;
+ instance.statsTopic = data.statsTopic;
+ return instance;
+ }
+}
+
+export class ValueSpecification extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.schema.ValueSpecification" | "org.apache.streampipes.model.schema.QuantitativeValue" | "org.apache.streampipes.model.schema.Enumeration";
+
+ static fromData(data: ValueSpecification, target?: ValueSpecification): ValueSpecification {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ValueSpecification();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: ValueSpecificationUnion): ValueSpecificationUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.schema.QuantitativeValue":
+ return QuantitativeValue.fromData(data);
+ case "org.apache.streampipes.model.schema.Enumeration":
+ return Enumeration.fromData(data);
+ }
+ }
+}
+
+export class Enumeration extends ValueSpecification {
+ "@class": "org.apache.streampipes.model.schema.Enumeration";
+ description: string;
+ label: string;
+ runtimeValues: string[];
+
+ static fromData(data: Enumeration, target?: Enumeration): Enumeration {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Enumeration();
+ super.fromData(data, instance);
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.runtimeValues = __getCopyArrayFn(__identity<string>())(data.runtimeValues);
+ return instance;
+ }
+}
+
+export class EventGrounding extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.grounding.EventGrounding";
+ transportFormats: TransportFormat[];
+ transportProtocol: TransportProtocolUnion;
+ transportProtocols: TransportProtocolUnion[];
+
+ static fromData(data: EventGrounding, target?: EventGrounding): EventGrounding {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventGrounding();
+ super.fromData(data, instance);
+ instance.transportProtocols = __getCopyArrayFn(TransportProtocol.fromDataUnion)(data.transportProtocols);
+ instance.transportFormats = __getCopyArrayFn(TransportFormat.fromData)(data.transportFormats);
+ instance.transportProtocol = TransportProtocol.fromDataUnion(data.transportProtocol);
+ return instance;
+ }
+}
+
+export class EventProperty extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.schema.EventProperty" | "org.apache.streampipes.model.schema.EventPropertyList" | "org.apache.streampipes.model.schema.EventPropertyNested" | "org.apache.streampipes.model.schema.EventPropertyPrimitive";
+ description: string;
+ domainProperties: URI[];
+ eventPropertyQualities: EventPropertyQualityDefinitionUnion[];
+ index: number;
+ label: string;
+ propertyScope: string;
+ required: boolean;
+ requiresEventPropertyQualities: EventPropertyQualityRequirement[];
+ runtimeId: string;
+ runtimeName: string;
+
+ static fromData(data: EventProperty, target?: EventProperty): EventProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventProperty();
+ super.fromData(data, instance);
+ instance.label = data.label;
+ instance.description = data.description;
+ instance.runtimeName = data.runtimeName;
+ instance.required = data.required;
+ instance.domainProperties = __getCopyArrayFn(URI.fromData)(data.domainProperties);
+ instance.eventPropertyQualities = __getCopyArrayFn(EventPropertyQualityDefinition.fromDataUnion)(data.eventPropertyQualities);
+ instance.requiresEventPropertyQualities = __getCopyArrayFn(EventPropertyQualityRequirement.fromData)(data.requiresEventPropertyQualities);
+ instance.propertyScope = data.propertyScope;
+ instance.index = data.index;
+ instance.runtimeId = data.runtimeId;
+ return instance;
+ }
+
+ static fromDataUnion(data: EventPropertyUnion): EventPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.schema.EventPropertyList":
+ return EventPropertyList.fromData(data);
+ case "org.apache.streampipes.model.schema.EventPropertyNested":
+ return EventPropertyNested.fromData(data);
+ case "org.apache.streampipes.model.schema.EventPropertyPrimitive":
+ return EventPropertyPrimitive.fromData(data);
+ }
+ }
+}
+
+export class EventPropertyList extends EventProperty {
+ "@class": "org.apache.streampipes.model.schema.EventPropertyList";
+ eventProperty: EventPropertyUnion;
+
+ static fromData(data: EventPropertyList, target?: EventPropertyList): EventPropertyList {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventPropertyList();
+ super.fromData(data, instance);
+ instance.eventProperty = EventProperty.fromDataUnion(data.eventProperty);
+ return instance;
+ }
+}
+
+export class EventPropertyNested extends EventProperty {
+ "@class": "org.apache.streampipes.model.schema.EventPropertyNested";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: EventPropertyNested, target?: EventPropertyNested): EventPropertyNested {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventPropertyNested();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class EventPropertyPrimitive extends EventProperty {
+ "@class": "org.apache.streampipes.model.schema.EventPropertyPrimitive";
+ measurementUnit: URI;
+ runtimeType: string;
+ valueSpecification: ValueSpecificationUnion;
+
+ static fromData(data: EventPropertyPrimitive, target?: EventPropertyPrimitive): EventPropertyPrimitive {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventPropertyPrimitive();
+ super.fromData(data, instance);
+ instance.runtimeType = data.runtimeType;
+ instance.measurementUnit = URI.fromData(data.measurementUnit);
+ instance.valueSpecification = ValueSpecification.fromDataUnion(data.valueSpecification);
+ return instance;
+ }
+}
+
+export class EventPropertyQualityRequirement extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.quality.EventPropertyQualityRequirement";
+ maximumPropertyQuality: EventPropertyQualityDefinitionUnion;
+ minimumPropertyQuality: EventPropertyQualityDefinitionUnion;
+
+ static fromData(data: EventPropertyQualityRequirement, target?: EventPropertyQualityRequirement): EventPropertyQualityRequirement {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventPropertyQualityRequirement();
+ super.fromData(data, instance);
+ instance.minimumPropertyQuality = EventPropertyQualityDefinition.fromDataUnion(data.minimumPropertyQuality);
+ instance.maximumPropertyQuality = EventPropertyQualityDefinition.fromDataUnion(data.maximumPropertyQuality);
+ return instance;
+ }
+}
+
+export class StreamTransformationRuleDescription extends TransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.stream.StreamTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription" | "org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription";
+
+ static fromData(data: StreamTransformationRuleDescription, target?: StreamTransformationRuleDescription): StreamTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StreamTransformationRuleDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: StreamTransformationRuleDescriptionUnion): StreamTransformationRuleDescriptionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription":
+ return EventRateTransformationRuleDescription.fromData(data);
+ case "org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription":
+ return RemoveDuplicatesTransformationRuleDescription.fromData(data);
+ }
+ }
+}
+
+export class EventRateTransformationRuleDescription extends StreamTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.stream.EventRateTransformationRuleDescription";
+ aggregationTimeWindow: number;
+ aggregationType: string;
+
+ static fromData(data: EventRateTransformationRuleDescription, target?: EventRateTransformationRuleDescription): EventRateTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventRateTransformationRuleDescription();
+ super.fromData(data, instance);
+ instance.aggregationTimeWindow = data.aggregationTimeWindow;
+ instance.aggregationType = data.aggregationType;
+ return instance;
+ }
+}
+
+export class EventSchema extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.schema.EventSchema";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: EventSchema, target?: EventSchema): EventSchema {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventSchema();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class EventStreamQualityDefinition extends MeasurementProperty {
+ "@class": "org.apache.streampipes.model.quality.EventStreamQualityDefinition" | "org.apache.streampipes.model.quality.Frequency" | "org.apache.streampipes.model.quality.Latency";
+
+ static fromData(data: EventStreamQualityDefinition, target?: EventStreamQualityDefinition): EventStreamQualityDefinition {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventStreamQualityDefinition();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: EventStreamQualityDefinitionUnion): EventStreamQualityDefinitionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.quality.Frequency":
+ return Frequency.fromData(data);
+ case "org.apache.streampipes.model.quality.Latency":
+ return Latency.fromData(data);
+ }
+ }
+}
+
+export class EventStreamQualityRequirement extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.quality.EventStreamQualityRequirement";
+ maximumStreamQuality: EventStreamQualityDefinitionUnion;
+ minimumStreamQuality: EventStreamQualityDefinitionUnion;
+
+ static fromData(data: EventStreamQualityRequirement, target?: EventStreamQualityRequirement): EventStreamQualityRequirement {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new EventStreamQualityRequirement();
+ super.fromData(data, instance);
+ instance.minimumStreamQuality = EventStreamQualityDefinition.fromDataUnion(data.minimumStreamQuality);
+ instance.maximumStreamQuality = EventStreamQualityDefinition.fromDataUnion(data.maximumStreamQuality);
+ return instance;
+ }
+}
+
+export class FileStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.FileStaticProperty";
+ endpointUrl: string;
+ locationPath: string;
+
+ static fromData(data: FileStaticProperty, target?: FileStaticProperty): FileStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new FileStaticProperty();
+ super.fromData(data, instance);
+ instance.endpointUrl = data.endpointUrl;
+ instance.locationPath = data.locationPath;
+ return instance;
+ }
+}
+
+export class FixedOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.FixedOutputStrategy";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: FixedOutputStrategy, target?: FixedOutputStrategy): FixedOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new FixedOutputStrategy();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class FormatDescription extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.grounding.FormatDescription";
+ config: StaticPropertyUnion[];
+
+ static fromData(data: FormatDescription, target?: FormatDescription): FormatDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new FormatDescription();
+ super.fromData(data, instance);
+ instance.config = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.config);
+ return instance;
+ }
+}
+
+export class FreeTextStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.FreeTextStaticProperty";
+ htmlAllowed: boolean;
+ mapsTo: string;
+ multiLine: boolean;
+ placeholdersSupported: boolean;
+ requiredDatatype: URI;
+ requiredDomainProperty: URI;
+ value: string;
+ valueSpecification: PropertyValueSpecification;
+
+ static fromData(data: FreeTextStaticProperty, target?: FreeTextStaticProperty): FreeTextStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new FreeTextStaticProperty();
+ super.fromData(data, instance);
+ instance.value = data.value;
+ instance.requiredDatatype = URI.fromData(data.requiredDatatype);
+ instance.requiredDomainProperty = URI.fromData(data.requiredDomainProperty);
+ instance.mapsTo = data.mapsTo;
+ instance.multiLine = data.multiLine;
+ instance.htmlAllowed = data.htmlAllowed;
+ instance.placeholdersSupported = data.placeholdersSupported;
+ instance.valueSpecification = PropertyValueSpecification.fromData(data.valueSpecification);
+ return instance;
+ }
+}
+
+export class Frequency extends EventStreamQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.Frequency";
+ quantityValue: number;
+
+ static fromData(data: Frequency, target?: Frequency): Frequency {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Frequency();
+ super.fromData(data, instance);
+ instance.quantityValue = data.quantityValue;
+ return instance;
+ }
+}
+
+export interface GenericAdapterDescription {
+ eventSchema: EventSchema;
+ formatDescription: FormatDescription;
+ protocolDescription: ProtocolDescription;
+ rules: TransformationRuleDescriptionUnion[];
+}
+
+export class GenericAdapterSetDescription extends AdapterSetDescription implements GenericAdapterDescription {
+ "@class": "org.apache.streampipes.model.connect.adapter.GenericAdapterSetDescription";
+ eventSchema: EventSchema;
+ formatDescription: FormatDescription;
+ protocolDescription: ProtocolDescription;
+
+ static fromData(data: GenericAdapterSetDescription, target?: GenericAdapterSetDescription): GenericAdapterSetDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new GenericAdapterSetDescription();
+ super.fromData(data, instance);
+ instance.protocolDescription = ProtocolDescription.fromData(data.protocolDescription);
+ instance.formatDescription = FormatDescription.fromData(data.formatDescription);
+ instance.eventSchema = EventSchema.fromData(data.eventSchema);
+ return instance;
+ }
+}
+
+export class GuessSchema extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.guess.GuessSchema";
+ eventSchema: EventSchema;
+ propertyProbabilityList: DomainPropertyProbabilityList[];
+
+ static fromData(data: GuessSchema, target?: GuessSchema): GuessSchema {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new GuessSchema();
+ super.fromData(data, instance);
+ instance.eventSchema = EventSchema.fromData(data.eventSchema);
+ instance.propertyProbabilityList = __getCopyArrayFn(DomainPropertyProbabilityList.fromData)(data.propertyProbabilityList);
+ return instance;
+ }
+}
+
+export class TransportProtocol extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.grounding.TransportProtocol" | "org.apache.streampipes.model.grounding.JmsTransportProtocol" | "org.apache.streampipes.model.grounding.KafkaTransportProtocol" | "org.apache.streampipes.model.grounding.MqttTransportProtocol";
+ brokerHostname: string;
+ topicDefinition: TopicDefinitionUnion;
+
+ static fromData(data: TransportProtocol, target?: TransportProtocol): TransportProtocol {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TransportProtocol();
+ super.fromData(data, instance);
+ instance.brokerHostname = data.brokerHostname;
+ instance.topicDefinition = TopicDefinition.fromDataUnion(data.topicDefinition);
+ return instance;
+ }
+
+ static fromDataUnion(data: TransportProtocolUnion): TransportProtocolUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.grounding.JmsTransportProtocol":
+ return JmsTransportProtocol.fromData(data);
+ case "org.apache.streampipes.model.grounding.KafkaTransportProtocol":
+ return KafkaTransportProtocol.fromData(data);
+ case "org.apache.streampipes.model.grounding.MqttTransportProtocol":
+ return MqttTransportProtocol.fromData(data);
+ }
+ }
+}
+
+export class JmsTransportProtocol extends TransportProtocol {
+ "@class": "org.apache.streampipes.model.grounding.JmsTransportProtocol";
+ port: number;
+
+ static fromData(data: JmsTransportProtocol, target?: JmsTransportProtocol): JmsTransportProtocol {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new JmsTransportProtocol();
+ super.fromData(data, instance);
+ instance.port = data.port;
+ return instance;
+ }
+}
+
+export class KafkaTransportProtocol extends TransportProtocol {
+ "@class": "org.apache.streampipes.model.grounding.KafkaTransportProtocol";
+ acks: string;
+ batchSize: string;
+ groupId: string;
+ kafkaPort: number;
+ lingerMs: number;
+ messageMaxBytes: string;
+ offset: string;
+ zookeeperHost: string;
+ zookeeperPort: number;
+
+ static fromData(data: KafkaTransportProtocol, target?: KafkaTransportProtocol): KafkaTransportProtocol {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new KafkaTransportProtocol();
+ super.fromData(data, instance);
+ instance.zookeeperHost = data.zookeeperHost;
+ instance.zookeeperPort = data.zookeeperPort;
+ instance.kafkaPort = data.kafkaPort;
+ instance.lingerMs = data.lingerMs;
+ instance.messageMaxBytes = data.messageMaxBytes;
+ instance.acks = data.acks;
+ instance.batchSize = data.batchSize;
+ instance.offset = data.offset;
+ instance.groupId = data.groupId;
+ return instance;
+ }
+}
+
+export class KeepOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.KeepOutputStrategy";
+ eventName: string;
+ keepBoth: boolean;
+
+ static fromData(data: KeepOutputStrategy, target?: KeepOutputStrategy): KeepOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new KeepOutputStrategy();
+ super.fromData(data, instance);
+ instance.eventName = data.eventName;
+ instance.keepBoth = data.keepBoth;
+ return instance;
+ }
+}
+
+export class Latency extends EventStreamQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.Latency";
+ quantityValue: number;
+
+ static fromData(data: Latency, target?: Latency): Latency {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Latency();
+ super.fromData(data, instance);
+ instance.quantityValue = data.quantityValue;
+ return instance;
+ }
+}
+
+export class ListOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.ListOutputStrategy";
+ propertyName: string;
+
+ static fromData(data: ListOutputStrategy, target?: ListOutputStrategy): ListOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ListOutputStrategy();
+ super.fromData(data, instance);
+ instance.propertyName = data.propertyName;
+ return instance;
+ }
+}
+
+export class MappingProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.MappingProperty" | "org.apache.streampipes.model.staticproperty.MappingPropertyUnary" | "org.apache.streampipes.model.staticproperty.MappingPropertyNary";
+ mapsFromOptions: string[];
+ propertyScope: string;
+ requirementSelector: string;
+
+ static fromData(data: MappingProperty, target?: MappingProperty): MappingProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MappingProperty();
+ super.fromData(data, instance);
+ instance.requirementSelector = data.requirementSelector;
+ instance.mapsFromOptions = __getCopyArrayFn(__identity<string>())(data.mapsFromOptions);
+ instance.propertyScope = data.propertyScope;
+ return instance;
+ }
+
+ static fromDataUnion(data: MappingPropertyUnion): MappingPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.staticproperty.MappingPropertyNary":
+ return MappingPropertyNary.fromData(data);
+ case "org.apache.streampipes.model.staticproperty.MappingPropertyUnary":
+ return MappingPropertyUnary.fromData(data);
+ }
+ }
+}
+
+export class MappingPropertyNary extends MappingProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.MappingPropertyNary";
+ selectedProperties: string[];
+
+ static fromData(data: MappingPropertyNary, target?: MappingPropertyNary): MappingPropertyNary {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MappingPropertyNary();
+ super.fromData(data, instance);
+ instance.selectedProperties = __getCopyArrayFn(__identity<string>())(data.selectedProperties);
+ return instance;
+ }
+}
+
+export class MappingPropertyUnary extends MappingProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.MappingPropertyUnary";
+ selectedProperty: string;
+
+ static fromData(data: MappingPropertyUnary, target?: MappingPropertyUnary): MappingPropertyUnary {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MappingPropertyUnary();
+ super.fromData(data, instance);
+ instance.selectedProperty = data.selectedProperty;
+ return instance;
+ }
+}
+
+export class MatchingStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.MatchingStaticProperty";
+ matchLeft: URI;
+ matchRight: URI;
+
+ static fromData(data: MatchingStaticProperty, target?: MatchingStaticProperty): MatchingStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MatchingStaticProperty();
+ super.fromData(data, instance);
+ instance.matchLeft = URI.fromData(data.matchLeft);
+ instance.matchRight = URI.fromData(data.matchRight);
+ return instance;
+ }
+}
+
+export class MeasurementCapability extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.quality.MeasurementCapability";
+ capability: URI;
+
+ static fromData(data: MeasurementCapability, target?: MeasurementCapability): MeasurementCapability {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MeasurementCapability();
+ super.fromData(data, instance);
+ instance.capability = URI.fromData(data.capability);
+ return instance;
+ }
+}
+
+export class MeasurementObject extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.quality.MeasurementObject";
+ measuresObject: URI;
+
+ static fromData(data: MeasurementObject, target?: MeasurementObject): MeasurementObject {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MeasurementObject();
+ super.fromData(data, instance);
+ instance.measuresObject = URI.fromData(data.measuresObject);
+ return instance;
+ }
+}
+
+export class MeasurementRange extends EventPropertyQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.MeasurementRange";
+ maxValue: number;
+ minValue: number;
+
+ static fromData(data: MeasurementRange, target?: MeasurementRange): MeasurementRange {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MeasurementRange();
+ super.fromData(data, instance);
+ instance.minValue = data.minValue;
+ instance.maxValue = data.maxValue;
+ return instance;
+ }
+}
+
+export class MoveRuleDescription extends SchemaTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.schema.MoveRuleDescription";
+ newRuntimeKey: string;
+ oldRuntimeKey: string;
+
+ static fromData(data: MoveRuleDescription, target?: MoveRuleDescription): MoveRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MoveRuleDescription();
+ super.fromData(data, instance);
+ instance.oldRuntimeKey = data.oldRuntimeKey;
+ instance.newRuntimeKey = data.newRuntimeKey;
+ return instance;
+ }
+}
+
+export class MqttTransportProtocol extends TransportProtocol {
+ "@class": "org.apache.streampipes.model.grounding.MqttTransportProtocol";
+ port: number;
+
+ static fromData(data: MqttTransportProtocol, target?: MqttTransportProtocol): MqttTransportProtocol {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new MqttTransportProtocol();
+ super.fromData(data, instance);
+ instance.port = data.port;
+ return instance;
+ }
+}
+
+export class OneOfStaticProperty extends SelectionStaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.OneOfStaticProperty" | "org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty";
+
+ static fromData(data: OneOfStaticProperty, target?: OneOfStaticProperty): OneOfStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new OneOfStaticProperty();
+ super.fromData(data, instance);
+ return instance;
+ }
+
+ static fromDataUnion(data: OneOfStaticPropertyUnion): OneOfStaticPropertyUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty":
+ return RuntimeResolvableOneOfStaticProperty.fromData(data);
+ }
+ }
+}
+
+export class Option extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.staticproperty.Option";
+ internalName: string;
+ name: string;
+ selected: boolean;
+
+ static fromData(data: Option, target?: Option): Option {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Option();
+ super.fromData(data, instance);
+ instance.name = data.name;
+ instance.selected = data.selected;
+ instance.internalName = data.internalName;
+ return instance;
+ }
+}
+
+export class PipelineTemplateDescription extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.template.PipelineTemplateDescription";
+ boundTo: BoundPipelineElement[];
+ pipelineTemplateDescription: string;
+ pipelineTemplateId: string;
+ pipelineTemplateName: string;
+
+ static fromData(data: PipelineTemplateDescription, target?: PipelineTemplateDescription): PipelineTemplateDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new PipelineTemplateDescription();
+ super.fromData(data, instance);
+ instance.boundTo = __getCopyArrayFn(BoundPipelineElement.fromData)(data.boundTo);
+ instance.pipelineTemplateDescription = data.pipelineTemplateDescription;
+ instance.pipelineTemplateId = data.pipelineTemplateId;
+ instance.pipelineTemplateName = data.pipelineTemplateName;
+ return instance;
+ }
+}
+
+export class PipelineTemplateDescriptionContainer extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.template.PipelineTemplateDescriptionContainer";
+ list: PipelineTemplateDescription[];
+
+ static fromData(data: PipelineTemplateDescriptionContainer, target?: PipelineTemplateDescriptionContainer): PipelineTemplateDescriptionContainer {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new PipelineTemplateDescriptionContainer();
+ super.fromData(data, instance);
+ instance.list = __getCopyArrayFn(PipelineTemplateDescription.fromData)(data.list);
+ return instance;
+ }
+}
+
+export class PipelineTemplateInvocation extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.template.PipelineTemplateInvocation";
+ dataSetId: string;
+ kviName: string;
+ pipelineTemplateDescription: PipelineTemplateDescription;
+ pipelineTemplateId: string;
+ staticProperties: StaticPropertyUnion[];
+
+ static fromData(data: PipelineTemplateInvocation, target?: PipelineTemplateInvocation): PipelineTemplateInvocation {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new PipelineTemplateInvocation();
+ super.fromData(data, instance);
+ instance.kviName = data.kviName;
+ instance.dataSetId = data.dataSetId;
+ instance.pipelineTemplateId = data.pipelineTemplateId;
+ instance.pipelineTemplateDescription = PipelineTemplateDescription.fromData(data.pipelineTemplateDescription);
+ instance.staticProperties = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.staticProperties);
+ return instance;
+ }
+}
+
+export class Precision extends EventPropertyQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.Precision";
+ quantityValue: number;
+
+ static fromData(data: Precision, target?: Precision): Precision {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Precision();
+ super.fromData(data, instance);
+ instance.quantityValue = data.quantityValue;
+ return instance;
+ }
+}
+
+export class PropertyRenameRule extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.output.PropertyRenameRule";
+ newRuntimeName: string;
+ runtimeId: string;
+
+ static fromData(data: PropertyRenameRule, target?: PropertyRenameRule): PropertyRenameRule {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new PropertyRenameRule();
+ super.fromData(data, instance);
+ instance.runtimeId = data.runtimeId;
+ instance.newRuntimeName = data.newRuntimeName;
+ return instance;
+ }
+}
+
+export class PropertyValueSpecification extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.staticproperty.PropertyValueSpecification";
+ maxValue: number;
+ minValue: number;
+ step: number;
+
+ static fromData(data: PropertyValueSpecification, target?: PropertyValueSpecification): PropertyValueSpecification {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new PropertyValueSpecification();
+ super.fromData(data, instance);
+ instance.minValue = data.minValue;
+ instance.maxValue = data.maxValue;
+ instance.step = data.step;
+ return instance;
+ }
+}
+
+export class ProtocolDescription extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.connect.grounding.ProtocolDescription";
+ category: string[];
+ config: StaticPropertyUnion[];
+ sourceType: string;
+
+ static fromData(data: ProtocolDescription, target?: ProtocolDescription): ProtocolDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new ProtocolDescription();
+ super.fromData(data, instance);
+ instance.sourceType = data.sourceType;
+ instance.config = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.config);
+ instance.category = __getCopyArrayFn(__identity<string>())(data.category);
+ return instance;
+ }
+}
+
+export class QuantitativeValue extends ValueSpecification {
+ "@class": "org.apache.streampipes.model.schema.QuantitativeValue";
+ maxValue: number;
+ minValue: number;
+ step: number;
+
+ static fromData(data: QuantitativeValue, target?: QuantitativeValue): QuantitativeValue {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new QuantitativeValue();
+ super.fromData(data, instance);
+ instance.minValue = data.minValue;
+ instance.maxValue = data.maxValue;
+ instance.step = data.step;
+ return instance;
+ }
+}
+
+export class RemoveDuplicatesTransformationRuleDescription extends StreamTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.stream.RemoveDuplicatesTransformationRuleDescription";
+ filterTimeWindow: string;
+
+ static fromData(data: RemoveDuplicatesTransformationRuleDescription, target?: RemoveDuplicatesTransformationRuleDescription): RemoveDuplicatesTransformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new RemoveDuplicatesTransformationRuleDescription();
+ super.fromData(data, instance);
+ instance.filterTimeWindow = data.filterTimeWindow;
+ return instance;
+ }
+}
+
+export class RenameRuleDescription extends SchemaTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.schema.RenameRuleDescription";
+ newRuntimeKey: string;
+ oldRuntimeKey: string;
+
+ static fromData(data: RenameRuleDescription, target?: RenameRuleDescription): RenameRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new RenameRuleDescription();
+ super.fromData(data, instance);
+ instance.oldRuntimeKey = data.oldRuntimeKey;
+ instance.newRuntimeKey = data.newRuntimeKey;
+ return instance;
+ }
+}
+
+export class Resolution extends EventPropertyQualityDefinition {
+ "@class": "org.apache.streampipes.model.quality.Resolution";
+ quantityValue: number;
+
+ static fromData(data: Resolution, target?: Resolution): Resolution {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new Resolution();
+ super.fromData(data, instance);
+ instance.quantityValue = data.quantityValue;
+ return instance;
+ }
+}
+
+export class RuntimeOptionsRequest extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.runtime.RuntimeOptionsRequest";
+ appId: string;
+ inputStreams: SpDataStreamUnion[];
+ requestId: string;
+ staticProperties: StaticPropertyUnion[];
+
+ static fromData(data: RuntimeOptionsRequest, target?: RuntimeOptionsRequest): RuntimeOptionsRequest {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new RuntimeOptionsRequest();
+ super.fromData(data, instance);
+ instance.requestId = data.requestId;
+ instance.appId = data.appId;
+ instance.staticProperties = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.staticProperties);
+ instance.inputStreams = __getCopyArrayFn(SpDataStream.fromDataUnion)(data.inputStreams);
+ return instance;
+ }
+}
+
+export class RuntimeResolvableAnyStaticProperty extends AnyStaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.RuntimeResolvableAnyStaticProperty";
+ dependsOn: string[];
+
+ static fromData(data: RuntimeResolvableAnyStaticProperty, target?: RuntimeResolvableAnyStaticProperty): RuntimeResolvableAnyStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new RuntimeResolvableAnyStaticProperty();
+ super.fromData(data, instance);
+ instance.dependsOn = __getCopyArrayFn(__identity<string>())(data.dependsOn);
+ return instance;
+ }
+}
+
+export class RuntimeResolvableOneOfStaticProperty extends OneOfStaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.RuntimeResolvableOneOfStaticProperty";
+ dependsOn: string[];
+
+ static fromData(data: RuntimeResolvableOneOfStaticProperty, target?: RuntimeResolvableOneOfStaticProperty): RuntimeResolvableOneOfStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new RuntimeResolvableOneOfStaticProperty();
+ super.fromData(data, instance);
+ instance.dependsOn = __getCopyArrayFn(__identity<string>())(data.dependsOn);
+ return instance;
+ }
+}
+
+export class SecretStaticProperty extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.SecretStaticProperty";
+ encrypted: boolean;
+ value: string;
+
+ static fromData(data: SecretStaticProperty, target?: SecretStaticProperty): SecretStaticProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SecretStaticProperty();
+ super.fromData(data, instance);
+ instance.value = data.value;
+ instance.encrypted = data.encrypted;
+ return instance;
+ }
+}
+
+export class TopicDefinition extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.grounding.TopicDefinition" | "org.apache.streampipes.model.grounding.SimpleTopicDefinition" | "org.apache.streampipes.model.grounding.WildcardTopicDefinition";
+ actualTopicName: string;
+
+ static fromData(data: TopicDefinition, target?: TopicDefinition): TopicDefinition {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TopicDefinition();
+ super.fromData(data, instance);
+ instance.actualTopicName = data.actualTopicName;
+ return instance;
+ }
+
+ static fromDataUnion(data: TopicDefinitionUnion): TopicDefinitionUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.grounding.SimpleTopicDefinition":
+ return SimpleTopicDefinition.fromData(data);
+ case "org.apache.streampipes.model.grounding.WildcardTopicDefinition":
+ return WildcardTopicDefinition.fromData(data);
+ }
+ }
+}
+
+export class SimpleTopicDefinition extends TopicDefinition {
+ "@class": "org.apache.streampipes.model.grounding.SimpleTopicDefinition";
+
+ static fromData(data: SimpleTopicDefinition, target?: SimpleTopicDefinition): SimpleTopicDefinition {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SimpleTopicDefinition();
+ super.fromData(data, instance);
+ return instance;
+ }
+}
+
+export class SpDataStream extends NamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.SpDataStream" | "org.apache.streampipes.model.SpDataSet";
+ category: string[];
+ eventGrounding: EventGrounding;
+ eventSchema: EventSchema;
+ hasEventStreamQualities: EventStreamQualityDefinitionUnion[];
+ index: number;
+ measurementCapability: MeasurementCapability[];
+ measurementObject: MeasurementObject[];
+ requiresEventStreamQualities: EventStreamQualityRequirement[];
+
+ static fromData(data: SpDataStream, target?: SpDataStream): SpDataStream {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SpDataStream();
+ super.fromData(data, instance);
+ instance.hasEventStreamQualities = __getCopyArrayFn(EventStreamQualityDefinition.fromDataUnion)(data.hasEventStreamQualities);
+ instance.requiresEventStreamQualities = __getCopyArrayFn(EventStreamQualityRequirement.fromData)(data.requiresEventStreamQualities);
+ instance.eventGrounding = EventGrounding.fromData(data.eventGrounding);
+ instance.eventSchema = EventSchema.fromData(data.eventSchema);
+ instance.measurementCapability = __getCopyArrayFn(MeasurementCapability.fromData)(data.measurementCapability);
+ instance.measurementObject = __getCopyArrayFn(MeasurementObject.fromData)(data.measurementObject);
+ instance.index = data.index;
+ instance.category = __getCopyArrayFn(__identity<string>())(data.category);
+ return instance;
+ }
+
+ static fromDataUnion(data: SpDataStreamUnion): SpDataStreamUnion {
+ if (!data) {
+ return data;
+ }
+ switch (data["@class"]) {
+ case "org.apache.streampipes.model.SpDataStream":
+ return SpDataStream.fromData(data);
+ case "org.apache.streampipes.model.SpDataSet":
+ return SpDataSet.fromData(data);
+ }
+ }
+}
+
+export class SpDataSet extends SpDataStream {
+ "@class": "org.apache.streampipes.model.SpDataSet";
+ actualTopicName: string;
+ brokerHostname: string;
+ correspondingPipeline: string;
+ datasetInvocationId: string;
+ supportedGrounding: EventGrounding;
+
+ static fromData(data: SpDataSet, target?: SpDataSet): SpDataSet {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SpDataSet();
+ super.fromData(data, instance);
+ instance.supportedGrounding = EventGrounding.fromData(data.supportedGrounding);
+ instance.datasetInvocationId = data.datasetInvocationId;
+ instance.correspondingPipeline = data.correspondingPipeline;
+ instance.brokerHostname = data.brokerHostname;
+ instance.actualTopicName = data.actualTopicName;
+ return instance;
+ }
+}
+
+export class SpecificAdapterSetDescription extends AdapterSetDescription {
+ "@class": "org.apache.streampipes.model.connect.adapter.SpecificAdapterSetDescription";
+
+ static fromData(data: SpecificAdapterSetDescription, target?: SpecificAdapterSetDescription): SpecificAdapterSetDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SpecificAdapterSetDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+}
+
+export class SpecificAdapterStreamDescription extends AdapterStreamDescription {
+ "@class": "org.apache.streampipes.model.connect.adapter.SpecificAdapterStreamDescription";
+
+ static fromData(data: SpecificAdapterStreamDescription, target?: SpecificAdapterStreamDescription): SpecificAdapterStreamDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SpecificAdapterStreamDescription();
+ super.fromData(data, instance);
+ return instance;
+ }
+}
+
+export class StaticPropertyAlternative extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.StaticPropertyAlternative";
+ selected: boolean;
+ staticProperty: StaticPropertyUnion;
+
+ static fromData(data: StaticPropertyAlternative, target?: StaticPropertyAlternative): StaticPropertyAlternative {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StaticPropertyAlternative();
+ super.fromData(data, instance);
+ instance.selected = data.selected;
+ instance.staticProperty = StaticProperty.fromDataUnion(data.staticProperty);
+ return instance;
+ }
+}
+
+export class StaticPropertyAlternatives extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.StaticPropertyAlternatives";
+ alternatives: StaticPropertyAlternative[];
+
+ static fromData(data: StaticPropertyAlternatives, target?: StaticPropertyAlternatives): StaticPropertyAlternatives {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StaticPropertyAlternatives();
+ super.fromData(data, instance);
+ instance.alternatives = __getCopyArrayFn(StaticPropertyAlternative.fromData)(data.alternatives);
+ return instance;
+ }
+}
+
+export class StaticPropertyGroup extends StaticProperty {
+ "@class": "org.apache.streampipes.model.staticproperty.StaticPropertyGroup";
+ horizontalRendering: boolean;
+ showLabel: boolean;
+ staticProperties: StaticPropertyUnion[];
+
+ static fromData(data: StaticPropertyGroup, target?: StaticPropertyGroup): StaticPropertyGroup {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StaticPropertyGroup();
+ super.fromData(data, instance);
+ instance.staticProperties = __getCopyArrayFn(StaticProperty.fromDataUnion)(data.staticProperties);
+ instance.showLabel = data.showLabel;
+ instance.horizontalRendering = data.horizontalRendering;
+ return instance;
+ }
+}
+
+export class StreamPipesJsonLdContainer extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.base.StreamPipesJsonLdContainer";
+ containedElements: AbstractStreamPipesEntityUnion[];
+
+ static fromData(data: StreamPipesJsonLdContainer, target?: StreamPipesJsonLdContainer): StreamPipesJsonLdContainer {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new StreamPipesJsonLdContainer();
+ super.fromData(data, instance);
+ instance.containedElements = __getCopyArrayFn(AbstractStreamPipesEntity.fromDataUnion)(data.containedElements);
+ return instance;
+ }
+}
+
+export class SupportedProperty extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.staticproperty.SupportedProperty";
+ propertyId: string;
+ value: string;
+ valueRequired: boolean;
+
+ static fromData(data: SupportedProperty, target?: SupportedProperty): SupportedProperty {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new SupportedProperty();
+ super.fromData(data, instance);
+ instance.propertyId = data.propertyId;
+ instance.valueRequired = data.valueRequired;
+ instance.value = data.value;
+ return instance;
+ }
+}
+
+export class TimestampTranfsformationRuleDescription extends ValueTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.value.TimestampTranfsformationRuleDescription";
+ formatString: string;
+ mode: string;
+ multiplier: number;
+ runtimeKey: string;
+
+ static fromData(data: TimestampTranfsformationRuleDescription, target?: TimestampTranfsformationRuleDescription): TimestampTranfsformationRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TimestampTranfsformationRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ instance.mode = data.mode;
+ instance.formatString = data.formatString;
+ instance.multiplier = data.multiplier;
+ return instance;
+ }
+}
+
+export class TransformOperation extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.output.TransformOperation";
+ mappingPropertyInternalName: string;
+ sourceStaticProperty: string;
+ targetValue: string;
+ transformationScope: string;
+
+ static fromData(data: TransformOperation, target?: TransformOperation): TransformOperation {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TransformOperation();
+ super.fromData(data, instance);
+ instance.mappingPropertyInternalName = data.mappingPropertyInternalName;
+ instance.sourceStaticProperty = data.sourceStaticProperty;
+ instance.transformationScope = data.transformationScope;
+ instance.targetValue = data.targetValue;
+ return instance;
+ }
+}
+
+export class TransformOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.TransformOutputStrategy";
+ transformOperations: TransformOperation[];
+
+ static fromData(data: TransformOutputStrategy, target?: TransformOutputStrategy): TransformOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TransformOutputStrategy();
+ super.fromData(data, instance);
+ instance.transformOperations = __getCopyArrayFn(TransformOperation.fromData)(data.transformOperations);
+ return instance;
+ }
+}
+
+export class TransportFormat extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.grounding.TransportFormat";
+ rdfType: URI[];
+
+ static fromData(data: TransportFormat, target?: TransportFormat): TransportFormat {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new TransportFormat();
+ super.fromData(data, instance);
+ instance.rdfType = __getCopyArrayFn(URI.fromData)(data.rdfType);
+ return instance;
+ }
+}
+
+export class URI implements Comparable<URI> {
+
+ static fromData(data: URI, target?: URI): URI {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new URI();
+ return instance;
+ }
+}
+
+export class UnitTransformRuleDescription extends ValueTransformationRuleDescription {
+ "@class": "org.apache.streampipes.model.connect.rules.value.UnitTransformRuleDescription";
+ fromUnitRessourceURL: string;
+ runtimeKey: string;
+ toUnitRessourceURL: string;
+
+ static fromData(data: UnitTransformRuleDescription, target?: UnitTransformRuleDescription): UnitTransformRuleDescription {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new UnitTransformRuleDescription();
+ super.fromData(data, instance);
+ instance.runtimeKey = data.runtimeKey;
+ instance.fromUnitRessourceURL = data.fromUnitRessourceURL;
+ instance.toUnitRessourceURL = data.toUnitRessourceURL;
+ return instance;
+ }
+}
+
+export class UserDefinedOutputStrategy extends OutputStrategy {
+ "@class": "org.apache.streampipes.model.output.UserDefinedOutputStrategy";
+ eventProperties: EventPropertyUnion[];
+
+ static fromData(data: UserDefinedOutputStrategy, target?: UserDefinedOutputStrategy): UserDefinedOutputStrategy {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new UserDefinedOutputStrategy();
+ super.fromData(data, instance);
+ instance.eventProperties = __getCopyArrayFn(EventProperty.fromDataUnion)(data.eventProperties);
+ return instance;
+ }
+}
+
+export class VisualizablePipeline extends DashboardEntity {
+ "@class": "org.apache.streampipes.model.dashboard.VisualizablePipeline";
+ pipelineId: string;
+ schema: EventSchema;
+ topic: string;
+ visualizationName: string;
+
+ static fromData(data: VisualizablePipeline, target?: VisualizablePipeline): VisualizablePipeline {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new VisualizablePipeline();
+ super.fromData(data, instance);
+ instance.pipelineId = data.pipelineId;
+ instance.schema = EventSchema.fromData(data.schema);
+ instance.visualizationName = data.visualizationName;
+ instance.topic = data.topic;
+ return instance;
+ }
+}
+
+export class WildcardTopicDefinition extends TopicDefinition {
+ "@class": "org.apache.streampipes.model.grounding.WildcardTopicDefinition";
+ wildcardTopicMappings: WildcardTopicMapping[];
+ wildcardTopicName: string;
+
+ static fromData(data: WildcardTopicDefinition, target?: WildcardTopicDefinition): WildcardTopicDefinition {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new WildcardTopicDefinition();
+ super.fromData(data, instance);
+ instance.wildcardTopicName = data.wildcardTopicName;
+ instance.wildcardTopicMappings = __getCopyArrayFn(WildcardTopicMapping.fromData)(data.wildcardTopicMappings);
+ return instance;
+ }
+}
+
+export class WildcardTopicMapping extends UnnamedStreamPipesEntity {
+ "@class": "org.apache.streampipes.model.grounding.WildcardTopicMapping";
+ mappedRuntimeName: string;
+ mappingId: string;
+ selectedMapping: string;
+ topicParameterType: string;
+
+ static fromData(data: WildcardTopicMapping, target?: WildcardTopicMapping): WildcardTopicMapping {
+ if (!data) {
+ return data;
+ }
+ const instance = target || new WildcardTopicMapping();
+ super.fromData(data, instance);
+ instance.topicParameterType = data.topicParameterType;
+ instance.mappingId = data.mappingId;
+ instance.mappedRuntimeName = data.mappedRuntimeName;
+ instance.selectedMapping = data.selectedMapping;
+ return instance;
+ }
+}
+
+export type AbstractStreamPipesEntityUnion = NamedStreamPipesEntity | UnnamedStreamPipesEntity;
+
+export type AdapterDescriptionUnion = AdapterSetDescription | AdapterStreamDescription;
+
+export type AdapterSetDescriptionUnion = GenericAdapterSetDescription | SpecificAdapterSetDescription;
+
+export type AdapterStreamDescriptionUnion = SpecificAdapterStreamDescription;
+
+export type DashboardEntityUnion = DashboardWidgetModel | VisualizablePipeline | DataExplorerWidgetModel;
+
+export type EventPropertyQualityDefinitionUnion = Accuracy | MeasurementRange | Precision | Resolution;
+
+export type EventPropertyUnion = EventPropertyList | EventPropertyNested | EventPropertyPrimitive;
+
+export type EventStreamQualityDefinitionUnion = Frequency | Latency;
+
+export type InvocableStreamPipesEntityUnion = DataProcessorInvocation | DataSinkInvocation;
+
+export type MappingPropertyUnion = MappingPropertyNary | MappingPropertyUnary;
+
+export type MeasurementPropertyUnion = EventPropertyQualityDefinition | EventStreamQualityDefinition;
+
+export type OneOfStaticPropertyUnion = RuntimeResolvableOneOfStaticProperty;
+
+export type OutputStrategyUnion = AppendOutputStrategy | CustomOutputStrategy | CustomTransformOutputStrategy | FixedOutputStrategy | KeepOutputStrategy | ListOutputStrategy | TransformOutputStrategy | UserDefinedOutputStrategy;
+
+export type SchemaTransformationRuleDescriptionUnion = CreateNestedRuleDescription | DeleteRuleDescription | RenameRuleDescription | MoveRuleDescription;
+
+export type SelectionStaticPropertyUnion = AnyStaticProperty | OneOfStaticProperty;
+
+export type SpDataStreamUnion = SpDataStream | SpDataSet;
+
+export type StaticPropertyType = "AnyStaticProperty" | "CollectionStaticProperty" | "ColorPickerStaticProperty" | "DomainStaticProperty" | "FreeTextStaticProperty" | "FileStaticProperty" | "MappingPropertyUnary" | "MappingPropertyNary" | "MatchingStaticProperty" | "OneOfStaticProperty" | "RuntimeResolvableAnyStaticProperty" | "RuntimeResolvableOneOfStaticProperty" | "StaticPropertyGroup" | "StaticPropertyAlternatives" | "StaticPropertyAlternative" | "SecretStaticProperty" | "CodeInputSta [...]
+
+export type StaticPropertyUnion = AnyStaticProperty | CodeInputStaticProperty | CollectionStaticProperty | ColorPickerStaticProperty | DomainStaticProperty | FileStaticProperty | FreeTextStaticProperty | MappingPropertyUnary | MappingPropertyNary | MatchingStaticProperty | OneOfStaticProperty | RuntimeResolvableAnyStaticProperty | RuntimeResolvableOneOfStaticProperty | SecretStaticProperty | StaticPropertyAlternative | StaticPropertyAlternatives | StaticPropertyGroup;
+
+export type StreamTransformationRuleDescriptionUnion = EventRateTransformationRuleDescription | RemoveDuplicatesTransformationRuleDescription;
+
+export type TopicDefinitionUnion = SimpleTopicDefinition | WildcardTopicDefinition;
+
+export type TransformationRuleDescriptionUnion = ValueTransformationRuleDescription | StreamTransformationRuleDescription | SchemaTransformationRuleDescription;
+
+export type TransportProtocolUnion = JmsTransportProtocol | KafkaTransportProtocol | MqttTransportProtocol;
+
+export type UnnamedStreamPipesEntityUnion = StreamPipesJsonLdContainer | DomainPropertyProbability | DomainPropertyProbabilityList | GuessSchema | TransformationRuleDescription | ConnectWorkerContainer | DashboardEntity | DashboardWidgetSettings | DataLakeMeasure | EventGrounding | TopicDefinition | TransportFormat | TransportProtocol | WildcardTopicMapping | ElementStatusInfoSettings | OutputStrategy | PropertyRenameRule | TransformOperation | EventPropertyQualityRequirement | EventStre [...]
+
+export type ValueSpecificationUnion = QuantitativeValue | Enumeration;
+
+export type ValueTransformationRuleDescriptionUnion = AddTimestampRuleDescription | AddValueTransformationRuleDescription | TimestampTranfsformationRuleDescription | UnitTransformRuleDescription;
+
+function __getCopyArrayFn<T>(itemCopyFn: (item: T) => T): (array: T[]) => T[] {
+ return (array: T[]) => __copyArray(array, itemCopyFn);
+}
+
+function __copyArray<T>(array: T[], itemCopyFn: (item: T) => T): T[] {
+ return array && array.map(item => item && itemCopyFn(item));
+}
+
+function __getCopyObjectFn<T>(itemCopyFn: (item: T) => T): (object: { [index: string]: T }) => { [index: string]: T } {
+ return (object: { [index: string]: T }) => __copyObject(object, itemCopyFn);
+}
+
+function __copyObject<T>(object: { [index: string]: T }, itemCopyFn: (item: T) => T): { [index: string]: T } {
+ if (!object) {
+ return object;
+ }
+ const result: any = {};
+ for (const key in object) {
+ if (object.hasOwnProperty(key)) {
+ const value = object[key];
+ result[key] = value && itemCopyFn(value);
+ }
+ }
+ return result;
+}
+
+function __identity<T>(): (value: T) => T {
+ return value => value;
+}
diff --git a/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.css b/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.html b/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.html
new file mode 100644
index 0000000..e69de29
diff --git a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java b/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.ts
similarity index 72%
copy from streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
copy to ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.ts
index 7f22a1b..3a31d2c 100644
--- a/streampipes-rest-shared/src/main/java/org/apache/streampipes/rest/shared/util/SpMediaType.java
+++ b/ui/src/app/editor-v2/components/pipeline-assembly/pipeline-assembly.component.ts
@@ -15,9 +15,21 @@
* limitations under the License.
*
*/
-package org.apache.streampipes.rest.shared.util;
-public class SpMediaType {
+import {
+ Component,
+ OnInit,
+} from "@angular/core";
- public static final String JSONLD = "application/ld+json";
-}
+
+@Component({
+ selector: 'pipeline-assembly',
+ templateUrl: './pipeline-assembly.component.html',
+ styleUrls: ['./pipeline-assembly.component.css']
+})
+export class PipelineAssemblyComponent implements OnInit {
+
+ ngOnInit(): void {
+ }
+
+}
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.css b/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html b/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
new file mode 100644
index 0000000..67b171a
--- /dev/null
+++ b/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.html
@@ -0,0 +1,95 @@
+<!--
+ ~ 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.
+ ~
+ -->
+
+<div class="editorIconStandOptions" style="padding:0px;">
+ <div fxFlex="100" fxLayout="row" fxLayoutAlign="start start" style="padding-top:2px;padding-left:10px;">
+
+ <div fxLayoutAlign="start center" fxLayout="row">
+ <div fxLayout="row" style="margin-right: 5px">
+ <i class="material-icons">search</i>
+ <input type="text" ng-model="elementFilter" placeholder="Find Element"
+ style="background-color:#f6f6f6;border: none;border-bottom: solid 2px rgb(27, 20, 100);">
+ </div>
+ <div fxLayout="row">
+ <button mat-button [matMenuTriggerFor]="menu"><i class="material-icons">list</i>Filter by category</button>
+ <mat-menu #menu="matMenu">
+ <button mat-menu-item>
+ <i class="material-icons">done</i> Select all
+ </button>
+ <button mat-menu-item>
+ <i class="material-icons">clear</i> Deselect all
+ </button>
+ </mat-menu>
+<!-- <md-menu-bar>-->
+<!-- <md-menu>-->
+<!-- <button ng-click="$mdOpenMenu()" class="sp-accent">-->
+<!-- <md-icon md-svg-icon="action:ic_view_list_24px"-->
+<!-- class="sp-accent"></md-icon>-->
+<!-- Filter by category-->
+<!-- </button>-->
+<!-- <md-menu-content>-->
+<!-- <md-menu-item class="md-indent">-->
+<!-- <md-icon md-svg-icon="action:ic_done_24px"-->
+<!-- class="sp-accent"></md-icon>-->
+<!-- <md-button ng-click="ctrl.selectAllOptions()"> Select all</md-button>-->
+<!-- </md-menu-item>-->
+<!-- <md-menu-item class="md-indent">-->
+<!-- <md-icon md-svg-icon="content:ic_clear_24px"-->
+<!-- class="sp-accent"></md-icon>-->
+<!-- <md-button ng-click="ctrl.deselectAllOptions()"> Deselect all</md-button>-->
+<!-- </md-menu-item>-->
+<!-- <md-menu-divider></md-menu-divider>-->
+<!-- <div ng-repeat="option in ctrl.availableOptions[ctrl.activeType] | orderBy: 'label'">-->
+<!-- <md-menu-item class="md-indent">-->
+<!-- <md-icon md-svg-icon="action:ic_visibility_24px"-->
+<!-- class="sp-accent"-->
+<!-- ng-if="ctrl.optionSelected(option)"></md-icon>-->
+<!-- <md-icon md-svg-icon="action:ic_visibility_off_24px"-->
+<!-- class="sp-accent"-->
+<!-- ng-if="!ctrl.optionSelected(option)"></md-icon>-->
+<!-- <md-button ng-click="ctrl.toggleFilter(option)"> {{option.label}}-->
+<!-- </md-button>-->
+<!-- </md-menu-item>-->
+<!-- </div>-->
+<!-- </md-menu-content>-->
+<!-- </md-menu>-->
+<!-- </md-menu-bar>-->
+ </div>
+ </div>
+ </div>
+</div>
+<div flex id="editor-icon-stand" class="icon-stand" *ngIf="currentElements">
+ <span id="{{ element.name }}" (mouseenter)="updateMouseOver(element.name)"
+ (mouseleave)="updateMouseOver('')"
+ *ngFor="let element of currentElements"
+ my-data-bind class="draggable-icon tt"
+ [ngClass]="element.type">
+ <span id="container" style="position:relative;display:block;width:80px;height:80px;">
+ <pipeline-element id="pe-icon-stand-{{ element.appId }}" style="margin-left:-3%" [iconStandSize]="true" [pipelineElement]="element"
+ [preview]="false"></pipeline-element>
+ <span style="display:block;width:100%;height:100%;position:absolute; top:0; left:0;"
+ ng-if="currentElementName==element.name">
+ <span class="help-button-icon-stand" style="z-index:10"><md-button
+ ng-click="openHelpDialog(element)"
+ class="md-icon-button"
+ style="margin:0px;font-size:20px;">?</md-button>
+ </span>
+ </span>
+ </span>
+ </span>
+</div>
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.ts b/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.ts
new file mode 100644
index 0000000..cc6bc5c
--- /dev/null
+++ b/ui/src/app/editor-v2/components/pipeline-element-icon-stand/pipeline-element-icon-stand.component.ts
@@ -0,0 +1,107 @@
+/*
+ * 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.
+ *
+ */
+
+import {
+ Component, Input,
+ OnInit,
+} from "@angular/core";
+import * as angular from "angular";
+import {RestApi} from "../../../services/rest-api.service";
+
+
+@Component({
+ selector: 'pipeline-element-icon-stand',
+ templateUrl: './pipeline-element-icon-stand.component.html',
+ styleUrls: ['./pipeline-element-icon-stand.component.css']
+})
+export class PipelineElementIconStandComponent implements OnInit {
+
+ @Input()
+ activeType: string;
+
+ @Input()
+ currentElements: Array<any>;
+
+ elementFilter: string;
+ availableOptions: any = [];
+ selectedOptions: any = [];
+
+ constructor(private RestApi: RestApi) {
+
+ }
+
+ ngOnInit(): void {
+ this.loadOptions(this.activeType);
+ }
+
+ openHelpDialog(pipelineElement) {
+ //this.EditorDialogManager.openHelpDialog(pipelineElement);
+ }
+
+ updateMouseOver(elementName) {
+ //this.currentElementName = elementName;
+ }
+
+ loadOptions(type?) {
+ this.RestApi.getEpCategories()
+ .then(msg => {
+ let s = msg;
+ this.handleCategoriesSuccess("stream", s);
+ this.handleCategoriesSuccess("set", s);
+ });
+
+ this.RestApi.getEpaCategories()
+ .then(s => this.handleCategoriesSuccess("sepa", s));
+
+ this.RestApi.getEcCategories()
+ .then(s => this.handleCategoriesSuccess("action", s));
+
+ };
+
+ getOptions(type) {
+ this.selectAllOptions();
+ //return this.availableOptions[type];
+ }
+
+
+ handleCategoriesSuccess(type, result) {
+ this.availableOptions[type] = result.data;
+ this.selectAllOptions();
+ }
+
+ toggleFilter(option) {
+ this.selectedOptions = [];
+ this.selectedOptions.push(option.type);
+ }
+
+ optionSelected(option) {
+ return this.selectedOptions.indexOf(option.type) > -1;
+ }
+
+ selectAllOptions() {
+ this.selectedOptions = [];
+ angular.forEach(this.availableOptions[this.activeType], o => {
+ this.selectedOptions.push(o.type);
+ });
+ }
+
+ deselectAllOptions() {
+ this.selectedOptions = [];
+ }
+
+}
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.css b/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.html b/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.html
new file mode 100644
index 0000000..0c579e2
--- /dev/null
+++ b/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.html
@@ -0,0 +1,22 @@
+<!--
+ ~ 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.
+ ~
+ -->
+
+<img src="{{iconUrl}}" *ngIf="showImage" style="{{iconSizeCss()}}">
+<span *ngIf="!showImage" class="element-text-icon">
+ {{iconText}}
+</span>
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.ts b/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.ts
new file mode 100644
index 0000000..e6dc952
--- /dev/null
+++ b/ui/src/app/editor-v2/components/pipeline-element/pipeline-element.component.ts
@@ -0,0 +1,98 @@
+/*
+ * 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.
+ *
+ */
+
+import {
+ Component, Input,
+ OnInit,
+} from "@angular/core";
+import * as angular from "angular";
+import {RestApi} from "../../../services/rest-api.service";
+import {ElementIconText} from "../../../services/get-element-icon-text.service";
+import {ImageChecker} from "../../../services/image-checker.service";
+
+
+@Component({
+ selector: 'pipeline-element',
+ templateUrl: './pipeline-element.component.html',
+ styleUrls: ['./pipeline-element.component.css']
+})
+export class PipelineElementComponent implements OnInit {
+
+ showImage: any;
+ iconText: any;
+
+ @Input()
+ pipelineElement: any;
+
+ @Input()
+ preview: any;
+
+ @Input()
+ iconSize: any;
+
+ @Input()
+ iconStandSize: any;
+
+ iconUrl: any;
+
+ constructor(private ImageChecker: ImageChecker,
+ private RestApi: RestApi,
+ private ElementIconText: ElementIconText) {
+
+ }
+
+ ngOnInit(): void {
+ console.log(this.pipelineElement);
+ this.iconText = this.ElementIconText.getElementIconText(this.pipelineElement.name);
+ this.checkImageAvailable();
+ }
+
+ checkImageAvailable() {
+ if (this.pipelineElement.includesAssets) {
+ this.fetchImage(this.makeAssetIconUrl())
+ } else {
+ this.fetchImage(this.pipelineElement.iconUrl);
+ }
+ }
+
+ fetchImage(imageUrl) {
+ this.ImageChecker.imageExists(imageUrl, (exists) => {
+ this.iconUrl = imageUrl;
+ this.showImage = exists;
+ })
+ }
+
+ makeAssetIconUrl() {
+ return this.RestApi.getAssetUrl(this.pipelineElement.appId) +"/icon";
+ }
+
+ iconSizeCss() {
+ if (this.iconSize) {
+ return 'width:35px;height:35px;';
+ }
+ else if (this.preview) {
+ return 'width:50px;height:50px;';
+ } else if (this.iconStandSize) {
+ return 'width:50px;height:50px;margin-top:-5px;'
+ } else {
+ return 'width:70px;height:70px;';
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/editor.component.css b/ui/src/app/editor-v2/editor.component.css
new file mode 100644
index 0000000..e69de29
diff --git a/ui/src/app/editor-v2/editor.component.html b/ui/src/app/editor-v2/editor.component.html
new file mode 100644
index 0000000..152ea70
--- /dev/null
+++ b/ui/src/app/editor-v2/editor.component.html
@@ -0,0 +1,43 @@
+<!--
+ ~ 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.
+ ~
+ -->
+
+<div fxLayout="column" class="page-container">
+ <div fxLayout="row" style="padding:0px;background-color:#f6f6f6;">
+ <div fxFlex="100" style="line-height:24px;border-bottom:1px solid #ccc">
+ <div fxFlex="100" fxLayout="row">
+ <div fxFlex fxLayoutAlign="start center">
+ <mat-tab-group [selectedIndex]="selectedIndex" (selectedIndexChange)="selectPipelineElements($event)">
+ <mat-tab *ngFor="let tab of tabs" label="{{tab.title}}"></mat-tab>
+ </mat-tab-group>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="fixed-height page-container-padding-inner" fxLayout="column" fxFlex="100">
+ <div id="shepherd-test"
+ style="background-color:#f6f6f6;padding:0px;border-bottom:1px solid #ffffff">
+ <pipeline-element-icon-stand [activeType]="activeType"
+ [currentElements]="currentElements"
+ element-filter="ctrl.elementFilter">
+ </pipeline-element-icon-stand>
+ </div>
+<!-- <pipeline-assembly raw-pipeline-model="ctrl.rawPipelineModel" all-elements="ctrl.allElements"-->
+<!-- current-modified-pipeline-id="ctrl.currentModifiedPipelineId"></pipeline-assembly>-->
+ </div>
+</div>
diff --git a/ui/src/app/editor-v2/editor.component.ts b/ui/src/app/editor-v2/editor.component.ts
new file mode 100644
index 0000000..68a54ea
--- /dev/null
+++ b/ui/src/app/editor-v2/editor.component.ts
@@ -0,0 +1,104 @@
+/*
+ * 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.
+ *
+ */
+
+import {Component, OnInit} from "@angular/core";
+import {EditorService} from "./services/editor.service";
+import {DataStreamDescription} from "../connect/model/DataStreamDescription";
+import {DataSinkInvocation} from "../connect/model/DataSinkInvocation";
+import {DataSourceDescription} from "../connect/model/DataSourceDescription";
+import {DataProcessorInvocation} from "../core-model/gen/streampipes-model";
+
+@Component({
+ selector: 'editor',
+ templateUrl: './editor.component.html',
+ styleUrls: ['./editor.component.css']
+})
+export class EditorComponent implements OnInit {
+
+ selectedIndex: number = 1;
+ activeType: string = "stream";
+
+ availableDataStreams: DataStreamDescription[] = [];
+ availableDataProcessors: DataProcessorInvocation[] = [];
+ availableDataSinks: DataSinkInvocation[] = [];
+
+ allElements: any = [];
+ currentElements: any = [];
+
+ tabs = [
+ {
+ title: 'Data Sets',
+ type: 'set',
+ },
+ {
+ title: 'Data Streams',
+ type: 'stream',
+ },
+ {
+ title: 'Data Processors',
+ type: 'processor',
+ },
+ {
+ title: 'Data Sinks',
+ type: 'sink',
+ }
+ ];
+
+ constructor(private editorService: EditorService) {
+ }
+
+ public ngOnInit() {
+ this.editorService.getDataProcessors().subscribe(processors => {
+ //processors.forEach(processor => processor.type = "processor");
+ this.availableDataProcessors = processors;
+ console.log(processors);
+ this.allElements["processor"] = this.availableDataProcessors;
+ });
+ // this.editorService.getDataSources().subscribe(sources => {
+ // this.availableDataStreams = this.collectStreams(sources);
+ // this.allElements["stream"] = this.availableDataStreams;
+ // });
+ // this.editorService.getDataSinks().subscribe(sinks => {
+ // sinks.forEach(processor => processor.type = "sink");
+ // this.availableDataSinks = sinks;
+ // this.allElements["sink"] = this.availableDataSinks;
+ // })
+ }
+
+ private collectStreams(sources: Array<DataSourceDescription>) {
+ let streams: DataStreamDescription[] = [];
+ sources.forEach(source => {
+ if (!Array.isArray(source.spDataStreams)) {
+ source.spDataStreams = [source.spDataStreams];
+ }
+ source.spDataStreams.forEach(stream => {
+ stream.type = "stream";
+ streams.push(stream);
+ });
+ });
+ return streams;
+ }
+
+
+ selectPipelineElements(index : number) {
+ this.selectedIndex = index;
+ this.activeType = this.tabs[index].type;
+ this.currentElements = this.allElements[this.activeType];
+ }
+
+}
diff --git a/ui/src/app/editor-v2/editor.module.ts b/ui/src/app/editor-v2/editor.module.ts
new file mode 100644
index 0000000..dd4e8d8
--- /dev/null
+++ b/ui/src/app/editor-v2/editor.module.ts
@@ -0,0 +1,84 @@
+/*
+ * 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.
+ *
+ */
+
+import {NgModule} from '@angular/core';
+import {CommonModule} from '@angular/common';
+import {FlexLayoutModule} from '@angular/flex-layout';
+import {GridsterModule} from 'angular-gridster2';
+import {MatTabsModule} from "@angular/material/tabs";
+import {CustomMaterialModule} from "../CustomMaterial/custom-material.module";
+import {FormsModule} from "@angular/forms";
+import {ElementIconText} from "../services/get-element-icon-text.service";
+import {InjectableRxStompConfig, RxStompService, rxStompServiceFactory} from "@stomp/ng2-stompjs";
+import {SemanticTypeUtilsService} from '../core-services/semantic-type/semantic-type-utils.service';
+import {EditorComponent} from "./editor.component";
+import {ConnectModule} from "../connect/connect.module";
+import {EditorService} from "./services/editor.service";
+import {PipelineElementIconStandComponent} from "./components/pipeline-element-icon-stand/pipeline-element-icon-stand.component";
+import {PipelineAssemblyComponent} from "./components/pipeline-assembly/pipeline-assembly.component";
+import {ImageChecker} from "../services/image-checker.service";
+import {PipelineElementComponent} from "./components/pipeline-element/pipeline-element.component";
+
+
+@NgModule({
+ imports: [
+ CommonModule,
+ MatTabsModule,
+ FlexLayoutModule,
+ GridsterModule,
+ CommonModule,
+ FlexLayoutModule,
+ CustomMaterialModule,
+ FormsModule,
+ ConnectModule
+ ],
+ declarations: [
+ EditorComponent,
+ PipelineAssemblyComponent,
+ PipelineElementIconStandComponent,
+ PipelineElementComponent
+ ],
+ providers: [
+ EditorService,
+ SemanticTypeUtilsService,
+ {
+ provide: 'RestApi',
+ useFactory: ($injector: any) => $injector.get('RestApi'),
+ deps: ['$injector'],
+ },
+ ElementIconText,
+ ImageChecker,
+ {
+ provide: '$state',
+ useFactory: ($injector: any) => $injector.get('$state'),
+ deps: ['$injector']
+ }
+ ],
+ exports: [
+ EditorComponent
+ ],
+ entryComponents: [
+ EditorComponent,
+ ]
+})
+export class EditorModule {
+
+ constructor() {
+ }
+
+}
\ No newline at end of file
diff --git a/ui/src/app/editor-v2/services/editor.service.ts b/ui/src/app/editor-v2/services/editor.service.ts
new file mode 100644
index 0000000..5e29981
--- /dev/null
+++ b/ui/src/app/editor-v2/services/editor.service.ts
@@ -0,0 +1,81 @@
+/*
+ * 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.
+ *
+ */
+
+import {Injectable} from "@angular/core";
+import {HttpClient, HttpHeaders} from "@angular/common/http";
+import {AuthStatusService} from "../../services/auth-status.service";
+import {TsonLdSerializerService} from "../../platform-services/tsonld-serializer.service";
+import {Observable} from "rxjs";
+import {DataProcessorInvocation, DataSinkInvocation} from "../../core-model/gen/streampipes-model";
+import {DataSourceDescription} from "../../connect/model/DataSourceDescription";
+
+@Injectable()
+export class EditorService {
+
+ constructor(private http: HttpClient,
+ private authStatusService: AuthStatusService,
+ private tsonLdSerializerService: TsonLdSerializerService) {
+ }
+
+ getDataProcessors(): Observable<Array<DataProcessorInvocation>> {
+ return this.http.get(this.dataProcessorsUrl + "/own").map(data => {
+ return (data as []).map(dpi => DataProcessorInvocation.fromData(dpi));
+ })
+ }
+
+ getDataSinks(): Observable<Array<DataSinkInvocation>> {
+ return this.http.get(this.dataSinksUrl + "/own", this.jsonLdHeaders()).map(data => {
+ return this.tsonLdSerializerService.fromJsonLdContainer(data, "sp:DataSinkInvocation");
+ })
+ }
+
+ getDataSources(): Observable<Array<DataSourceDescription>> {
+ return this.http.get(this.dataSourcesUrl + "/own", this.jsonLdHeaders()).map(data => {
+ return this.tsonLdSerializerService.fromJsonLdContainer(data, "sp:DataSourceDescription");
+ })
+ }
+
+ private get baseUrl(): string {
+ return '/streampipes-backend';
+ }
+
+ private get dataProcessorsUrl(): string {
+ return this.baseUrl + '/api/v2/users/' + this.authStatusService.email + '/sepas'
+ }
+
+ private get dataSourcesUrl(): string {
+ return this.baseUrl + '/api/v2/users/' + this.authStatusService.email + '/sources'
+ }
+
+ private get dataSinksUrl(): string {
+ return this.baseUrl + '/api/v2/users/' + this.authStatusService.email + '/actions'
+ }
+
+ private get ownPath() {
+ return "/own";
+ }
+
+ jsonLdHeaders(): any {
+ return {
+ headers: new HttpHeaders({
+ 'Accept': 'application/ld+json',
+ }),
+ };
+ }
+
+}
\ No newline at end of file
diff --git a/ui/src/app/platform-services/tsonld-serializer.service.ts b/ui/src/app/platform-services/tsonld-serializer.service.ts
index f60dc66..730bf44 100644
--- a/ui/src/app/platform-services/tsonld-serializer.service.ts
+++ b/ui/src/app/platform-services/tsonld-serializer.service.ts
@@ -98,6 +98,12 @@ import {ColorPickerStaticProperty} from "../connect/model/ColorPickerStaticPrope
import {MappingPropertyNary} from "../connect/model/MappingPropertyNary";
import { DataExplorerWidgetModel } from "../core-model/datalake/DataExplorerWidgetModel";
import { DataLakeMeasure } from "../core-model/datalake/DataLakeMeasure";
+import {UserDefinedOutputStrategy} from "../connect/model/output/UserDefinedOutputStrategy";
+import {CodeInputStaticProperty} from "../connect/model/CodeInputStaticProperty";
+import {DataSourceDescription} from "../connect/model/DataSourceDescription";
+import {EventGrounding} from "../connect/model/grounding/EventGrounding";
+import {TransportFormat} from "../connect/model/grounding/TransportFormat";
+import {TransportProtocol} from "../connect/model/grounding/TransportProtocol";
@Injectable()
@@ -122,6 +128,10 @@ export class TsonLdSerializerService {
tsonld.addClassMapping(SpecificAdapterStreamDescription);
tsonld.addClassMapping(DataSetDescription);
tsonld.addClassMapping(DataStreamDescription);
+ tsonld.addClassMapping(DataSourceDescription);
+ tsonld.addClassMapping(EventGrounding);
+ tsonld.addClassMapping(TransportFormat);
+ tsonld.addClassMapping(TransportProtocol);
tsonld.addClassMapping(EventSchema);
tsonld.addClassMapping(EventProperty);
tsonld.addClassMapping(EventPropertyNested);
@@ -164,6 +174,7 @@ export class TsonLdSerializerService {
tsonld.addClassMapping(BoundPipelineElement);
tsonld.addClassMapping(AppendOutputStrategy);
+ tsonld.addClassMapping(CodeInputStaticProperty)
tsonld.addClassMapping(CustomOutputStrategy);
tsonld.addClassMapping(CustomTransformOutputStrategy);
tsonld.addClassMapping(FixedOutputStrategy);
@@ -173,6 +184,7 @@ export class TsonLdSerializerService {
tsonld.addClassMapping(PropertyRenameRule);
tsonld.addClassMapping(TransformOperation);
tsonld.addClassMapping(TransformOutputStrategy);
+ tsonld.addClassMapping(UserDefinedOutputStrategy);
tsonld.addClassMapping(RuntimeResolvableAnyStaticProperty);
tsonld.addClassMapping(RuntimeResolvableOneOfStaticProperty);
diff --git a/ui/src/app/services/image-checker.service.ts b/ui/src/app/services/image-checker.service.ts
index 2e2ae92..c958899 100644
--- a/ui/src/app/services/image-checker.service.ts
+++ b/ui/src/app/services/image-checker.service.ts
@@ -16,6 +16,9 @@
*
*/
+import {Injectable} from "@angular/core";
+
+@Injectable()
export class ImageChecker {
constructor() {}