private String getChildDocId(Element element, String key, String name, Visibility visibility) { return element.getId() + "_" + name + "_" + key; }
private JSONObject elementToJson(Element element) { JSONObject json = new JSONObject(); json.put("id", element.getId()); json.put("visibility", element.getVisibility().getVisibilityString()); json.put("properties", propertiesToJson(element.getProperties())); return json; }
@Override public ElementMutation<T> removeProperty(String name, Visibility visibility) { Property property = this.element.getProperty(name, visibility); if (property != null) { removeProperty(property); } return this; }
private Element requeryWithAuthsAndMergedElement(Graph graph, Element element, Authorizations authorizations) { Element existingElement; if (element instanceof Vertex) { existingElement = graph.getVertex(element.getId(), authorizations); } else if (element instanceof Edge) { existingElement = graph.getEdge(element.getId(), authorizations); } else { throw new SecureGraphException("Unexpected element type " + element.getClass().getName()); } if (existingElement == null) { return element; } LOGGER.debug("Reindexing element " + element.getId()); existingElement.mergeProperties(element); return existingElement; }
@Override public void addElement(Graph graph, Element element, Authorizations authorizations) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("addElement: " + element.getId()); } if (!getConfig().isIndexEdges() && element instanceof Edge) { if (LOGGER.isDebugEnabled()) { LOGGER.debug("skipping edge: " + element.getId()); } return; } IndexInfo indexInfo = addPropertiesToIndex(element, element.getProperties()); try { BulkRequest bulkRequest = new BulkRequest(); addElementToBulkRequest(graph, bulkRequest, indexInfo, element, authorizations); if (bulkRequest.numberOfActions() > 0) { doBulkRequest(bulkRequest); if (getConfig().isAutoFlush()) { flush(); } } } catch (Exception e) { throw new SecureGraphException("Could not add element", e); } getConfig().getScoringStrategy().addElement(this, graph, element, authorizations); }
@Override public ExistingElementMutation<T> removeProperties(String key, String name) { for (Property prop : this.element.getProperties(key, name)) { removeProperty(prop); } return this; }
visibilityStrings.add(element.getVisibility().getVisibilityString()); for (Property property : element.getProperties()) { visibilityStrings.add(property.getVisibility().getVisibilityString());
.startObject(); String id = element.getId(); GetResponse existingParentDocument = getParentDocument(indexInfo, element.getId()); if (existingParentDocument == null) { changed = true; String visibilityString = element.getVisibility().getVisibilityString(); jsonBuilder.field(VISIBILITY_FIELD_NAME, visibilityString); if (existingParentDocument == null || !visibilityString.equals(GetResponseUtil.getFieldValueString(existingParentDocument, VISIBILITY_FIELD_NAME))) {
@Override public <T> T getProperty(String key) { Iterator<Object> values = getSecureGraphElement().getPropertyValues(key).iterator(); if (values.hasNext()) { return (T) values.next(); } return null; }
private void restoreStreamingPropertyValue(InputStream in, Graph graph, JSONObject propertyJson, Element element, Authorizations authorizations) throws ClassNotFoundException, IOException { String key = propertyJson.getString("key"); String name = propertyJson.getString("name"); Metadata metadata = jsonToPropertyMetadata(propertyJson.optJSONObject("metadata")); Visibility visibility = new Visibility(propertyJson.getString("visibility")); Class valueType = Class.forName(propertyJson.getString("valueType")); InputStream spvin = new StreamingPropertyValueInputStream(in); StreamingPropertyValue value = new StreamingPropertyValue(spvin, valueType); value.searchIndex(propertyJson.optBoolean("searchIndex", false)); value.store(propertyJson.optBoolean("store", true)); element.addPropertyValue(key, name, value, metadata, visibility, authorizations); }
@Override public void addElement(Graph graph, Element element, Authorizations authorizations) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("addElement: " + element.getId()); } if (!getConfig().isIndexEdges() && element instanceof Edge) { return; } IndexInfo indexInfo = addPropertiesToIndex(element, element.getProperties()); try { XContentBuilder jsonBuilder = buildJsonContentFromElement(graph, indexInfo, element, authorizations); IndexResponse response = getClient() .prepareIndex(indexInfo.getIndexName(), ElasticSearchSearchIndexBase.ELEMENT_TYPE, element.getId()) .setSource(jsonBuilder.endObject()) .execute() .actionGet(); if (response.getId() == null) { throw new SecureGraphException("Could not index document " + element.getId()); } if (getConfig().isAutoFlush()) { flush(); } } catch (Exception e) { throw new SecureGraphException("Could not add element", e); } getConfig().getScoringStrategy().addElement(this, graph, element, authorizations); }
@Override public ExistingElementMutation<T> removeProperties(String name) { for (Property prop : this.element.getProperties(name)) { removeProperty(prop); } return this; }
visibilityStrings.add(element.getVisibility().getVisibilityString()); for (Property property : element.getProperties()) { visibilityStrings.add(property.getVisibility().getVisibilityString());
private Element requeryWithAuthsAndMergedElement(Graph graph, Element element, Authorizations authorizations) { Element existingElement; if (element instanceof Vertex) { existingElement = graph.getVertex(element.getId(), authorizations); } else if (element instanceof Edge) { existingElement = graph.getEdge(element.getId(), authorizations); } else { throw new SecureGraphException("Unexpected element type " + element.getClass().getName()); } if (existingElement == null) { return element; } LOGGER.debug("Reindexing element " + element.getId()); existingElement.mergeProperties(element); return existingElement; }
@Override public <T> T getProperty(String key) { Iterator<Object> values = getSecureGraphElement().getPropertyValues(key).iterator(); if (values.hasNext()) { return (T) values.next(); } return null; }
@Override public boolean equals(Object obj) { if (obj instanceof Element) { Element objElem = (Element) obj; return getId().equals(objElem.getId()); } return super.equals(obj); }
@Override public void addElement(Graph graph, Element element, Authorizations authorizations) { if (LOGGER.isTraceEnabled()) { LOGGER.trace("addElement: " + element.getId()); } if (!getConfig().isIndexEdges() && element instanceof Edge) { return; } IndexInfo indexInfo = addPropertiesToIndex(element, element.getProperties()); try { XContentBuilder jsonBuilder = buildJsonContentFromElement(graph, indexInfo, element, authorizations); IndexResponse response = getClient() .prepareIndex(indexInfo.getIndexName(), ElasticSearchSearchIndexBase.ELEMENT_TYPE, element.getId()) .setSource(jsonBuilder.endObject()) .execute() .actionGet(); if (response.getId() == null) { throw new SecureGraphException("Could not index document " + element.getId()); } if (getConfig().isAutoFlush()) { flush(); } } catch (Exception e) { throw new SecureGraphException("Could not add element", e); } getConfig().getScoringStrategy().addElement(this, graph, element, authorizations); }
@Override public ExistingElementMutation<T> removeProperties(String name) { for (Property prop : this.element.getProperties(name)) { removeProperty(prop); } return this; }
@Override public ElementMutation<T> removeProperty(String key, String name, Visibility visibility) { Property property = this.element.getProperty(key, name, visibility); if (property != null) { removeProperty(property); } return this; }
@Override public boolean equals(Object obj) { if (obj instanceof Element) { Element objElem = (Element) obj; return getId().equals(objElem.getId()); } return super.equals(obj); }