thingsboard-aplcache

Fix Dashboards dump parsing

2/27/2018 2:32:36 PM

Details

diff --git a/application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java b/application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java
index 44f42dd..d26565f 100644
--- a/application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java
+++ b/application/src/main/java/org/thingsboard/server/service/install/DatabaseHelper.java
@@ -55,7 +55,7 @@ public class DatabaseHelper {
 
     public static void upgradeTo40_assignDashboards(Path dashboardsDump, DashboardService dashboardService, boolean sql) throws Exception {
         String[] columns = new String[]{ID, TENANT_ID, CUSTOMER_ID, TITLE, SEARCH_TEXT, ASSIGNED_CUSTOMERS, CONFIGURATION};
-        try (CSVParser csvParser = new CSVParser(Files.newBufferedReader(dashboardsDump), CSV_DUMP_FORMAT.withHeader(columns))) {
+        try (CSVParser csvParser = new CSVParser(Files.newBufferedReader(dashboardsDump), CSV_DUMP_FORMAT.withFirstRecordAsHeader())) {
             csvParser.forEach(record -> {
                 String customerIdString = record.get(CUSTOMER_ID);
                 String assignedCustomersString = record.get(ASSIGNED_CUSTOMERS);
@@ -66,14 +66,20 @@ public class DatabaseHelper {
                         JsonNode assignedCustomersJson = objectMapper.readTree(assignedCustomersString);
                         Map<String,String> assignedCustomers = objectMapper.treeToValue(assignedCustomersJson, HashMap.class);
                         assignedCustomers.forEach((strCustomerId, title) -> {
-                            customerIds.add(new CustomerId(UUID.fromString(strCustomerId)));
+                            CustomerId customerId = new CustomerId(UUID.fromString(strCustomerId));
+                            if (!customerId.isNullUid()) {
+                                customerIds.add(new CustomerId(UUID.fromString(strCustomerId)));
+                            }
                         });
                     } catch (IOException e) {
                         log.error("Unable to parse assigned customers field", e);
                     }
                 }
                 if (!StringUtils.isEmpty(customerIdString)) {
-                    customerIds.add(new CustomerId(toUUID(customerIdString, sql)));
+                    CustomerId customerId = new CustomerId(toUUID(customerIdString, sql));
+                    if (!customerId.isNullUid()) {
+                        customerIds.add(new CustomerId(toUUID(customerIdString, sql)));
+                    }
                 }
                 for (CustomerId customerId : customerIds) {
                     dashboardService.assignDashboardToCustomer(dashboardId, customerId);