You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2018/05/25 09:09:17 UTC

[incubator-plc4x] 02/02: Fixed some SonarQube findings

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit 7fbe0ec2aafdeb6865f64b46ddc340a357c9431a
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Fri May 25 11:09:11 2018 +0200

    Fixed some SonarQube findings
---
 .../iotfactory/IotElasticsearchFactory.java        | 153 +++++++++++----------
 1 file changed, 77 insertions(+), 76 deletions(-)

diff --git a/examples/iot-factory/src/main/java/org/apache/plc4x/java/examples/iotfactory/IotElasticsearchFactory.java b/examples/iot-factory/src/main/java/org/apache/plc4x/java/examples/iotfactory/IotElasticsearchFactory.java
index 1a0c225..8f70545 100644
--- a/examples/iot-factory/src/main/java/org/apache/plc4x/java/examples/iotfactory/IotElasticsearchFactory.java
+++ b/examples/iot-factory/src/main/java/org/apache/plc4x/java/examples/iotfactory/IotElasticsearchFactory.java
@@ -54,6 +54,12 @@ public class IotElasticsearchFactory {
         RUNNING_RIGHT
     }
 
+    private static class MyNode extends Node {
+        private MyNode(Settings preparedSettings, Collection<Class<? extends Plugin>> classpathPlugins) {
+            super(InternalSettingsPreparer.prepareEnvironment(preparedSettings, null), classpathPlugins);
+        }
+    }
+
     private ConveyorState conveyorState = ConveyorState.STOPPED;
 
     private Node startElasticsearchNode() throws NodeValidationException {
@@ -67,14 +73,14 @@ public class IotElasticsearchFactory {
         return node;
     }
 
-    private void prepareIndexes(Client esClient) throws Exception {
+    private void prepareIndexes(Client esClient) {
         IndicesAdminClient indicesAdminClient = esClient.admin().indices();
 
         // Check if the factory-data index exists and create it, if it doesn't.
         IndicesExistsRequest factoryDataIndexExistsRequest =
-            indicesAdminClient.prepareExists("product-data").request();
+            indicesAdminClient.prepareExists("iot-factory-data").request();
         if(!indicesAdminClient.exists(factoryDataIndexExistsRequest).actionGet().isExists()) {
-            CreateIndexRequest createIndexRequest = new CreateIndexRequest("factory-data");
+            CreateIndexRequest createIndexRequest = new CreateIndexRequest("iot-factory-data");
             createIndexRequest.mapping("FactoryData",
                 "{\n" +
                     "            \"properties\": {\n" +
@@ -85,15 +91,15 @@ public class IotElasticsearchFactory {
                     "        }", XContentType.JSON);
             CreateIndexResponse createIndexResponse = indicesAdminClient.create(createIndexRequest).actionGet();
             if(!createIndexResponse.isAcknowledged()) {
-                throw new Exception("Could not create index 'product-data'");
+                throw new RuntimeException("Could not create index 'iot-factory-data'");
             }
         }
 
         // Check if the product-data index exists and create it, if it doesn't.
         IndicesExistsRequest productDataIndexExistsRequest =
-            indicesAdminClient.prepareExists("product-data").request();
+            indicesAdminClient.prepareExists("iot-product-data").request();
         if(!indicesAdminClient.exists(productDataIndexExistsRequest).actionGet().isExists()) {
-            CreateIndexRequest createIndexRequest = new CreateIndexRequest("product-data");
+            CreateIndexRequest createIndexRequest = new CreateIndexRequest("iot-product-data");
             createIndexRequest.mapping("ProductData",
                 "{\n" +
                     "            \"properties\": {\n" +
@@ -107,7 +113,7 @@ public class IotElasticsearchFactory {
                     "        }", XContentType.JSON);
             CreateIndexResponse createIndexResponse = indicesAdminClient.create(createIndexRequest).actionGet();
             if(!createIndexResponse.isAcknowledged()) {
-                throw new Exception("Could not create index 'product-data'");
+                throw new RuntimeException("Could not create index 'iot-product-data'");
             }
         }
     }
@@ -134,75 +140,16 @@ public class IotElasticsearchFactory {
             TStream<Byte> plcOutputStates = top.poll(plcSupplier, 100, TimeUnit.MILLISECONDS);
 
             // 3a) Create a stream that pumps all data into a 'factory-data' index.
-            TStream<XContentBuilder> factoryData = plcOutputStates.map(value -> {
-                boolean conveyorEntry = (value & 1) != 0;
-                boolean load = (value & 2) != 0;
-                boolean unload = (value & 4) != 0;
-                boolean transferLeft = (value & 8) != 0;
-                boolean transferRight = (value & 16) != 0;
-                boolean conveyorLeft = (value & 32) != 0;
-                boolean conveyorRight = (value & 64) != 0;
-
-                try {
-                    return XContentFactory.jsonBuilder()
-                        .startObject()
-                        .field("time", Calendar.getInstance().getTimeInMillis())
-                        .field("conveyorEntry", conveyorEntry)
-                        .field("load", load)
-                        .field( "unload", unload)
-                        .field( "transferLeft", transferLeft)
-                        .field( "transferRight", transferRight)
-                        .field( "conveyorLeft", conveyorLeft)
-                        .field( "conveyorRight", conveyorRight)
-                        .endObject();
-                } catch (IOException e) {
-                    e.printStackTrace();
-                }
-                return null;
-            });
+            TStream<XContentBuilder> factoryData = plcOutputStates.map(this::translatePlcInput);
             TStream<IndexResponse> factoryDataResponses = factoryData.map(
-                value -> esClient.prepareIndex("factory-data", "FactoryData").setSource(value).get());
+                value -> esClient.prepareIndex("iot-factory-data", "FactoryData").setSource(value).get());
             factoryDataResponses.print();
 
             // 3b) Create a stream that does some local analysis to detect big and small boxes and to only output
             //     something to the 'product-data' index, if a new item is detected.
-            TStream<XContentBuilder> productData = plcOutputStates.map(value -> {
-                    boolean transferLeft = (value & 8) != 0;
-                    boolean transferRight = (value & 16) != 0;
-
-                    if (conveyorState == ConveyorState.STOPPED) {
-                        if (transferLeft | transferRight) {
-                            if (transferLeft) {
-                                conveyorState = ConveyorState.RUNNING_LEFT;
-                                try {
-                                    return XContentFactory.jsonBuilder()
-                                        .startObject()
-                                        .field("time", Calendar.getInstance().getTimeInMillis())
-                                        .field("type", "small")
-                                        .endObject();
-                                } catch (IOException e) {
-                                    e.printStackTrace();
-                                }
-                            } else {
-                                conveyorState = ConveyorState.RUNNING_RIGHT;
-                                try {
-                                    return XContentFactory.jsonBuilder()
-                                        .startObject()
-                                        .field("time", Calendar.getInstance().getTimeInMillis())
-                                        .field("type", "large")
-                                        .endObject();
-                                } catch (IOException e) {
-                                    e.printStackTrace();
-                                }
-                            }
-                        }
-                    } else if (!(transferLeft | transferRight)) {
-                        conveyorState = ConveyorState.STOPPED;
-                    }
-                    return null;
-                });
+            TStream<XContentBuilder> productData = plcOutputStates.map(this::handlePlcInput);
             TStream<IndexResponse> productDataResponses = productData.map(
-                value -> esClient.prepareIndex("product-data", "ProductData").setSource(value).get());
+                value -> esClient.prepareIndex("iot-product-data", "ProductData").setSource(value).get());
             productDataResponses.print();
 
             // Submit the topology and hereby start the event streams.
@@ -210,15 +157,69 @@ public class IotElasticsearchFactory {
         }
     }
 
-    public static void main(String[] args) throws Exception {
-        IotElasticsearchFactory factory = new IotElasticsearchFactory();
-        factory.runFactory();
+    private XContentBuilder translatePlcInput(Byte input) {
+        boolean conveyorEntry = (input & 1) != 0;
+        boolean load = (input & 2) != 0;
+        boolean unload = (input & 4) != 0;
+        boolean transferLeft = (input & 8) != 0;
+        boolean transferRight = (input & 16) != 0;
+        boolean conveyorLeft = (input & 32) != 0;
+        boolean conveyorRight = (input & 64) != 0;
+
+        try {
+            return XContentFactory.jsonBuilder()
+                .startObject()
+                .field("time", Calendar.getInstance().getTimeInMillis())
+                .field("conveyorEntry", conveyorEntry)
+                .field("load", load)
+                .field( "unload", unload)
+                .field( "transferLeft", transferLeft)
+                .field( "transferRight", transferRight)
+                .field( "conveyorLeft", conveyorLeft)
+                .field( "conveyorRight", conveyorRight)
+                .endObject();
+        } catch (IOException e) {
+            throw new RuntimeException("Error building JSON message.", e);
+        }
     }
 
-    private static class MyNode extends Node {
-        private MyNode(Settings preparedSettings, Collection<Class<? extends Plugin>> classpathPlugins) {
-            super(InternalSettingsPreparer.prepareEnvironment(preparedSettings, null), classpathPlugins);
+    private XContentBuilder handlePlcInput(Byte input) {
+        boolean transferLeft = (input & 8) != 0;
+        boolean transferRight = (input & 16) != 0;
+
+        if (conveyorState == ConveyorState.STOPPED) {
+            if (transferLeft) {
+                conveyorState = ConveyorState.RUNNING_LEFT;
+                try {
+                    return XContentFactory.jsonBuilder()
+                        .startObject()
+                        .field("time", Calendar.getInstance().getTimeInMillis())
+                        .field("type", "small")
+                        .endObject();
+                } catch (IOException e) {
+                    throw new RuntimeException("Error building JSON message.", e);
+                }
+            } else if (transferRight){
+                conveyorState = ConveyorState.RUNNING_RIGHT;
+                try {
+                    return XContentFactory.jsonBuilder()
+                        .startObject()
+                        .field("time", Calendar.getInstance().getTimeInMillis())
+                        .field("type", "large")
+                        .endObject();
+                } catch (IOException e) {
+                    throw new RuntimeException("Error building JSON message.", e);
+                }
+            }
+        } else if (!(transferLeft || transferRight)) {
+            conveyorState = ConveyorState.STOPPED;
         }
+        return null;
+    }
+
+    public static void main(String[] args) throws Exception {
+        IotElasticsearchFactory factory = new IotElasticsearchFactory();
+        factory.runFactory();
     }
 
 }

-- 
To stop receiving notification emails like this one, please contact
cdutz@apache.org.