/** * Returns the @mongoHidden at the root level of the document. Adds one if necessary. */ public static DBObject getHidden(DBObject doc,boolean addIfNotFound) { DBObject hidden=(DBObject)doc.get(DocTranslator.HIDDEN_SUB_PATH.toString()); if(hidden==null&&addIfNotFound) { doc.put(DocTranslator.HIDDEN_SUB_PATH.toString(),hidden=new BasicDBObject()); } return hidden; }
/** * Returns JSON representation of this query */ @Override public JsonNode toJson() { return getFactory().objectNode().put("array", array.toString()). set("elemMatch", elemMatch.toJson()); }
private void toTreeString(int depth, StringBuilder bld) { for (int i = 0; i < depth; i++) { bld.append(" "); } bld.append(getName()).append(':').append(entityPath.toString()).append('\n'); for (ResolvedReferenceField ch : children.values()) { ch.getReferencedMetadata().toTreeString(depth + 1, bld); } } }
private void toTreeString(int depth, StringBuilder bld) { for (int i = 0; i < depth; i++) { bld.append(" "); } bld.append(getName()).append(':').append(entityPath.toString()).append('\n'); for (ResolvedReferenceField ch : children.values()) { ch.getReferencedMetadata().toTreeString(depth + 1, bld); } } }
/** * Returns the json representation of the query */ @Override public JsonNode toJson() { return getFactory().objectNode().put("field", field.toString()). put("op", op.toString()). set("rvalue", rvalue.toJson()); } }
private boolean hasHiddenField(Path path) { for (int i = 0; i < path.numSegments(); i++) { if (path.head(i).equals(DocTranslator.HIDDEN_SUB_PATH.toString())) { return true; } } return false; }
/** * Returns the version list, if one present */ public static List<ObjectId> getVersionList(DBObject doc) { DBObject hidden=(DBObject)doc.get(DocTranslator.HIDDEN_SUB_PATH.toString()); if(hidden!=null) { return (List<ObjectId>)hidden.get(DOCVER); } return null; }
private JsonNode toJson(ToJsonCb<Step> cb) { ObjectNode o = JsonNodeFactory.instance.objectNode(); ArrayNode arr = JsonNodeFactory.instance.arrayNode(); for (Path p : idx.getIdentityFields()) { arr.add(JsonNodeFactory.instance.textNode(p.toString())); } o.set("unique", arr); o.set("source", cb.toJson(source.getStep())); return o; }
private Path rewrite(Path context, Path field) { LOGGER.debug("rewriting {}", field); if (context != null && !Path.EMPTY.equals(context)) { throw Error.get(MetadataConstants.ERR_INVALID_CONTEXT, "Expected empty path, got: " + context.toString()); } // We interpret field name with respect to the current entity FieldTreeNode fieldNode = interpretWRTEntity.resolve(field); Path absFieldPath = fieldNode.getFullPath(); LOGGER.debug("Field full path={}", absFieldPath); return absFieldPath; } }
private Path rewrite(Path context, Path field) { LOGGER.debug("rewriting {}", field); if (context != null && !Path.EMPTY.equals(context)) { throw Error.get(MetadataConstants.ERR_INVALID_CONTEXT, "Expected empty path, got: " + context.toString()); } // We interpret field name with respect to the current entity FieldTreeNode fieldNode = interpretWRTEntity.resolve(field); Path absFieldPath = fieldNode.getFullPath(); LOGGER.debug("Field full path={}", absFieldPath); return absFieldPath; } }
@Override public JsonNode toJson() { ObjectNode node = getFactory().objectNode(); ArrayNode fieldArr = getFactory().arrayNode(); for (Path x : fields) { fieldArr.add(getFactory().textNode(x.toString())); } node.set(UpdateOperator._unset.toString(), fieldArr); return node; }
@Override public void checkConstraint(ConstraintValidator validator, FieldTreeNode fieldMetadata, Path fieldMetadataPath, FieldConstraint constraint, JsonDoc doc) { List<Path> errors = RequiredChecker.getMissingFields(fieldMetadataPath, doc); for (Path x : errors) { validator.addDocError(Error.get(CrudConstants.ERR_REQUIRED, x.toString())); } } }
/** * Resolve the given field, find its metadata. Throw exception if it cannot * be resolved. */ private FieldTreeNode resolve(Path field) { FieldTreeNode fieldNode = ref == null ? root.resolve(field) : ref.getElement().resolve(field); if (fieldNode == null) { throw Error.get(AssocConstants.ERR_CANNOT_FIND_FIELD, field.toString()); } return fieldNode; }
@Override public FieldTreeNode resolve(Path p, int level) { if (p.numSegments() == level) { return this; } else if (Path.PARENT.equals(p.head(level))) { return this.getParent().resolve(p, level + 1); } else { throw Error.get(MetadataConstants.ERR_INVALID_FIELD_REFERENCE, p.head(level) + " in " + p.toString()); } }
@Override public FieldTreeNode resolve(Path p, int level) { if (p.numSegments() == level) { return this; } else if (Path.PARENT.equals(p.head(level))) { return this.getParent().resolve(p, level + 1); } if (p.head(level).equals(Path.THIS)) { return this.resolve(p,level+1); } else { throw Error.get(MetadataConstants.ERR_INVALID_FIELD_REFERENCE, p.head(level) + " in " + p.toString()); } }
@Override public FieldTreeNode resolve(Path p, int level) { if (p.numSegments() == level) { return this; } else if (p.head(level).equals(Path.PARENT)) { return this.getParent().getParent().resolve(p, level + 1); } else if (p.head(level).equals(Path.THIS)) { return this.resolve(p,level+1); } else { throw Error.get(MetadataConstants.ERR_INVALID_ARRAY_REFERENCE,p.toString()); } }
protected QueryFieldInfo findFieldInfo(Path field, QueryExpression clause) { for (QueryFieldInfo fi : fieldInfo) { if (fi.getClause() == clause) { if (fi.getFieldNameInClause().equals(field)) { return fi; } } } throw Error.get(ERR_INDEX_ANALYZE, field.toString() + "@" + clause.toString()); }
protected void translate(ObjectField field, JsonNodeCursor cursor, Object target) { if(!cursor.firstChild()){ throw Error.get(MetadataConstants.ERR_ILL_FORMED_METADATA, cursor.getCurrentPath().toString()); } do { translate(cursor, target); } while (cursor.nextSibling()); cursor.parent(); }
protected void translate(final ObjectArrayElement objectArrayElement, JsonNode node, Object target) { JsonNodeCursor cursor = new JsonNodeCursor(objectArrayElement.getFullPath(), node); if(!cursor.firstChild()){ throw Error.get(MetadataConstants.ERR_ILL_FORMED_METADATA, cursor.getCurrentPath().toString()); } do { translate(cursor, target); } while (cursor.nextSibling()); }