Files
FT546-WCS/ruoyi-wcs-shadow/src/main/java/com/ruoyi/shadow/kernel/ShadowCycleResult.java

68 lines
2.7 KiB
Java

package com.ruoyi.shadow.kernel;
import com.ruoyi.ft546.protocol.Ft546EncodedCommand;
import com.ruoyi.ft546.protocol.Ft546SrgvCommandIntent;
import com.ruoyi.wcs.application.dispatch.DispatchCycleResult;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public final class ShadowCycleResult {
private final String statusCode;
private final String reasonCode;
private final DispatchCycleResult decisions;
private final List<Ft546SrgvCommandIntent> intents;
private final List<Ft546EncodedCommand> encodedCommands;
private ShadowCycleResult(String statusCode, String reasonCode,
DispatchCycleResult decisions,
List<Ft546SrgvCommandIntent> intents,
List<Ft546EncodedCommand> encodedCommands) {
this.statusCode = statusCode;
this.reasonCode = reasonCode;
this.decisions = decisions;
this.intents = immutable(intents);
this.encodedCommands = immutable(encodedCommands);
}
public static ShadowCycleResult insufficient(String reasonCode) {
return new ShadowCycleResult("INSUFFICIENT_FACTS", reasonCode, null,
Collections.<Ft546SrgvCommandIntent>emptyList(),
Collections.<Ft546EncodedCommand>emptyList());
}
public static ShadowCycleResult retry(DispatchCycleResult decisions) {
return new ShadowCycleResult("RETRY_SNAPSHOT_CHANGED",
"SHADOW_TRAFFIC_STATE_CHANGED", decisions,
Collections.<Ft546SrgvCommandIntent>emptyList(),
Collections.<Ft546EncodedCommand>emptyList());
}
public static ShadowCycleResult comparable(
DispatchCycleResult decisions,
List<Ft546SrgvCommandIntent> intents,
List<Ft546EncodedCommand> encodedCommands) {
return new ShadowCycleResult("COMPARABLE", null, decisions, intents,
encodedCommands);
}
public static ShadowCycleResult degraded(String reasonCode) {
return new ShadowCycleResult("DEGRADED", reasonCode, null,
Collections.<Ft546SrgvCommandIntent>emptyList(),
Collections.<Ft546EncodedCommand>emptyList());
}
public String getStatusCode() { return statusCode; }
public String getReasonCode() { return reasonCode; }
public DispatchCycleResult getDecisions() { return decisions; }
public List<Ft546SrgvCommandIntent> getIntents() { return intents; }
public List<Ft546EncodedCommand> getEncodedCommands() {
return encodedCommands;
}
private static <T> List<T> immutable(List<T> source) {
return Collections.unmodifiableList(new ArrayList<T>(source));
}
}