in uReplicator-Common/src/main/java/com/uber/stream/kafka/mirrormaker/common/core/OnlineOfflineStateModel.java [74:123]
public static ZNRecord generateConfigForOnlineOffline() {
ZNRecord record = new ZNRecord("OnlineOffline");
record.setSimpleField(StateModelDefinitionProperty.INITIAL_STATE.toString(), "OFFLINE");
List<String> statePriorityList = new ArrayList<String>();
statePriorityList.add("ONLINE");
statePriorityList.add("OFFLINE");
statePriorityList.add("DROPPED");
record.setListField(StateModelDefinitionProperty.STATE_PRIORITY_LIST.toString(),
statePriorityList);
for (String state : statePriorityList) {
String key = state + ".meta";
Map<String, String> metadata = new HashMap<String, String>();
if (state.equals("ONLINE")) {
metadata.put("count", "R");
record.setMapField(key, metadata);
}
if (state.equals("OFFLINE")) {
metadata.put("count", "-1");
record.setMapField(key, metadata);
}
if (state.equals("DROPPED")) {
metadata.put("count", "-1");
record.setMapField(key, metadata);
}
}
for (String state : statePriorityList) {
String key = state + ".next";
if (state.equals("ONLINE")) {
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("OFFLINE", "OFFLINE");
metadata.put("DROPPED", "OFFLINE");
record.setMapField(key, metadata);
}
if (state.equals("OFFLINE")) {
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("ONLINE", "ONLINE");
metadata.put("DROPPED", "DROPPED");
record.setMapField(key, metadata);
}
}
List<String> stateTransitionPriorityList = new ArrayList<String>();
stateTransitionPriorityList.add("OFFLINE-ONLINE");
stateTransitionPriorityList.add("ONLINE-OFFLINE");
stateTransitionPriorityList.add("OFFLINE-DROPPED");
record.setListField(StateModelDefinitionProperty.STATE_TRANSITION_PRIORITYLIST.toString(),
stateTransitionPriorityList);
return record;
}