@SuppressWarnings("unchecked") public static List<DataObserveParams> fromSerializableForm(Object[] array) { List<DataObserveParams> selectors = new ArrayList<DataObserveParams>(array != null ? array.length : 5); if (array != null) { for (int i = 0; i < array.length; i++) { selectors.add(array[i] instanceof String ? new DataObserveParams(null, (String)array[i]) : new DataObserveParams((Map<String, Set<String>>)array[i], null)); } } return selectors; }
@Override public String toString() { StringBuilder sb = new StringBuilder(); append(sb); return sb.toString(); } }
private static boolean containsParams(List<DataObserveParams> selectors, DataObserveParams params) { for (DataObserveParams selector : selectors) { if (selector.containsParams(params)) return true; } return false; }
if (paramsProvider != null) { params = new DataObserveParams(); paramsProvider.observes(params); return; // Session expired List<DataObserveParams> selectors = DataObserveParams.fromSerializableForm(gdd.getDestinationDataSelectors(topicName)); List<DataObserveParams> newSelectors = new ArrayList<DataObserveParams>(selectors); String dataSelector = gdd.getDestinationSelector(topicName); if (params != null) { String newDataSelector = params.updateDataSelector(dataSelector, newSelectors); dataSelectorChanged = !newDataSelector.equals(dataSelector); if (dataSelectorChanged) { if (!DataObserveParams.containsSame(selectors, newSelectors)) { log.debug("Selectors changed: %s", newSelectors); gdd.setDestinationDataSelectors(topicName, DataObserveParams.toSerializableForm(newSelectors));
public String updateDataSelector(String dataSelector, List<DataObserveParams> selectors) { if (!containsParams(selectors, this)) { if (!isEmpty()) { List<DataObserveParams> sels = new ArrayList<DataObserveParams>(selectors); selectors.clear(); for (DataObserveParams s : sels) { if (!this.containsParams(s)) selectors.add(s); } selectors.add(this); } return buildSelectorString(selectors); } else if (dataSelector == null) { return TIDE_DATA_TYPE_KEY + " = 'UNINITIALIZED'"; } return dataSelector; }
private String buildSelectorString(List<DataObserveParams> selectors) { StringBuilder sb = new StringBuilder(TIDE_DATA_TYPE_KEY + " = '" + TIDE_DATA_TYPE_VALUE + "'"); if (!selectors.isEmpty()) { sb.append(" AND ("); boolean first = true; for (DataObserveParams selector : selectors) { if (first) first = false; else sb.append(" OR "); sb.append("("); selector.append(sb); sb.append(")"); } sb.append(")"); } return sb.toString(); }
public static boolean containsSame(List<DataObserveParams> selectors1, List<DataObserveParams> selectors2) { for (DataObserveParams selector : selectors2) { if (!containsParams(selectors1, selector)) return false; } for (DataObserveParams selector : selectors1) { if (!containsParams(selectors2, selector)) return false; } return true; }