Browse Source

refactoring

pull/14535/head
IrynaMatveieva 8 months ago
parent
commit
530f9dcb90
  1. 44
      application/src/main/java/org/thingsboard/server/service/cf/ctx/state/CalculatedFieldCtx.java
  2. 22
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributesImmediateOutputStrategy.java
  3. 11
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributesRuleChainOutputStrategy.java
  4. 6
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategy.java
  5. 21
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesImmediateOutputStrategy.java
  6. 11
      common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesRuleChainOutputStrategy.java

44
application/src/main/java/org/thingsboard/server/service/cf/ctx/state/CalculatedFieldCtx.java

@ -37,14 +37,12 @@ import org.thingsboard.server.common.data.cf.configuration.AlarmCalculatedFieldC
import org.thingsboard.server.common.data.cf.configuration.Argument;
import org.thingsboard.server.common.data.cf.configuration.ArgumentType;
import org.thingsboard.server.common.data.cf.configuration.ArgumentsBasedCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.AttributesImmediateOutputStrategy;
import org.thingsboard.server.common.data.cf.configuration.ExpressionBasedCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.Output;
import org.thingsboard.server.common.data.cf.configuration.PropagationCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.ReferencedEntityKey;
import org.thingsboard.server.common.data.cf.configuration.ScheduledUpdateSupportedCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.SimpleCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.TimeSeriesImmediateOutputStrategy;
import org.thingsboard.server.common.data.cf.configuration.aggregation.AggFunctionInput;
import org.thingsboard.server.common.data.cf.configuration.aggregation.RelatedEntitiesAggregationCalculatedFieldConfiguration;
import org.thingsboard.server.common.data.cf.configuration.aggregation.single.EntityAggregationCalculatedFieldConfiguration;
@ -641,27 +639,10 @@ public class CalculatedFieldCtx implements Closeable {
public boolean hasRefreshContextOnlyChanges(CalculatedFieldCtx other) { // has changes that do not require state recalculation
var thisOutputStrategy = calculatedField.getConfiguration().getOutput().getStrategy();
var otherOutputStrategy = other.getCalculatedField().getConfiguration().getOutput().getStrategy();
if (!thisOutputStrategy.getType().equals(otherOutputStrategy.getType())) {
if (thisOutputStrategy.hasRefreshContextOnlyChanges(otherOutputStrategy)) {
return true;
}
if (thisOutputStrategy instanceof TimeSeriesImmediateOutputStrategy thisTsOutputStrategy
&& otherOutputStrategy instanceof TimeSeriesImmediateOutputStrategy otherTsOutputStrategy) {
if (thisTsOutputStrategy.getTtl() != otherTsOutputStrategy.getTtl()) {
return true;
}
}
if (thisOutputStrategy instanceof AttributesImmediateOutputStrategy thisAttrOutputStrategy
&& otherOutputStrategy instanceof AttributesImmediateOutputStrategy otherAttrOutputStrategy) {
boolean updateAttrOnValueChangedChanged = thisAttrOutputStrategy.isUpdateAttributesOnlyOnValueChange() != otherAttrOutputStrategy.isUpdateAttributesOnlyOnValueChange();
boolean sendAttrUpdatedNotificationChanged = thisAttrOutputStrategy.isSendAttributesUpdatedNotification() != otherAttrOutputStrategy.isSendAttributesUpdatedNotification();
if (updateAttrOnValueChangedChanged || sendAttrUpdatedNotificationChanged) {
return true;
}
}
if (calculatedField.getConfiguration() instanceof EntityAggregationCalculatedFieldConfiguration thisConfig
&& other.getCalculatedField().getConfiguration() instanceof EntityAggregationCalculatedFieldConfiguration otherConfig) {
if (thisConfig.isProduceIntermediateResult() != otherConfig.isProduceIntermediateResult()) {
@ -759,28 +740,9 @@ public class CalculatedFieldCtx implements Closeable {
if (!Objects.equals(output.getDecimalsByDefault(), otherOutput.getDecimalsByDefault())) {
return true;
}
var thisOutputStrategy = output.getStrategy();
var otherOutputStrategy = otherOutput.getStrategy();
if (thisOutputStrategy instanceof TimeSeriesImmediateOutputStrategy thisTimeSeriesImmediateOutputStrategy
&& otherOutputStrategy instanceof TimeSeriesImmediateOutputStrategy otherTimeSeriesImmediateOutputStrategy) {
boolean saveTimeSeriesUpdated = thisTimeSeriesImmediateOutputStrategy.isSaveTimeSeries() != otherTimeSeriesImmediateOutputStrategy.isSaveTimeSeries();
boolean saveLatestUpdated = thisTimeSeriesImmediateOutputStrategy.isSaveLatest() != otherTimeSeriesImmediateOutputStrategy.isSaveLatest();
boolean sendWsUpdateUpdated = thisTimeSeriesImmediateOutputStrategy.isSendWsUpdate() != otherTimeSeriesImmediateOutputStrategy.isSendWsUpdate();
boolean processCfsUpdated = thisTimeSeriesImmediateOutputStrategy.isProcessCfs() != otherTimeSeriesImmediateOutputStrategy.isProcessCfs();
return saveTimeSeriesUpdated || saveLatestUpdated || sendWsUpdateUpdated || processCfsUpdated;
}
if (thisOutputStrategy instanceof AttributesImmediateOutputStrategy thisAttributesImmediateOutputStrategy
&& otherOutputStrategy instanceof AttributesImmediateOutputStrategy otherAttributesImmediateOutputStrategy) {
boolean saveTimeSeriesUpdated = thisAttributesImmediateOutputStrategy.isSaveAttribute() != otherAttributesImmediateOutputStrategy.isSaveAttribute();
boolean sendWsUpdateUpdated = thisAttributesImmediateOutputStrategy.isSendWsUpdate() != otherAttributesImmediateOutputStrategy.isSendWsUpdate();
boolean processCfsUpdated = thisAttributesImmediateOutputStrategy.isProcessCfs() != otherAttributesImmediateOutputStrategy.isProcessCfs();
return saveTimeSeriesUpdated || sendWsUpdateUpdated || processCfsUpdated;
if (output.getStrategy().hasContextOnlyChanges(otherOutput.getStrategy())) {
return true;
}
return false;
}

22
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributesImmediateOutputStrategy.java

@ -35,4 +35,26 @@ public class AttributesImmediateOutputStrategy implements AttributesOutputStrate
public OutputStrategyType getType() {
return OutputStrategyType.IMMEDIATE;
}
@Override
public boolean hasContextOnlyChanges(OutputStrategy other) {
if (!(other instanceof AttributesImmediateOutputStrategy otherStrategy)) {
return true;
}
boolean saveTimeSeriesUpdated = saveAttribute != otherStrategy.isSaveAttribute();
boolean sendWsUpdateUpdated = sendWsUpdate != otherStrategy.isSendWsUpdate();
boolean processCfsUpdated = processCfs != otherStrategy.isProcessCfs();
return saveTimeSeriesUpdated || sendWsUpdateUpdated || processCfsUpdated;
}
@Override
public boolean hasRefreshContextOnlyChanges(OutputStrategy other) {
if (!(other instanceof AttributesImmediateOutputStrategy otherStrategy)) {
return true;
}
boolean updateAttrOnValueChangedChanged = updateAttributesOnlyOnValueChange != otherStrategy.isUpdateAttributesOnlyOnValueChange();
boolean sendAttrUpdatedNotificationChanged = sendAttributesUpdatedNotification != otherStrategy.isSendAttributesUpdatedNotification();
return updateAttrOnValueChangedChanged || sendAttrUpdatedNotificationChanged;
}
}

11
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/AttributesRuleChainOutputStrategy.java

@ -26,4 +26,15 @@ public class AttributesRuleChainOutputStrategy implements AttributesOutputStrate
public OutputStrategyType getType() {
return OutputStrategyType.RULE_CHAIN;
}
@Override
public boolean hasContextOnlyChanges(OutputStrategy other) {
return !(other instanceof AttributesRuleChainOutputStrategy);
}
@Override
public boolean hasRefreshContextOnlyChanges(OutputStrategy other) {
return false;
}
}

6
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/OutputStrategy.java

@ -22,4 +22,10 @@ public interface OutputStrategy {
@JsonIgnore
OutputStrategyType getType();
@JsonIgnore
boolean hasContextOnlyChanges(OutputStrategy other);
@JsonIgnore
boolean hasRefreshContextOnlyChanges(OutputStrategy other);
}

21
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesImmediateOutputStrategy.java

@ -35,4 +35,25 @@ public class TimeSeriesImmediateOutputStrategy implements TimeSeriesOutputStrate
public OutputStrategyType getType() {
return OutputStrategyType.IMMEDIATE;
}
@Override
public boolean hasContextOnlyChanges(OutputStrategy other) {
if (!(other instanceof TimeSeriesImmediateOutputStrategy otherStrategy)) {
return true;
}
boolean saveTimeSeriesUpdated = saveTimeSeries != otherStrategy.isSaveTimeSeries();
boolean saveLatestUpdated = saveLatest != otherStrategy.isSaveLatest();
boolean sendWsUpdateUpdated = sendWsUpdate != otherStrategy.isSendWsUpdate();
boolean processCfsUpdated = processCfs != otherStrategy.isProcessCfs();
return saveTimeSeriesUpdated || saveLatestUpdated || sendWsUpdateUpdated || processCfsUpdated;
}
@Override
public boolean hasRefreshContextOnlyChanges(OutputStrategy other) {
if (!(other instanceof TimeSeriesImmediateOutputStrategy otherStrategy)) {
return true;
}
return ttl != otherStrategy.getTtl();
}
}

11
common/data/src/main/java/org/thingsboard/server/common/data/cf/configuration/TimeSeriesRuleChainOutputStrategy.java

@ -26,4 +26,15 @@ public class TimeSeriesRuleChainOutputStrategy implements TimeSeriesOutputStrate
public OutputStrategyType getType() {
return OutputStrategyType.RULE_CHAIN;
}
@Override
public boolean hasContextOnlyChanges(OutputStrategy other) {
return !(other instanceof TimeSeriesRuleChainOutputStrategy);
}
@Override
public boolean hasRefreshContextOnlyChanges(OutputStrategy other) {
return false;
}
}

Loading…
Cancel
Save