added configuration version to component descriptor
This commit is contained in:
parent
1ebd385c8c
commit
cca276dcbf
@ -28,6 +28,7 @@ import org.thingsboard.rule.engine.api.NodeConfiguration;
|
||||
import org.thingsboard.rule.engine.api.NodeDefinition;
|
||||
import org.thingsboard.rule.engine.api.RuleNode;
|
||||
import org.thingsboard.rule.engine.api.TbRelationTypes;
|
||||
import org.thingsboard.rule.engine.api.TbVersionedNode;
|
||||
import org.thingsboard.server.common.data.id.TenantId;
|
||||
import org.thingsboard.server.common.data.plugin.ComponentDescriptor;
|
||||
import org.thingsboard.server.common.data.plugin.ComponentType;
|
||||
@ -148,6 +149,11 @@ public class AnnotationComponentDiscoveryService implements ComponentDiscoverySe
|
||||
scannedComponent.setType(type);
|
||||
Class<?> clazz = Class.forName(clazzName);
|
||||
RuleNode ruleNodeAnnotation = clazz.getAnnotation(RuleNode.class);
|
||||
if (TbVersionedNode.class.isAssignableFrom(clazz)) {
|
||||
TbVersionedNode tbVersionNode = (TbVersionedNode) clazz.getDeclaredConstructor().newInstance();
|
||||
int currentVersion = tbVersionNode.getCurrentVersion();
|
||||
scannedComponent.setConfigurationVersion(currentVersion);
|
||||
}
|
||||
scannedComponent.setName(ruleNodeAnnotation.name());
|
||||
scannedComponent.setScope(ruleNodeAnnotation.scope());
|
||||
scannedComponent.setClusteringMode(ruleNodeAnnotation.clusteringMode());
|
||||
|
||||
@ -720,6 +720,10 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService
|
||||
if (isOldSchema(conn, 3005000)) {
|
||||
schemaUpdateFile = Paths.get(installScripts.getDataDir(), "upgrade", "3.5.0", SCHEMA_UPDATE_SQL);
|
||||
loadSql(schemaUpdateFile, conn);
|
||||
try {
|
||||
conn.createStatement().execute("ALTER TABLE component_descriptor ADD COLUMN IF NOT EXISTS configuration_version int DEFAULT 0;");
|
||||
} catch (Exception e) {
|
||||
}
|
||||
try {
|
||||
conn.createStatement().execute("ALTER TABLE rule_node ADD COLUMN IF NOT EXISTS configuration_version int DEFAULT 0;");
|
||||
} catch (Exception e) {
|
||||
|
||||
@ -25,6 +25,8 @@ import org.thingsboard.server.common.data.SearchTextBased;
|
||||
import org.thingsboard.server.common.data.id.ComponentDescriptorId;
|
||||
import org.thingsboard.server.common.data.validation.Length;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Andrew Shvayka
|
||||
*/
|
||||
@ -47,8 +49,10 @@ public class ComponentDescriptor extends SearchTextBased<ComponentDescriptorId>
|
||||
@Getter @Setter private String clazz;
|
||||
@ApiModelProperty(position = 8, value = "Complex JSON object that represents the Rule Node configuration.", accessMode = ApiModelProperty.AccessMode.READ_ONLY)
|
||||
@Getter @Setter private transient JsonNode configurationDescriptor;
|
||||
@ApiModelProperty(position = 9, value = "Rule node configuration version. By default, this value is 0. If the rule node is a versioned node, this value might be greater than 0.", accessMode = ApiModelProperty.AccessMode.READ_ONLY)
|
||||
@Getter @Setter private int configurationVersion;
|
||||
@Length(fieldName = "actions")
|
||||
@ApiModelProperty(position = 9, value = "Rule Node Actions. Deprecated. Always null.", accessMode = ApiModelProperty.AccessMode.READ_ONLY)
|
||||
@ApiModelProperty(position = 10, value = "Rule Node Actions. Deprecated. Always null.", accessMode = ApiModelProperty.AccessMode.READ_ONLY)
|
||||
@Getter @Setter private String actions;
|
||||
|
||||
public ComponentDescriptor() {
|
||||
@ -63,9 +67,11 @@ public class ComponentDescriptor extends SearchTextBased<ComponentDescriptorId>
|
||||
super(plugin);
|
||||
this.type = plugin.getType();
|
||||
this.scope = plugin.getScope();
|
||||
this.clusteringMode = plugin.getClusteringMode();
|
||||
this.name = plugin.getName();
|
||||
this.clazz = plugin.getClazz();
|
||||
this.configurationDescriptor = plugin.getConfigurationDescriptor();
|
||||
this.configurationVersion = plugin.getConfigurationVersion();
|
||||
this.actions = plugin.getActions();
|
||||
}
|
||||
|
||||
@ -98,10 +104,11 @@ public class ComponentDescriptor extends SearchTextBased<ComponentDescriptorId>
|
||||
|
||||
if (type != that.type) return false;
|
||||
if (scope != that.scope) return false;
|
||||
if (name != null ? !name.equals(that.name) : that.name != null) return false;
|
||||
if (actions != null ? !actions.equals(that.actions) : that.actions != null) return false;
|
||||
if (configurationDescriptor != null ? !configurationDescriptor.equals(that.configurationDescriptor) : that.configurationDescriptor != null) return false;
|
||||
return clazz != null ? clazz.equals(that.clazz) : that.clazz == null;
|
||||
if (!Objects.equals(name, that.name)) return false;
|
||||
if (!Objects.equals(actions, that.actions)) return false;
|
||||
if (!Objects.equals(configurationDescriptor, that.configurationDescriptor)) return false;
|
||||
if (configurationVersion != that.configurationVersion) return false;
|
||||
return Objects.equals(clazz, that.clazz);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -337,6 +337,7 @@ public class ModelConstants {
|
||||
public static final String COMPONENT_DESCRIPTOR_NAME_PROPERTY = "name";
|
||||
public static final String COMPONENT_DESCRIPTOR_CLASS_PROPERTY = "clazz";
|
||||
public static final String COMPONENT_DESCRIPTOR_CONFIGURATION_DESCRIPTOR_PROPERTY = "configuration_descriptor";
|
||||
public static final String COMPONENT_DESCRIPTOR_CONFIGURATION_VERSION_PROPERTY = "configuration_version";
|
||||
public static final String COMPONENT_DESCRIPTOR_ACTIONS_PROPERTY = "actions";
|
||||
|
||||
/**
|
||||
|
||||
@ -65,6 +65,9 @@ public class ComponentDescriptorEntity extends BaseSqlEntity<ComponentDescriptor
|
||||
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_CONFIGURATION_DESCRIPTOR_PROPERTY)
|
||||
private JsonNode configurationDescriptor;
|
||||
|
||||
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_CONFIGURATION_VERSION_PROPERTY)
|
||||
private int configurationVersion;
|
||||
|
||||
@Column(name = ModelConstants.COMPONENT_DESCRIPTOR_ACTIONS_PROPERTY)
|
||||
private String actions;
|
||||
|
||||
@ -86,6 +89,7 @@ public class ComponentDescriptorEntity extends BaseSqlEntity<ComponentDescriptor
|
||||
this.name = component.getName();
|
||||
this.clazz = component.getClazz();
|
||||
this.configurationDescriptor = component.getConfigurationDescriptor();
|
||||
this.configurationVersion = component.getConfigurationVersion();
|
||||
this.searchText = component.getName();
|
||||
}
|
||||
|
||||
@ -100,6 +104,7 @@ public class ComponentDescriptorEntity extends BaseSqlEntity<ComponentDescriptor
|
||||
data.setClazz(this.getClazz());
|
||||
data.setActions(this.getActions());
|
||||
data.setConfigurationDescriptor(configurationDescriptor);
|
||||
data.setConfigurationVersion(configurationVersion);
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
@ -73,6 +73,7 @@ public abstract class AbstractComponentDescriptorInsertRepository implements Com
|
||||
.setParameter("actions", entity.getActions())
|
||||
.setParameter("clazz", entity.getClazz())
|
||||
.setParameter("configuration_descriptor", entity.getConfigurationDescriptor().toString())
|
||||
.setParameter("configuration_version", entity.getConfigurationVersion())
|
||||
.setParameter("name", entity.getName())
|
||||
.setParameter("scope", entity.getScope().name())
|
||||
.setParameter("search_text", entity.getSearchText())
|
||||
|
||||
@ -44,10 +44,10 @@ public class SqlComponentDescriptorInsertRepository extends AbstractComponentDes
|
||||
}
|
||||
|
||||
private static String getInsertOrUpdateStatement(String conflictKeyStatement, String updateKeyStatement) {
|
||||
return "INSERT INTO component_descriptor (id, created_time, actions, clazz, configuration_descriptor, name, scope, search_text, type, clustering_mode) VALUES (:id, :created_time, :actions, :clazz, :configuration_descriptor, :name, :scope, :search_text, :type, :clustering_mode) ON CONFLICT " + conflictKeyStatement + " DO UPDATE SET " + updateKeyStatement + " returning *";
|
||||
return "INSERT INTO component_descriptor (id, created_time, actions, clazz, configuration_descriptor, configuration_version, name, scope, search_text, type, clustering_mode) VALUES (:id, :created_time, :actions, :clazz, :configuration_descriptor, :configuration_version, :name, :scope, :search_text, :type, :clustering_mode) ON CONFLICT " + conflictKeyStatement + " DO UPDATE SET " + updateKeyStatement + " returning *";
|
||||
}
|
||||
|
||||
private static String getUpdateStatement(String id) {
|
||||
return "actions = :actions, " + id + ",created_time = :created_time, configuration_descriptor = :configuration_descriptor, name = :name, scope = :scope, search_text = :search_text, type = :type, clustering_mode = :clustering_mode";
|
||||
return "actions = :actions, " + id + ",created_time = :created_time, configuration_descriptor = :configuration_descriptor, configuration_version = :configuration_version, name = :name, scope = :scope, search_text = :search_text, type = :type, clustering_mode = :clustering_mode";
|
||||
}
|
||||
}
|
||||
|
||||
@ -122,6 +122,7 @@ CREATE TABLE IF NOT EXISTS component_descriptor (
|
||||
actions varchar(255),
|
||||
clazz varchar UNIQUE,
|
||||
configuration_descriptor varchar,
|
||||
configuration_version int DEFAULT 0,
|
||||
name varchar(255),
|
||||
scope varchar(255),
|
||||
search_text varchar(255),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user