public static List<QueryPath> findDirtyElements(Data data) { List<QueryPath> results = new ArrayList<QueryPath>(); _findDirtyElements(data, results, new QueryPath()); return results; } private static void _findDirtyElements(Data data, List<QueryPath> results, QueryPath currentFrame) {
public QueryPath getQueryPath() { final QueryPath result = new QueryPath(); _getQueryPath(result); return result; }
/** * Use to validate the entire DataModel structure against constraints defined in the metadata * for the given metadata * * @param metadata * @param model * @return */ public List<ValidationResultInfo> validateForMetadata(Metadata metadata, final DataModel model) { validateNextState = true; List<ValidationResultInfo> results = new ArrayList<ValidationResultInfo>(); doValidate(model, metadata, new QueryPath(), results); return results; }
public QueryPath subPath(final int fromIndex, final int toIndex) { // TODO revamp this method to use subList once GWT issue 1791 is fixed final QueryPath result = new QueryPath(); for (int i = fromIndex; i < toIndex; i++) { result.add(this.get(i)); } return result; }
public static QueryPath concat(String... paths) { QueryPath result = new QueryPath(); for (String path : paths) { if (path != null) { result.addAll(QueryPath.parse(path)); } } return result; } }
/** * Use to validate the entire DataModel structure against constraints defined in the metadata. * * @param model * @return */ public List<ValidationResultInfo> validate(final DataModel model) { validateNextState = false; List<ValidationResultInfo> results = new ArrayList<ValidationResultInfo>(); DataModelDefinition def = (DataModelDefinition) model.getDefinition(); doValidate(model, def.getMetadata(), new QueryPath(), results); return results; }
/** * Use to validate the entire DataModel structure against constraints defined in the metadata * for the current state and the "next" state. * * @param model * @return */ public List<ValidationResultInfo> validateNextState(final DataModel model) { validateNextState = true; List<ValidationResultInfo> results = new ArrayList<ValidationResultInfo>(); DataModelDefinition def = (DataModelDefinition) model.getDefinition(); doValidate(model, def.getMetadata(), new QueryPath(), results); return results; }
@Override public QueryPath parse(final String path) { final QueryPath result = new QueryPath(); final String[] elements = path.split(PATH_SEPARATOR); for (String element : elements) { element = element.trim(); if (!element.isEmpty()) { Integer index = null; try { index = Integer.valueOf(element); } catch (final Exception e) { // do nothing } if (index == null) { result.add(new Data.StringKey(element)); } else { result.add(new Data.IntegerKey(index)); } } } return result; }
/** * Set the top level data for this DataModel * @param root the root to set */ public void setRoot(final Data root) { if (bridgeCallbackReg != null) { bridgeCallbackReg.remove(); } this.root = root; bridgeCallbackReg = root.addChangeCallback(new ChangeCallback() { @Override public void onChange(ChangeType type, QueryPath path) { Action action = null; if (type == ChangeType.ADD) { action = Action.ADD; } else if (type == ChangeType.REMOVE) { action = Action.REMOVE; } else if (type == ChangeType.UPDATE) { action = Action.UPDATE; } handlers.fireEvent(new DataModelChangeEvent(action, DataModel.this, path)); } }); handlers.fireEvent(new DataModelChangeEvent(Action.RELOAD, this, new QueryPath())); }
private static void _findDirtyElements(Data data, List<QueryPath> results, QueryPath currentFrame) { if (data == null) { return; } Data flags = getDirtyFlags(data); if (flags != null && flags.size() > 0) { for (Data.Property p : flags) { QueryPath q = new QueryPath(); q.addAll(currentFrame); Key key = p.getWrappedKey(); q.add(key); results.add(q); } } for (Data.Property p : data) { if (p.getValueType().equals(Data.class) && p.getValue() != null) { QueryPath q = new QueryPath(); q.addAll(currentFrame); Key key = p.getWrappedKey(); q.add(key); _findDirtyElements((Data) p.getValue(), results, q); } } } public static Data getDirtyFlags(Data data) {
} else if (!s.isEmpty()) { if (s.equals(UtilConstants.IMPOSSIBLE_CHARACTERS)) { QueryPath path = new QueryPath(); path.add(new StringKey(element.get(0).toString())); addError(results, path, INVALID_VALUE);
/** * Flags the data at the provided path as dirty * * @param model * the DataModel containing the dirty data * @param qPath * the path to the dirty data */ protected void setDirtyFlag(DataModel model, QueryPath qPath) { QueryPath parent = qPath.subPath(0, qPath.size() - 1); QueryPath qPathDirty = new QueryPath(); qPathDirty.addAll(parent); qPathDirty.add(RUNTIME_ROOT); qPathDirty.add(DIRTY_PATH); ensureDirtyFlagPath(model.getRoot(), qPathDirty); Data flags = model.get(qPathDirty); flags.set(qPath.get(qPath.size() - 1), Boolean.TRUE); }
Property p = iter.next(); if(!"_runtimeData".equals(p.getKey())){ QueryPath translationPath = new QueryPath(); translationPath.add(new Data.StringKey(qPath.toString())); translationPath.add(new Data.StringKey("_runtimeData"));