Browse Source

Refactored edge rule chains storage

pull/3957/head
Volodymyr Babak 6 years ago
parent
commit
e5753c0360
  1. 0
      application/src/main/data/json/demo/edge_management/rule_chains/edge_root_rule_chain.json
  2. 0
      application/src/main/data/json/tenant/edge_management/rule_chains/edge_root_rule_chain.json
  3. 3
      application/src/main/java/org/thingsboard/server/controller/TenantController.java
  4. 38
      application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java
  5. 2
      application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java
  6. 2
      dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java

0
application/src/main/data/json/demo/rule_chains/edge_root_rule_chain.json → application/src/main/data/json/demo/edge_management/rule_chains/edge_root_rule_chain.json

0
application/src/main/data/json/tenant/rule_chains/edge_root_rule_chain.json → application/src/main/data/json/tenant/edge_management/rule_chains/edge_root_rule_chain.json

3
application/src/main/java/org/thingsboard/server/controller/TenantController.java

@ -77,6 +77,9 @@ public class TenantController extends BaseController {
tenant = checkNotNull(tenantService.saveTenant(tenant)); tenant = checkNotNull(tenantService.saveTenant(tenant));
if (newTenant) { if (newTenant) {
installScripts.createDefaultRuleChains(tenant.getId()); installScripts.createDefaultRuleChains(tenant.getId());
if (edgesEnabled) {
installScripts.createDefaultEdgeRuleChains(tenant.getId());
}
} }
return tenant; return tenant;
} catch (Exception e) { } catch (Exception e) {

38
application/src/main/java/org/thingsboard/server/service/install/InstallScripts.java

@ -28,7 +28,6 @@ import org.thingsboard.server.common.data.id.RuleChainId;
import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.TenantId;
import org.thingsboard.server.common.data.rule.RuleChain; import org.thingsboard.server.common.data.rule.RuleChain;
import org.thingsboard.server.common.data.rule.RuleChainMetaData; import org.thingsboard.server.common.data.rule.RuleChainMetaData;
import org.thingsboard.server.common.data.rule.RuleChainType;
import org.thingsboard.server.common.data.widget.WidgetType; import org.thingsboard.server.common.data.widget.WidgetType;
import org.thingsboard.server.common.data.widget.WidgetsBundle; import org.thingsboard.server.common.data.widget.WidgetsBundle;
import org.thingsboard.server.dao.dashboard.DashboardService; import org.thingsboard.server.dao.dashboard.DashboardService;
@ -36,7 +35,6 @@ import org.thingsboard.server.dao.rule.RuleChainService;
import org.thingsboard.server.dao.widget.WidgetTypeService; import org.thingsboard.server.dao.widget.WidgetTypeService;
import org.thingsboard.server.dao.widget.WidgetsBundleService; import org.thingsboard.server.dao.widget.WidgetsBundleService;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.file.DirectoryStream; import java.nio.file.DirectoryStream;
import java.nio.file.Files; import java.nio.file.Files;
@ -64,6 +62,8 @@ public class InstallScripts {
public static final String WIDGET_BUNDLES_DIR = "widget_bundles"; public static final String WIDGET_BUNDLES_DIR = "widget_bundles";
public static final String DASHBOARDS_DIR = "dashboards"; public static final String DASHBOARDS_DIR = "dashboards";
public static final String EDGE_MANAGEMENT = "edge_management";
public static final String JSON_EXT = ".json"; public static final String JSON_EXT = ".json";
@Value("${install.data_dir:}") @Value("${install.data_dir:}")
@ -81,10 +81,14 @@ public class InstallScripts {
@Autowired @Autowired
private WidgetsBundleService widgetsBundleService; private WidgetsBundleService widgetsBundleService;
public Path getTenantRuleChainsDir() { private Path getTenantRuleChainsDir() {
return Paths.get(getDataDir(), JSON_DIR, TENANT_DIR, RULE_CHAINS_DIR); return Paths.get(getDataDir(), JSON_DIR, TENANT_DIR, RULE_CHAINS_DIR);
} }
private Path getEdgeRuleChainsDir() {
return Paths.get(getDataDir(), JSON_DIR, TENANT_DIR, EDGE_MANAGEMENT, RULE_CHAINS_DIR);
}
public String getDataDir() { public String getDataDir() {
if (!StringUtils.isEmpty(dataDir)) { if (!StringUtils.isEmpty(dataDir)) {
if (!Paths.get(this.dataDir).toFile().isDirectory()) { if (!Paths.get(this.dataDir).toFile().isDirectory()) {
@ -108,18 +112,22 @@ public class InstallScripts {
public void createDefaultRuleChains(TenantId tenantId) throws IOException { public void createDefaultRuleChains(TenantId tenantId) throws IOException {
Path tenantChainsDir = getTenantRuleChainsDir(); Path tenantChainsDir = getTenantRuleChainsDir();
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(tenantChainsDir, path -> path.toString().endsWith(InstallScripts.JSON_EXT))) { loadRuleChainsFromPath(tenantId, tenantChainsDir);
}
public void createDefaultEdgeRuleChains(TenantId tenantId) throws IOException {
Path edgeChainsDir = getEdgeRuleChainsDir();
loadRuleChainsFromPath(tenantId, edgeChainsDir);
}
private void loadRuleChainsFromPath(TenantId tenantId, Path ruleChainsPath) throws IOException {
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(ruleChainsPath, path -> path.toString().endsWith(InstallScripts.JSON_EXT))) {
dirStream.forEach( dirStream.forEach(
path -> loadRuleChainFromFile(tenantId, path) path -> loadRuleChainFromFile(tenantId, path)
); );
} }
} }
public void createDefaultEdgeRuleChains(TenantId tenantId) {
Path tenantChainsDir = getTenantRuleChainsDir();
loadRuleChainFromFile(tenantId, tenantChainsDir.resolve("edge_root_rule_chain.json"));
}
public void loadSystemWidgets() throws Exception { public void loadSystemWidgets() throws Exception {
Path widgetBundlesDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, WIDGET_BUNDLES_DIR); Path widgetBundlesDir = Paths.get(getDataDir(), JSON_DIR, SYSTEM_DIR, WIDGET_BUNDLES_DIR);
try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(widgetBundlesDir, path -> path.toString().endsWith(JSON_EXT))) { try (DirectoryStream<Path> dirStream = Files.newDirectoryStream(widgetBundlesDir, path -> path.toString().endsWith(JSON_EXT))) {
@ -174,7 +182,6 @@ public class InstallScripts {
} }
} }
public void loadDemoRuleChains(TenantId tenantId) throws Exception { public void loadDemoRuleChains(TenantId tenantId) throws Exception {
Path ruleChainsDir = Paths.get(getDataDir(), JSON_DIR, DEMO_DIR, RULE_CHAINS_DIR); Path ruleChainsDir = Paths.get(getDataDir(), JSON_DIR, DEMO_DIR, RULE_CHAINS_DIR);
try { try {
@ -196,8 +203,17 @@ public class InstallScripts {
rootChain = ruleChainService.saveRuleChain(rootChain); rootChain = ruleChainService.saveRuleChain(rootChain);
rootChainMetaData.setRuleChainId(rootChain.getId()); rootChainMetaData.setRuleChainId(rootChain.getId());
ruleChainService.saveRuleChainMetaData(new TenantId(EntityId.NULL_UUID), rootChainMetaData); ruleChainService.saveRuleChainMetaData(new TenantId(EntityId.NULL_UUID), rootChainMetaData);
} catch (Exception e) {
log.error("Unable to load dashboard from json", e);
throw new RuntimeException("Unable to load dashboard from json", e);
}
loadEdgeDemoRuleChains(tenantId);
}
loadRuleChainFromFile(tenantId, ruleChainsDir.resolve("edge_root_rule_chain.json")); private void loadEdgeDemoRuleChains(TenantId tenantId) throws Exception {
Path edgeRuleChainsDir = Paths.get(getDataDir(), JSON_DIR, DEMO_DIR, EDGE_MANAGEMENT, RULE_CHAINS_DIR);
try {
loadRuleChainFromFile(tenantId, edgeRuleChainsDir.resolve("edge_root_rule_chain.json"));
} catch (Exception e) { } catch (Exception e) {
log.error("Unable to load dashboard from json", e); log.error("Unable to load dashboard from json", e);
throw new RuntimeException("Unable to load dashboard from json", e); throw new RuntimeException("Unable to load dashboard from json", e);

2
application/src/main/java/org/thingsboard/server/service/install/PsqlTsDatabaseUpgradeService.java

@ -203,7 +203,7 @@ public class PsqlTsDatabaseUpgradeService extends AbstractSqlTsDatabaseUpgradeSe
break; break;
case "2.5.5": case "2.5.5":
try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) { try (Connection conn = DriverManager.getConnection(dbUrl, dbUserName, dbPassword)) {
log.info("Load TTL functions ..."); log.info("Load Edge TTL functions ...");
loadSql(conn, "2.6.0", LOAD_TTL_FUNCTIONS_SQL); loadSql(conn, "2.6.0", LOAD_TTL_FUNCTIONS_SQL);
} }
break; break;

2
dao/src/main/java/org/thingsboard/server/dao/rule/BaseRuleChainService.java

@ -91,7 +91,7 @@ public class BaseRuleChainService extends AbstractEntityService implements RuleC
EntityRelation.CONTAINS_TYPE, RelationTypeGroup.RULE_CHAIN)); EntityRelation.CONTAINS_TYPE, RelationTypeGroup.RULE_CHAIN));
} catch (Exception e) { } catch (Exception e) {
log.warn("[{}] Failed to create tenant to root rule chain relation. from: [{}], to: [{}]", log.warn("[{}] Failed to create tenant to root rule chain relation. from: [{}], to: [{}]",
savedRuleChain.getTenantId(), savedRuleChain.getId()); savedRuleChain.getTenantId(), savedRuleChain.getTenantId(), savedRuleChain.getId(), e);
throw new RuntimeException(e); throw new RuntimeException(e);
} }
} }

Loading…
Cancel
Save