From b7e25ce8be54fe49583c9f6be0d1ea2d2d2ca03c Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 15 Nov 2017 12:17:07 +0100 Subject: [PATCH 01/12] add catalogue service --- java-sdk/radar-schemas-tools/build.gradle | 10 ++- .../org/radarcns/schema/CommandLineApp.java | 4 +- .../schema/service/SourceCatalogueServer.java | 88 +++++++++++++++++++ .../service/SourceCatalogueService.java | 29 ++++++ 4 files changed, 129 insertions(+), 2 deletions(-) create mode 100644 java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java create mode 100644 java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java diff --git a/java-sdk/radar-schemas-tools/build.gradle b/java-sdk/radar-schemas-tools/build.gradle index a66cb54b..ea9b34ca 100644 --- a/java-sdk/radar-schemas-tools/build.gradle +++ b/java-sdk/radar-schemas-tools/build.gradle @@ -21,7 +21,8 @@ sourceSets { ext.junitVersion = '4.12' ext.slf4jVersion = '1.7.25' - +ext.jettyVersion = '9.4.7.v20170914' +ext.jerseyVersion = '2.9' dependencies { api group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.8.10' api group: 'javax.validation', name: 'validation-api', version: '2.0.0.Final' @@ -32,6 +33,13 @@ dependencies { implementation (group: 'org.apache.kafka', name: 'kafka_2.11', version: '0.11.0.1') { exclude group: 'org.slf4j', module: 'slf4j-log4j12' } + implementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jettyVersion + implementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jettyVersion + implementation group: 'org.glassfish.jersey.core', name: 'jersey-server', version: jerseyVersion +// implementation group: 'org.glassfish.jersey.core', name: 'jersey-common', version: jerseyVersion +// implementation group: 'org.glassfish.jersey.core', name: 'jersey-client', version: jerseyVersion + implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet-core', version: jerseyVersion + implementation group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: jerseyVersion runtimeOnly group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25' diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java index da511824..c50eee87 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java @@ -24,6 +24,7 @@ import net.sourceforge.argparse4j.inf.Subparsers; import org.radarcns.schema.registration.KafkaTopics; import org.radarcns.schema.registration.SchemaRegistry; +import org.radarcns.schema.service.SourceCatalogueServer; import org.radarcns.schema.specification.DataProducer; import org.radarcns.schema.specification.DataTopic; import org.radarcns.schema.specification.SourceCatalogue; @@ -166,7 +167,8 @@ public static void main(String... args) { KafkaTopics.command(), SchemaRegistry.command(), listCommand(), - SchemaValidator.command()); + SchemaValidator.command(), + SourceCatalogueServer.command()); ArgumentParser parser = getArgumentParser(subCommands); diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java new file mode 100644 index 00000000..0c7b91b8 --- /dev/null +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -0,0 +1,88 @@ +package org.radarcns.schema.service; + +import java.io.Closeable; +import net.sourceforge.argparse4j.inf.ArgumentParser; +import net.sourceforge.argparse4j.inf.Namespace; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletContextHandler; +import org.eclipse.jetty.servlet.ServletHolder; +import org.glassfish.jersey.server.ResourceConfig; +import org.glassfish.jersey.servlet.ServletContainer; +import org.radarcns.schema.CommandLineApp; +import org.radarcns.schema.specification.SourceCatalogue; +import org.radarcns.schema.util.SubCommand; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * This server exposes the SourceType Catalogues provided as {@link SourceCatalogue} object + */ +public class SourceCatalogueServer implements Closeable { + + private static final Logger logger = LoggerFactory.getLogger(SourceCatalogueServer.class); + + private final Server server; + + public SourceCatalogueServer(int serverPort) { + this.server = new Server(serverPort); + } + + @Override + public void close() { + try { + this.server.join(); + } catch (InterruptedException e) { + logger.error("Cannot stop server", e); + } + server.destroy(); + } + + @SuppressWarnings("PMD.SignatureDeclareThrowsException") + private void start(SourceCatalogue sourceCatalogue) throws Exception { + + ResourceConfig config = new ResourceConfig(); + config.register(new SourceCatalogueService(sourceCatalogue)); + ServletHolder servlet = new ServletHolder(new ServletContainer(config)); + ServletContextHandler context = new ServletContextHandler(server, "/*"); + context.addServlet(servlet, "/*"); + server.start(); + } + + public static SubCommand command() { + return new SourceCatalogueServiceCommand(); + } + + private static class SourceCatalogueServiceCommand implements SubCommand { + + @Override + public String getName() { + return "catalogue-server"; + } + + @Override + public int execute(Namespace options, CommandLineApp app) { + int partitions = options.getInt("port"); + SourceCatalogueServer service = new SourceCatalogueServer(partitions); + try { + service.start(app.getCatalogue()); + } catch (Exception e) { + logger.error("Cannot start server ", e); + return 1; + } + service.close(); + return 0; + } + + @Override + public void addParser(ArgumentParser parser) { + parser.description("Create all topics that are missing on the Kafka server."); + parser.addArgument("-port") + .help("Port number of the SourceCatalogue Server ") + .type(Integer.class) + .setDefault(9010); + SubCommand.addRootArgument(parser); // is this always necessary? + } + } + + +} diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java new file mode 100644 index 00000000..150625a3 --- /dev/null +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java @@ -0,0 +1,29 @@ +package org.radarcns.schema.service; + +import org.radarcns.schema.specification.SourceCatalogue; +import org.radarcns.schema.specification.passive.PassiveSource; + +import javax.ws.rs.GET; +import javax.ws.rs.Path; +import javax.ws.rs.Produces; +import javax.ws.rs.core.MediaType; +import java.util.ArrayList; +import java.util.List; + +@Path("/") +@Produces(MediaType.APPLICATION_JSON) +public class SourceCatalogueService { + + private final SourceCatalogue sourceCatalogue; + + public SourceCatalogueService(SourceCatalogue sourceCatalogue) { + this.sourceCatalogue = sourceCatalogue; + } + + @GET + @Path("passive-sources") + public List getPassiveSources() { + List result = new ArrayList<>(this.sourceCatalogue.getPassiveSources().values()); + return result; + } +} From e4193be52ed28870c227ad9442e2ab5adb5220cb Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 15 Nov 2017 14:43:23 +0100 Subject: [PATCH 02/12] Restructured response and resources to share other catalogues --- .../schema/service/SourceCatalogueServer.java | 5 +- .../service/SourceCatalogueService.java | 97 +++++++++++++++++-- .../schema/specification/DataProducer.java | 11 ++- 3 files changed, 104 insertions(+), 9 deletions(-) diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index 0c7b91b8..09f5ea72 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -15,7 +15,8 @@ import org.slf4j.LoggerFactory; /** - * This server exposes the SourceType Catalogues provided as {@link SourceCatalogue} object + * This server provides a webservice to share the SourceType Catalogues provided in *.yml files + * as {@link org.radarcns.schema.service.SourceCatalogueService.SourceTypeResponse} */ public class SourceCatalogueServer implements Closeable { @@ -80,7 +81,7 @@ public void addParser(ArgumentParser parser) { .help("Port number of the SourceCatalogue Server ") .type(Integer.class) .setDefault(9010); - SubCommand.addRootArgument(parser); // is this always necessary? + SubCommand.addRootArgument(parser); } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java index 150625a3..8ddc7620 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java @@ -1,29 +1,114 @@ package org.radarcns.schema.service; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; import org.radarcns.schema.specification.SourceCatalogue; +import org.radarcns.schema.specification.active.ActiveSource; +import org.radarcns.schema.specification.monitor.MonitorSource; import org.radarcns.schema.specification.passive.PassiveSource; import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; import java.util.ArrayList; import java.util.List; -@Path("/") +/** + * Webservice resource to share SourceCatalogues. The response has a "Source-Type-Class" header + * that mentions the class of SourceCatalogues and the body has the SourceCatalogues in JSON format. + */ +@Path("/source-types") @Produces(MediaType.APPLICATION_JSON) public class SourceCatalogueService { + private static final String SOURCE_TYPE_CLASS_HEADER = "Source-Type-Class"; private final SourceCatalogue sourceCatalogue; - public SourceCatalogueService(SourceCatalogue sourceCatalogue) { + SourceCatalogueService(SourceCatalogue sourceCatalogue) { this.sourceCatalogue = sourceCatalogue; } @GET - @Path("passive-sources") - public List getPassiveSources() { - List result = new ArrayList<>(this.sourceCatalogue.getPassiveSources().values()); - return result; + @Path("/passive") + public Response getPassiveSources() { + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).passive()) + .header(SOURCE_TYPE_CLASS_HEADER, "PASSIVE").build(); + } + + @GET + @Path("/active") + public Response getActiveSources() { + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).active()) + .header(SOURCE_TYPE_CLASS_HEADER, "ACTIVE").build(); + } + + @GET + @Path("/monitor") + public Response getMonitorSources() { + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).monitor()) + .header(SOURCE_TYPE_CLASS_HEADER, "MONITOR").build(); + } + + @GET + public Response getAllSourceTypes() { + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).all()) + .header(SOURCE_TYPE_CLASS_HEADER, "ALL").build(); + } + + public class SourceTypeResponse { + + @JsonIgnore + private SourceCatalogue sourceCatalogue; + + private SourceTypeResponse(SourceCatalogue sourceCatalogue) { + this.sourceCatalogue = sourceCatalogue; + } + + @JsonProperty("passive-source-types") + private List passiveSources; + + @JsonProperty("active-source-types") + private List activeSources; + + @JsonProperty("monitor-source-types") + private List monitorSources; + + private SourceTypeResponse passive() { + this.passiveSources = new ArrayList<>( + this.sourceCatalogue.getPassiveSources().values()); + return this; + } + + public SourceTypeResponse active() { + this.activeSources = new ArrayList<>(this.sourceCatalogue.getActiveSources().values()); + return this; + } + + public SourceTypeResponse monitor() { + this.monitorSources = new ArrayList<>(this.sourceCatalogue.getMonitorSources().values()); + return this; + } + + private SourceTypeResponse all() { + this.passiveSources = new ArrayList<>( + this.sourceCatalogue.getPassiveSources().values()); + this.activeSources = new ArrayList<>(this.sourceCatalogue.getActiveSources().values()); + this.monitorSources = new ArrayList<>(this.sourceCatalogue.getMonitorSources().values()); + return this; + } + + public List getPassiveSources() { + return passiveSources; + } + + public List getActiveSources() { + return activeSources; + } + + public List getMonitorSources() { + return monitorSources; + } } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java index 36af741e..486cf443 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java @@ -26,6 +26,9 @@ public abstract class DataProducer { @JsonProperty private List labels; + @JsonProperty + private String version; + public String getName() { return name; } @@ -34,6 +37,10 @@ public String getDoc() { return doc; } + public String getVersion() { + return version; + } + @NotNull public abstract List getData(); @@ -56,6 +63,7 @@ public Stream getTopicNames() { return getData().stream().flatMap(applyOrEmpty(DataTopic::getTopics)); } + @Override public boolean equals(Object o) { if (this == o) { @@ -67,11 +75,12 @@ public boolean equals(Object o) { DataProducer producer = (DataProducer) o; return Objects.equals(name, producer.name) && Objects.equals(doc, producer.doc) + && Objects.equals(version , producer.version) && Objects.equals(getData(), producer.getData()); } @Override public int hashCode() { - return Objects.hash(name, doc, getData()); + return Objects.hash(name, doc, getData(), version); } } From 9f3b15eae0559aecfc68c6f5521abd8c8bf1ffec Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 15 Nov 2017 14:54:00 +0100 Subject: [PATCH 03/12] checkstyle fixes --- README.md | 3 +++ .../org/radarcns/schema/CommandLineApp.java | 1 + .../schema/service/SourceCatalogueServer.java | 4 ++-- .../service/SourceCatalogueService.java | 24 ++++++++++--------- 4 files changed, 19 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index c5695c5d..73b5b786 100644 --- a/README.md +++ b/README.md @@ -58,4 +58,7 @@ docker-compose run --rm tools radar-schemas-tools list docker-compose run --rm tools radar-schemas-tools register http://schema-registry:8081 # create topics with zookeeper docker-compose run --rm tools radar-schemas-tools create zookeeper-1:2181 +# run source-catalogue webservice +docker-compose run --rm tools radar-schemas-tools catalogue-server (optional-port ) + ``` diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java index c50eee87..c9d16aeb 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/CommandLineApp.java @@ -54,6 +54,7 @@ */ @SuppressWarnings("PMD.SystemPrintln") public class CommandLineApp { + private static final Logger logger = LoggerFactory.getLogger(CommandLineApp.class); private final SourceCatalogue catalogue; diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index 09f5ea72..4b274e9f 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -15,8 +15,8 @@ import org.slf4j.LoggerFactory; /** - * This server provides a webservice to share the SourceType Catalogues provided in *.yml files - * as {@link org.radarcns.schema.service.SourceCatalogueService.SourceTypeResponse} + * This server provides a webservice to share the SourceType Catalogues provided in *.yml files as + * {@link org.radarcns.schema.service.SourceCatalogueService.SourceTypeResponse} */ public class SourceCatalogueServer implements Closeable { diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java index 8ddc7620..3fccb14d 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueService.java @@ -16,8 +16,8 @@ import java.util.List; /** - * Webservice resource to share SourceCatalogues. The response has a "Source-Type-Class" header - * that mentions the class of SourceCatalogues and the body has the SourceCatalogues in JSON format. + * Webservice resource to share SourceCatalogues. The response has a "Source-Type-Class" header that + * mentions the class of SourceCatalogues and the body has the SourceCatalogues in JSON format. */ @Path("/source-types") @Produces(MediaType.APPLICATION_JSON) @@ -47,24 +47,20 @@ public Response getActiveSources() { @GET @Path("/monitor") public Response getMonitorSources() { - return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).monitor()) + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).monitor()) .header(SOURCE_TYPE_CLASS_HEADER, "MONITOR").build(); } @GET public Response getAllSourceTypes() { - return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).all()) + return Response.ok().entity(new SourceTypeResponse(this.sourceCatalogue).all()) .header(SOURCE_TYPE_CLASS_HEADER, "ALL").build(); } public class SourceTypeResponse { @JsonIgnore - private SourceCatalogue sourceCatalogue; - - private SourceTypeResponse(SourceCatalogue sourceCatalogue) { - this.sourceCatalogue = sourceCatalogue; - } + private final SourceCatalogue sourceCatalogue; @JsonProperty("passive-source-types") private List passiveSources; @@ -75,6 +71,10 @@ private SourceTypeResponse(SourceCatalogue sourceCatalogue) { @JsonProperty("monitor-source-types") private List monitorSources; + private SourceTypeResponse(SourceCatalogue sourceCatalogue) { + this.sourceCatalogue = sourceCatalogue; + } + private SourceTypeResponse passive() { this.passiveSources = new ArrayList<>( this.sourceCatalogue.getPassiveSources().values()); @@ -87,7 +87,8 @@ public SourceTypeResponse active() { } public SourceTypeResponse monitor() { - this.monitorSources = new ArrayList<>(this.sourceCatalogue.getMonitorSources().values()); + this.monitorSources = new ArrayList<>( + this.sourceCatalogue.getMonitorSources().values()); return this; } @@ -95,7 +96,8 @@ private SourceTypeResponse all() { this.passiveSources = new ArrayList<>( this.sourceCatalogue.getPassiveSources().values()); this.activeSources = new ArrayList<>(this.sourceCatalogue.getActiveSources().values()); - this.monitorSources = new ArrayList<>(this.sourceCatalogue.getMonitorSources().values()); + this.monitorSources = new ArrayList<>( + this.sourceCatalogue.getMonitorSources().values()); return this; } From 66197536fa37b170add817cf555a3f6ba9dda160 Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 15 Nov 2017 15:05:50 +0100 Subject: [PATCH 04/12] code clean up --- java-sdk/radar-schemas-tools/build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/java-sdk/radar-schemas-tools/build.gradle b/java-sdk/radar-schemas-tools/build.gradle index ea9b34ca..24adc95c 100644 --- a/java-sdk/radar-schemas-tools/build.gradle +++ b/java-sdk/radar-schemas-tools/build.gradle @@ -36,8 +36,6 @@ dependencies { implementation group: 'org.eclipse.jetty', name: 'jetty-server', version: jettyVersion implementation group: 'org.eclipse.jetty', name: 'jetty-servlet', version: jettyVersion implementation group: 'org.glassfish.jersey.core', name: 'jersey-server', version: jerseyVersion -// implementation group: 'org.glassfish.jersey.core', name: 'jersey-common', version: jerseyVersion -// implementation group: 'org.glassfish.jersey.core', name: 'jersey-client', version: jerseyVersion implementation group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet-core', version: jerseyVersion implementation group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: jerseyVersion From 7c7f6374a723fa5272e6518531c2ae56d4d188ba Mon Sep 17 00:00:00 2001 From: Joris Borgdorff Date: Wed, 15 Nov 2017 15:06:59 +0100 Subject: [PATCH 05/12] snapshot version --- java-sdk/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index e046df8c..9c9ceb3e 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -17,7 +17,7 @@ subprojects { apply plugin: 'idea' // Configuration - version = '0.2' + version = '0.2.1-SNAPSHOT' group = 'org.radarcns' ext.githubRepoName = 'RADAR-CNS/RADAR-Schemas' From 967784ef2e4668616360d1dd8a28cbfa56865dbd Mon Sep 17 00:00:00 2001 From: nivethika Date: Wed, 15 Nov 2017 15:19:25 +0100 Subject: [PATCH 06/12] tweaks based on reviews --- README.md | 2 +- .../org/radarcns/schema/service/SourceCatalogueServer.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 73b5b786..93c8d0ec 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,6 @@ docker-compose run --rm tools radar-schemas-tools register http://schema-registr # create topics with zookeeper docker-compose run --rm tools radar-schemas-tools create zookeeper-1:2181 # run source-catalogue webservice -docker-compose run --rm tools radar-schemas-tools catalogue-server (optional-port ) +docker-compose run --rm tools radar-schemas-tools serve -p ``` diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index 4b274e9f..ac7ec7aa 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -57,7 +57,7 @@ private static class SourceCatalogueServiceCommand implements SubCommand { @Override public String getName() { - return "catalogue-server"; + return "serve"; } @Override @@ -77,7 +77,7 @@ public int execute(Namespace options, CommandLineApp app) { @Override public void addParser(ArgumentParser parser) { parser.description("Create all topics that are missing on the Kafka server."); - parser.addArgument("-port") + parser.addArgument("-p" ,"-port") .help("Port number of the SourceCatalogue Server ") .type(Integer.class) .setDefault(9010); From df725126e865667f2d07f964b7acbce61f76b46d Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 16 Nov 2017 17:52:25 +0100 Subject: [PATCH 07/12] Small correction on arguments --- .../java/org/radarcns/schema/service/SourceCatalogueServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index ac7ec7aa..1d0b600a 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -77,7 +77,7 @@ public int execute(Namespace options, CommandLineApp app) { @Override public void addParser(ArgumentParser parser) { parser.description("Create all topics that are missing on the Kafka server."); - parser.addArgument("-p" ,"-port") + parser.addArgument("-p" ,"--port") .help("Port number of the SourceCatalogue Server ") .type(Integer.class) .setDefault(9010); From 3b9d4b1a756d7b15050fb20100de9f58951a3bd4 Mon Sep 17 00:00:00 2001 From: nivethika Date: Fri, 17 Nov 2017 17:51:11 +0100 Subject: [PATCH 08/12] Update description --- .../java/org/radarcns/schema/service/SourceCatalogueServer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index 1d0b600a..1984271d 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -76,7 +76,7 @@ public int execute(Namespace options, CommandLineApp app) { @Override public void addParser(ArgumentParser parser) { - parser.description("Create all topics that are missing on the Kafka server."); + parser.description("Port number of the Catalogue server."); parser.addArgument("-p" ,"--port") .help("Port number of the SourceCatalogue Server ") .type(Integer.class) From 5ffad1c6793749ab0d775593c44a7c317a60a032 Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 23 Nov 2017 12:16:23 +0100 Subject: [PATCH 09/12] added version, model, vendor for app-source and activeappsource --- .../schema/specification/AppSource.java | 45 +++++++++++++++++++ .../schema/specification/DataProducer.java | 10 +---- .../specification/active/ActiveSource.java | 21 +++++++++ .../specification/passive/PassiveSource.java | 12 ++--- specifications/active/phq8.yml | 5 ++- specifications/active/thincit.yml | 3 ++ specifications/monitor/radar_prmt.yml | 3 ++ specifications/passive/android_phone.yml | 1 + specifications/passive/biovotion_vsm1.yml | 3 +- specifications/passive/empatica_e4.yml | 1 + specifications/passive/pebble_2.yml | 1 + 11 files changed, 85 insertions(+), 20 deletions(-) diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java index fc76f6fb..d453da03 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java @@ -2,6 +2,9 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSetter; +import java.util.Objects; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; import static org.radarcns.schema.util.Utils.expandClass; @@ -9,6 +12,15 @@ public abstract class AppSource extends DataProducer { @JsonProperty("app_provider") private String appProvider; + @JsonProperty + private String vendor; + + @JsonProperty + private String model; + + @JsonProperty + private String version; + @JsonSetter @SuppressWarnings("PMD.UnusedPrivateMethod") private void setAppProvider(String provider) { @@ -18,4 +30,37 @@ private void setAppProvider(String provider) { public String getAppProvider() { return appProvider; } + + public String getVersion() { + return version; + } + + public String getVendor() { + return vendor; + } + + public String getModel() { + return model; + } + + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + AppSource provider = (AppSource) o; + return Objects.equals(appProvider, provider.appProvider) + && Objects.equals(version, provider.version) + && Objects.equals(model, provider.model) + && Objects.equals(vendor, provider.vendor) + && Objects.equals(getData(), provider.getData()); + } + + @Override + public int hashCode() { + return Objects.hash(appProvider, vendor, model, version, getData()); + } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java index 486cf443..2484de24 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/DataProducer.java @@ -26,9 +26,6 @@ public abstract class DataProducer { @JsonProperty private List labels; - @JsonProperty - private String version; - public String getName() { return name; } @@ -37,10 +34,6 @@ public String getDoc() { return doc; } - public String getVersion() { - return version; - } - @NotNull public abstract List getData(); @@ -75,12 +68,11 @@ public boolean equals(Object o) { DataProducer producer = (DataProducer) o; return Objects.equals(name, producer.name) && Objects.equals(doc, producer.doc) - && Objects.equals(version , producer.version) && Objects.equals(getData(), producer.getData()); } @Override public int hashCode() { - return Objects.hash(name, doc, getData(), version); + return Objects.hash(name, doc, getData()); } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/ActiveSource.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/ActiveSource.java index 9cbd53c8..44a46809 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/ActiveSource.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/active/ActiveSource.java @@ -47,6 +47,15 @@ public enum RadarSourceTypes { @JsonProperty private List data; + @JsonProperty + private String vendor; + + @JsonProperty + private String model; + + @JsonProperty + private String version; + public String getAssessmentType() { return assessmentType; } @@ -60,4 +69,16 @@ public List getData() { public Scope getScope() { return Scope.ACTIVE; } + + public String getVendor() { + return vendor; + } + + public String getModel() { + return model; + } + + public String getVersion() { + return version; + } } diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java index d1119740..9fce62e2 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java @@ -33,12 +33,6 @@ public enum RadarSourceTypes { EMPATICA_E4, PEBBLE_2, ANDROID_PHONE, BIOVOTION_VSM1 } - @JsonProperty @NotBlank - private String vendor; - - @JsonProperty @NotBlank - private String model; - @JsonProperty @NotEmpty private List data; @@ -53,15 +47,15 @@ public Scope getScope() { } public String getName() { - return vendor + '_' + model; + return super.getVendor() + '_' + super.getModel(); } public String getVendor() { - return vendor; + return super.getVendor(); } public String getModel() { - return model; + return super.getModel(); } /** diff --git a/specifications/active/phq8.yml b/specifications/active/phq8.yml index 5a0126d3..38789eda 100644 --- a/specifications/active/phq8.yml +++ b/specifications/active/phq8.yml @@ -1,5 +1,8 @@ #==================== Personal Health Questionnaire Depression Scale (PHQ-8) ======================# name: PHQ8 +vendor: PHQ +model: 8 +version: v1 assessment_type: QUESTIONNAIRE doc: Personal Health Questionnaire Depression Scale (PHQ-8) definition. data: @@ -102,4 +105,4 @@ data: - text: More than half the days value: 2 - text: Nearly every day - value: 3 \ No newline at end of file + value: 3 diff --git a/specifications/active/thincit.yml b/specifications/active/thincit.yml index 503af4d9..2a3c4a41 100644 --- a/specifications/active/thincit.yml +++ b/specifications/active/thincit.yml @@ -1,4 +1,7 @@ name: THINCIT +vendor: LUNDBECK +model: THINCIT +version: v1 assessment_type: APP doc: ThincIt Cognition in Depression app. data: diff --git a/specifications/monitor/radar_prmt.yml b/specifications/monitor/radar_prmt.yml index e5d454ed..a3d516ba 100644 --- a/specifications/monitor/radar_prmt.yml +++ b/specifications/monitor/radar_prmt.yml @@ -1,4 +1,7 @@ name: ANDROID_PHONE +vendor: ANDROID +model: PHONE_MONITOR +version: v1 doc: Status updates from the RADAR-CNS pRMT app. app_provider: .application.ApplicationServiceProvider data: diff --git a/specifications/passive/android_phone.yml b/specifications/passive/android_phone.yml index ebe57d5d..b23c8756 100644 --- a/specifications/passive/android_phone.yml +++ b/specifications/passive/android_phone.yml @@ -1,6 +1,7 @@ #====================================== Android Phone Sensors =====================================# vendor: ANDROID model: PHONE +version: v1 data: #Phone sensors - type: ACCELEROMETER diff --git a/specifications/passive/biovotion_vsm1.yml b/specifications/passive/biovotion_vsm1.yml index 4e3b51c7..3573fcb2 100644 --- a/specifications/passive/biovotion_vsm1.yml +++ b/specifications/passive/biovotion_vsm1.yml @@ -1,6 +1,7 @@ #===================================== Biovotion VSM1 Everion =====================================# vendor: BIOVOTION model: VSM1 +version: v1 app_provider: .biovotion.BiovotionServiceProvider data: - type: ACCELEROMETER @@ -86,4 +87,4 @@ data: unit: CELSIUS processing_state: RAW topic: android_biovotion_vsm1_temperature - value_schema: .passive.biovotion.BiovotionVsm1Temperature \ No newline at end of file + value_schema: .passive.biovotion.BiovotionVsm1Temperature diff --git a/specifications/passive/empatica_e4.yml b/specifications/passive/empatica_e4.yml index 01ea00e2..8ff2e260 100644 --- a/specifications/passive/empatica_e4.yml +++ b/specifications/passive/empatica_e4.yml @@ -1,6 +1,7 @@ #====================================== Empatica E4 Wristband =====================================# vendor: EMPATICA model: E4 +version: v1 app_provider: .empatica.E4ServiceProvider data: - type: ACCELEROMETER diff --git a/specifications/passive/pebble_2.yml b/specifications/passive/pebble_2.yml index b66fedd8..cf278ebe 100644 --- a/specifications/passive/pebble_2.yml +++ b/specifications/passive/pebble_2.yml @@ -1,6 +1,7 @@ #============================================ Pebble 2 ============================================# vendor: PEBBLE model: 2 +version: v1 doc: Pebble 2 data collected over Bluetooth by a RADAR Pebble app app_provider: .pebble.PebbleServiceProvider data: From d9f5211788379cf27bf3c85bd2077d3583520663 Mon Sep 17 00:00:00 2001 From: nivethika Date: Thu, 23 Nov 2017 12:53:07 +0100 Subject: [PATCH 10/12] checkstyle fixes --- Dockerfile | 2 +- .../org/radarcns/schema/specification/AppSource.java | 2 -- .../schema/specification/passive/PassiveSource.java | 9 --------- 3 files changed, 1 insertion(+), 12 deletions(-) diff --git a/Dockerfile b/Dockerfile index 28b1b617..2cc9c042 100644 --- a/Dockerfile +++ b/Dockerfile @@ -7,7 +7,7 @@ COPY commons /code/commons COPY specifications /code/specifications COPY restapi /code/restapi COPY java-sdk/gradle /code/java-sdk/gradle -COPY java-sdk/gradle.properties java-sdk/build.gradle java-sdk/settings.gradle java-sdk/gradlew /code/java-sdk/ +COPY java-sdk/build.gradle java-sdk/settings.gradle java-sdk/gradlew /code/java-sdk/ RUN ./gradlew tasks COPY java-sdk/radar-schemas-commons/build.gradle /code/java-sdk/radar-schemas-commons/ COPY java-sdk/radar-schemas-commons/src /code/java-sdk/radar-schemas-commons/src diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java index d453da03..b13e589b 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/AppSource.java @@ -3,8 +3,6 @@ import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonSetter; import java.util.Objects; -import javax.validation.constraints.NotBlank; -import javax.validation.constraints.NotNull; import static org.radarcns.schema.util.Utils.expandClass; diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java index 9fce62e2..07ecdb53 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/specification/passive/PassiveSource.java @@ -20,7 +20,6 @@ import org.radarcns.schema.Scope; import org.radarcns.schema.specification.AppSource; -import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import java.util.List; @@ -50,14 +49,6 @@ public String getName() { return super.getVendor() + '_' + super.getModel(); } - public String getVendor() { - return super.getVendor(); - } - - public String getModel() { - return super.getModel(); - } - /** * TODO. * @param type TODO From a37651fe3e6a5654d658b3aace49843ecd6618ec Mon Sep 17 00:00:00 2001 From: nivethika Date: Mon, 27 Nov 2017 15:51:53 +0100 Subject: [PATCH 11/12] changes based on review --- .../org/radarcns/schema/service/SourceCatalogueServer.java | 2 +- specifications/active/phq8.yml | 2 +- specifications/active/thincit.yml | 4 ++-- specifications/monitor/radar_prmt.yml | 2 +- specifications/passive/android_phone.yml | 2 +- specifications/passive/biovotion_vsm1.yml | 2 +- specifications/passive/empatica_e4.yml | 2 +- specifications/passive/pebble_2.yml | 2 +- 8 files changed, 9 insertions(+), 9 deletions(-) diff --git a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java index 1984271d..4e836c25 100644 --- a/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java +++ b/java-sdk/radar-schemas-tools/src/main/java/org/radarcns/schema/service/SourceCatalogueServer.java @@ -76,7 +76,7 @@ public int execute(Namespace options, CommandLineApp app) { @Override public void addParser(ArgumentParser parser) { - parser.description("Port number of the Catalogue server."); + parser.description("A web service to share source-type catalogs"); parser.addArgument("-p" ,"--port") .help("Port number of the SourceCatalogue Server ") .type(Integer.class) diff --git a/specifications/active/phq8.yml b/specifications/active/phq8.yml index 38789eda..21a2c6e4 100644 --- a/specifications/active/phq8.yml +++ b/specifications/active/phq8.yml @@ -2,7 +2,7 @@ name: PHQ8 vendor: PHQ model: 8 -version: v1 +version: 1.0.0 assessment_type: QUESTIONNAIRE doc: Personal Health Questionnaire Depression Scale (PHQ-8) definition. data: diff --git a/specifications/active/thincit.yml b/specifications/active/thincit.yml index 2a3c4a41..052464e8 100644 --- a/specifications/active/thincit.yml +++ b/specifications/active/thincit.yml @@ -1,7 +1,7 @@ name: THINCIT -vendor: LUNDBECK +vendor: THINCIT IIRC model: THINCIT -version: v1 +version: 1.0.0 assessment_type: APP doc: ThincIt Cognition in Depression app. data: diff --git a/specifications/monitor/radar_prmt.yml b/specifications/monitor/radar_prmt.yml index a3d516ba..89b9bc66 100644 --- a/specifications/monitor/radar_prmt.yml +++ b/specifications/monitor/radar_prmt.yml @@ -1,7 +1,7 @@ name: ANDROID_PHONE vendor: ANDROID model: PHONE_MONITOR -version: v1 +version: 1.0.0 doc: Status updates from the RADAR-CNS pRMT app. app_provider: .application.ApplicationServiceProvider data: diff --git a/specifications/passive/android_phone.yml b/specifications/passive/android_phone.yml index b23c8756..f5226e5d 100644 --- a/specifications/passive/android_phone.yml +++ b/specifications/passive/android_phone.yml @@ -1,7 +1,7 @@ #====================================== Android Phone Sensors =====================================# vendor: ANDROID model: PHONE -version: v1 +version: 1.0.0 data: #Phone sensors - type: ACCELEROMETER diff --git a/specifications/passive/biovotion_vsm1.yml b/specifications/passive/biovotion_vsm1.yml index 3573fcb2..f245e1b6 100644 --- a/specifications/passive/biovotion_vsm1.yml +++ b/specifications/passive/biovotion_vsm1.yml @@ -1,7 +1,7 @@ #===================================== Biovotion VSM1 Everion =====================================# vendor: BIOVOTION model: VSM1 -version: v1 +version: 1.0.0 app_provider: .biovotion.BiovotionServiceProvider data: - type: ACCELEROMETER diff --git a/specifications/passive/empatica_e4.yml b/specifications/passive/empatica_e4.yml index 8ff2e260..786726aa 100644 --- a/specifications/passive/empatica_e4.yml +++ b/specifications/passive/empatica_e4.yml @@ -1,7 +1,7 @@ #====================================== Empatica E4 Wristband =====================================# vendor: EMPATICA model: E4 -version: v1 +version: 1.0.0 app_provider: .empatica.E4ServiceProvider data: - type: ACCELEROMETER diff --git a/specifications/passive/pebble_2.yml b/specifications/passive/pebble_2.yml index cf278ebe..44f0c70c 100644 --- a/specifications/passive/pebble_2.yml +++ b/specifications/passive/pebble_2.yml @@ -1,7 +1,7 @@ #============================================ Pebble 2 ============================================# vendor: PEBBLE model: 2 -version: v1 +version: 1.0.0 doc: Pebble 2 data collected over Bluetooth by a RADAR Pebble app app_provider: .pebble.PebbleServiceProvider data: From d415cdd10f65bf58bf005896b445edf2a73678dd Mon Sep 17 00:00:00 2001 From: nivethika Date: Mon, 27 Nov 2017 17:29:48 +0100 Subject: [PATCH 12/12] prepare release --- java-sdk/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java-sdk/build.gradle b/java-sdk/build.gradle index 9c9ceb3e..ff6a6fe2 100644 --- a/java-sdk/build.gradle +++ b/java-sdk/build.gradle @@ -17,7 +17,7 @@ subprojects { apply plugin: 'idea' // Configuration - version = '0.2.1-SNAPSHOT' + version = '0.2.1' group = 'org.radarcns' ext.githubRepoName = 'RADAR-CNS/RADAR-Schemas'