Search in sources :

Example 1 with DEdge

use of org.openntf.domino.graph2.impl.DEdge in project org.openntf.domino by OpenNTF.

the class DElementStore method removeEdge.

@Override
public void removeEdge(final Edge edge, final Vertex removingVertex) {
    if (edge instanceof DEdge) {
        if (org.openntf.domino.ViewEntry.class.equals(((DEdge) edge).getDelegateType())) {
            throw new UnsupportedOperationException("ViewEntry edges cannot be removed.");
        }
    }
    startTransaction(edge);
    Vertex in = edge.getVertex(Direction.IN);
    if (!in.equals(removingVertex)) {
        ((DVertex) in).removeEdge(edge);
        removeCache(in);
    }
    Vertex out = edge.getVertex(Direction.OUT);
    if (!out.equals(removingVertex)) {
        ((DVertex) out).removeEdge(edge);
        removeCache(out);
    }
    removeCache(edge);
    ((DEdge) edge)._remove();
}
Also used : ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) CategoryVertex(org.openntf.domino.graph2.builtin.CategoryVertex) Vertex(com.tinkerpop.blueprints.Vertex) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex)

Example 2 with DEdge

use of org.openntf.domino.graph2.impl.DEdge in project org.openntf.domino by OpenNTF.

the class DElementStore method addEdge.

@Override
public Edge addEdge(final Object id) {
    Edge result = null;
    if (id != null) {
        Element chk = getElement(id);
        if (chk != null && chk instanceof Vertex) {
            return (Edge) chk;
        }
    }
    Object localkey = localizeKey(id);
    Map<String, Object> delegate = addElementDelegate(localkey, Edge.class, false);
    if (delegate != null) {
        DEdge edge = new DEdge(getConfiguration().getGraph(), delegate);
        result = edge;
        getElementCache().put((NoteCoordinate) result.getId(), result);
        if (id != null) {
            // TODO shouldn't force NoteCoordinate, but it covers all current use cases
            getKeyMap().put(id, (NoteCoordinate) result.getId());
        }
        getConfiguration().getGraph().startTransaction(result);
    }
    return result;
}
Also used : ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) CategoryVertex(org.openntf.domino.graph2.builtin.CategoryVertex) Vertex(com.tinkerpop.blueprints.Vertex) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex) Element(com.tinkerpop.blueprints.Element) Edge(com.tinkerpop.blueprints.Edge)

Example 3 with DEdge

use of org.openntf.domino.graph2.impl.DEdge in project org.openntf.domino by OpenNTF.

the class DElementStore method removeEdge.

/*public Element getElement_OLD(final Object id, final Class<? extends Element> type) throws IllegalStateException {
			Element result = null;
			Element chk = getCachedElement(id, Element.class);
			if (chk != null) {
				result = chk;
			} else {
				boolean isProxiedSource = false;
				Object delegate = null;
				if (id instanceof NoteCoordinate && isProxied()) {
					NoteCoordinate nc = (NoteCoordinate) id;
					if (getStoreKey().equals(nc.getReplicaLong())) {
						//this is a request for a vertex out of the proxied store, not the proxy itself
						Database db = (Database) getStoreDelegate();
						String unid = nc.getUNID();
						delegate = db.getDocumentByUNID(unid, true);
						if (delegate != null) {
							isProxiedSource = true;
						}
					}
				}
				if (delegate == null) {
					Object localkey = localizeKey(id);
					delegate = findElementDelegate(localkey);
				}
				if (delegate != null) {
					if (delegate instanceof Element) {
						result = (Element) delegate;
					} else if (delegate instanceof Document) {
						if (isProxiedSource) {
							DVertex vertex = new DVertex(getConfiguration().getGraph(), (Document) delegate);
							result = vertex;
						} else if (((Document) delegate).hasItem("$Index") || ((Document) delegate).hasItem("$Collation")) {
							DVertex vertex = new DVertex(getConfiguration().getGraph(), (Document) delegate);
							result = vertex;
						} else {
							Object typeChk = ((Document) delegate).get(org.openntf.domino.graph2.DElement.TYPE_FIELD);
							String strChk = org.openntf.domino.utils.TypeUtils.toString(typeChk);
							if (org.openntf.domino.graph2.DVertex.GRAPH_TYPE_VALUE.equals(strChk)) {
								DVertex vertex = new DVertex(getConfiguration().getGraph(), (Document) delegate);
								result = vertex;
							} else if (org.openntf.domino.graph2.DEdge.GRAPH_TYPE_VALUE.equals(strChk)) {
								DEdge edge = new DEdge(getConfiguration().getGraph(), (Document) delegate);
								result = edge;
							} else {
								DVertex vertex = new DVertex(getConfiguration().getGraph(), (Document) delegate);
								result = vertex;
							}
						}
					} else if (delegate instanceof ViewEntry) {
						if (id instanceof ViewEntryCoordinate) {
							ViewEntryCoordinate vec = (ViewEntryCoordinate) id;
							String entryType = vec.getEntryType();
							if (entryType.startsWith("E")) {
								DEdge edge = new DEntryEdge(getConfiguration().getGraph(), (ViewEntry) delegate, (ViewEntryCoordinate) id, this);
								result = edge;
							} else if (entryType.startsWith("V")) {
								ViewEntry entry = (ViewEntry) delegate;
								if (entry.isCategory()) {
									Map<String, Object> delegateMap = new LinkedHashMap<String, Object>();
									delegateMap.put("value", entry.getCategoryValue());
									delegateMap.put("position", entry.getPosition());
									delegateMap.put("noteid", entry.getNoteID());
									DCategoryVertex vertex = new DCategoryVertex(getConfiguration().getGraph(), delegateMap,
											entry.getParentView());
									vertex.delegateKey_ = vec;
									result = vertex;
								} else {
									System.out.println("TEMP DEBUG ViewVertex entry is not a category");
								}
							}
						} else {
							System.out.println("TEMP DEBUG ViewEntry's id is not a ViewEntryCoordinate. It's a " + id.getClass().getName());
						}
					}
					getElementCache().put(result.getId(), result);
					getKeyMap().put(id, (NoteCoordinate) result.getId()); //TODO shouldn't force NoteCoordinate, but it covers all current use cases
				}
			}
			return result;
		}*/
// @Override
// public Element getElement(final Object id) throws IllegalStateException {
// return getElement(id, Element.class);
// }
// @Override
// public Edge getEdge(final Object id) {
// return (Edge) getElement(id, Edge.class);
// }
@Override
public void removeEdge(final Edge edge) {
    if (edge instanceof DEdge) {
        if (org.openntf.domino.ViewEntry.class.equals(((DEdge) edge).getDelegateType())) {
            throw new UnsupportedOperationException("ViewEntry edges cannot be removed.");
        }
    }
    startTransaction(edge);
    Vertex in = edge.getVertex(Direction.IN);
    if (in != null) {
        ((DVertex) in).removeEdge(edge);
    }
    Vertex out = edge.getVertex(Direction.OUT);
    if (out != null) {
        ((DVertex) out).removeEdge(edge);
    }
    removeCache(edge);
    ((DEdge) edge)._remove();
}
Also used : ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) CategoryVertex(org.openntf.domino.graph2.builtin.CategoryVertex) Vertex(com.tinkerpop.blueprints.Vertex) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex)

Example 4 with DEdge

use of org.openntf.domino.graph2.impl.DEdge in project org.openntf.domino by OpenNTF.

the class JsonSearchAdapter method getJsonProperty.

@SuppressWarnings("unlikely-arg-type")
@Override
public Object getJsonProperty(final String paramKey) {
    Object result = null;
    Object frame = getFrame();
    if (frame != null) {
        CaseInsensitiveString key = new CaseInsensitiveString(paramKey);
        if (key.equals("@id")) {
            if (frame instanceof VertexFrame) {
                result = ((VertexFrame) frame).asVertex().getId().toString();
            } else if (frame instanceof EdgeFrame) {
                result = ((EdgeFrame) frame).asEdge().getId().toString();
            }
        } else if (key.equals("@proxyid")) {
            if (frame instanceof VertexFrame) {
                Vertex v = ((VertexFrame) frame).asVertex();
                if (v instanceof DProxyVertex) {
                    result = ((DProxyVertex) v).getProperty(DProxyVertex.PROXY_ITEM, String.class);
                }
            }
        } else if (key.equals("@debug")) {
            Map<String, String> debugMap = new LinkedHashMap<String, String>();
            debugMap.put("frameIdentity", String.valueOf(System.identityHashCode(this)));
            if (frame instanceof VertexFrame) {
                Vertex v = ((VertexFrame) frame).asVertex();
                debugMap.put("vertexIdentity", String.valueOf(System.identityHashCode(v)));
            } else if (frame instanceof EdgeFrame) {
                Edge e = ((EdgeFrame) frame).asEdge();
                debugMap.put("edgeIdentity", String.valueOf(System.identityHashCode(e)));
            }
            result = debugMap;
        } else if (key.equals("@type")) {
            if (frame instanceof VertexFrame) {
                result = type_;
            } else if (frame instanceof EdgeFrame) {
                result = type_;
            }
        } else if (key.equals("@in") && frame instanceof EdgeFrame) {
            if (getInProperties() == null) {
                // why not just make a frame adapter with the vertex?
                // because that's another I/O operation. We already have the
                // information needed to
                DEdge dedge = (DEdge) ((EdgeFrame) frame).asEdge();
                Map<String, String> minProps = new LinkedHashMap<String, String>();
                minProps.put("@id", dedge.getVertexId(Direction.IN).toString());
                Class<?> inType = graph_.getTypeRegistry().getInType(type_);
                if (inType == null) {
                    minProps.put("@type", "Vertex");
                } else {
                    minProps.put("@type", inType.getName());
                }
                result = minProps;
            } else {
                ParamMap inMap = new ParamMap();
                inMap.put(Parameters.PROPS, CaseInsensitiveString.toStrings(getInProperties()));
                if (getIncludeEdges()) {
                    inMap.put(Parameters.EDGES, EMPTY_STRINGS);
                }
                if (getIncludeCounts()) {
                    inMap.put(Parameters.COUNTS, EMPTY_STRINGS);
                }
                Method inMethod = graph_.getTypeRegistry().getIn(type_);
                if (inMethod != null) {
                    try {
                        Object raw = inMethod.invoke(frame, (Object[]) null);
                        if (raw instanceof Term) {
                            result = new JsonSearchAdapter(graph_, (Term) raw, inMap, isCollectionRoute_);
                        } else if (raw instanceof Value) {
                            result = new JsonSearchAdapter(graph_, (Value) raw, inMap, isCollectionRoute_);
                        } else if (raw instanceof RichTextReference) {
                            result = new JsonSearchAdapter(graph_, (RichTextReference) raw, inMap, isCollectionRoute_);
                        } else if (raw instanceof VertexFrame) {
                            result = new JsonFrameAdapter(graph_, (VertexFrame) raw, inMap, isCollectionRoute_);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } else if (key.equals("@out") && frame instanceof EdgeFrame) {
            if (getOutProperties() == null) {
                // why not just make a frame adapter with the vertex?
                // because that's another I/O operation. We already have the
                // information needed to
                DEdge dedge = (DEdge) ((EdgeFrame) frame).asEdge();
                Map<String, String> minProps = new LinkedHashMap<String, String>();
                minProps.put("@id", dedge.getVertexId(Direction.OUT).toString());
                Class<?> outType = graph_.getTypeRegistry().getOutType(type_);
                if (outType == null) {
                    minProps.put("@type", "Vertex");
                } else {
                    minProps.put("@type", outType.getName());
                }
                result = minProps;
            } else {
                ParamMap outMap = new ParamMap();
                outMap.put(Parameters.PROPS, CaseInsensitiveString.toStrings(getOutProperties()));
                if (getIncludeEdges()) {
                    outMap.put(Parameters.EDGES, EMPTY_STRINGS);
                }
                if (getIncludeCounts()) {
                    outMap.put(Parameters.COUNTS, EMPTY_STRINGS);
                }
                Method outMethod = graph_.getTypeRegistry().getOut(type_);
                if (outMethod != null) {
                    try {
                        Object raw = outMethod.invoke(frame, (Object[]) null);
                        if (raw instanceof Term) {
                            result = new JsonSearchAdapter(graph_, (Term) raw, outMap, isCollectionRoute_);
                        } else if (raw instanceof Value) {
                            result = new JsonSearchAdapter(graph_, (Value) raw, outMap, isCollectionRoute_);
                        } else if (raw instanceof RichTextReference) {
                            result = new JsonSearchAdapter(graph_, (RichTextReference) raw, outMap, isCollectionRoute_);
                        } else if (raw instanceof VertexFrame) {
                            result = new JsonFrameAdapter(graph_, (VertexFrame) raw, outMap, isCollectionRoute_);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }
        } else if (key.equals("@edges")) {
            Map<String, Integer> edgeCounts = new LinkedHashMap<String, Integer>();
            Set<CaseInsensitiveString> counterKeys = getCounters().keySet();
            for (CaseInsensitiveString label : counterKeys) {
                Method crystal = getCounters().get(label);
                if (crystal != null) {
                    try {
                        Object raw = crystal.invoke(getFrame(), (Object[]) null);
                        if (raw instanceof Integer) {
                            edgeCounts.put(label.toString(), (Integer) raw);
                        } else {
                        }
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                } else {
                }
            }
            result = edgeCounts;
        } else if (key.equals("@actions")) {
            List<CaseInsensitiveString> actionList = new ArrayList<CaseInsensitiveString>();
            Set<CaseInsensitiveString> actionNames = getActions().keySet();
            for (CaseInsensitiveString name : actionNames) {
                actionList.add(name);
            }
            result = actionList;
        } else if (key.startsWith("@counts")) {
            String label = key.toString().substring("@counts".length());
            Method crystal = getCounters().get(new CaseInsensitiveString(label));
            if (crystal != null) {
                try {
                    Object raw = crystal.invoke(getFrame(), (Object[]) null);
                    if (raw instanceof Integer) {
                        result = raw;
                    } else {
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            } else {
            }
        } else if (key.equals("@columninfo")) {
            if (frame instanceof ViewVertex) {
                Map<String, String> columnInfo = new LinkedHashMap<String, String>();
                if (frame instanceof ViewVertex) {
                    View view = ((ViewVertex) frame).asView();
                    for (ViewColumn column : view.getColumns()) {
                        String progName = column.getItemName();
                        String title = column.getTitle();
                        columnInfo.put(progName, title);
                    }
                } else {
                    System.err.println("Frame is not a ViewVertex. It is " + DGraphUtils.findInterface(frame));
                }
                return columnInfo;
            }
        } else if (key.equals("@viewinfo")) {
            if (frame instanceof DbInfoVertex) {
                List viewInfo = ((DbInfoVertex) frame).getViewInfo();
                return viewInfo;
            }
        } else if (key.startsWith("#") && frame instanceof VertexFrame) {
            CharSequence label = key.subSequence(1, key.length());
            Method crystal = getIncidences().get(label);
            if (crystal != null) {
                try {
                    result = crystal.invoke(frame, (Object[]) null);
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
                if (result != null) {
                    if (!(result instanceof Iterable)) {
                        if (result instanceof EdgeFrame) {
                            Vertex v = ((VertexFrame) frame).asVertex();
                            List<Edge> edges = new org.openntf.domino.graph2.impl.DEdgeList((DVertex) v);
                            edges.add(((EdgeFrame) result).asEdge());
                            result = new FramedEdgeList(getGraph(), ((VertexFrame) frame).asVertex(), edges, crystal.getReturnType());
                        }
                    }
                    if (getIncludeVertices()) {
                        if (result instanceof DEdgeList) {
                            result = ((DEdgeList) result).toVertexList();
                        } else if (result instanceof FramedEdgeList) {
                            result = ((FramedEdgeList<?>) result).toVertexList();
                        } else {
                            System.err.println("TEMP DEBUG: Expected a DEdgeList but got a " + result.getClass().getName());
                        }
                    }
                    if (getFilterKeys() != null && !isCollectionRoute_) {
                        List<CharSequence> filterKeys = getFilterKeys();
                        List<CharSequence> filterValues = getFilterValues();
                        Map<CharSequence, Set<CharSequence>> filterMap = new HashMap<CharSequence, Set<CharSequence>>();
                        for (int i = 0; i < filterKeys.size(); i++) {
                            String curkey = filterKeys.get(i).toString();
                            String curvalue = filterValues.get(i).toString();
                            if (Value.REPLICA_KEY.equalsIgnoreCase(curkey)) {
                                Set<CharSequence> replicas = filterMap.get(Value.REPLICA_KEY);
                                if (replicas == null) {
                                    replicas = new HashSet<CharSequence>();
                                    filterMap.put(Value.REPLICA_KEY, replicas);
                                }
                                replicas.add(new CaseInsensitiveString(curvalue));
                            } else if (Value.FORM_KEY.equalsIgnoreCase(curkey)) {
                                Set<CharSequence> forms = filterMap.get(Value.FORM_KEY);
                                if (forms == null) {
                                    forms = new HashSet<CharSequence>();
                                    filterMap.put(Value.FORM_KEY, forms);
                                }
                                forms.add(new CaseInsensitiveString(curvalue));
                            } else if (Value.FIELD_KEY.equalsIgnoreCase(curkey)) {
                                Set<CharSequence> forms = filterMap.get(Value.FIELD_KEY);
                                if (forms == null) {
                                    forms = new HashSet<CharSequence>();
                                    filterMap.put(Value.FIELD_KEY, forms);
                                }
                                forms.add(new CaseInsensitiveString(curvalue));
                            }
                        }
                        if (result instanceof FramedVertexList) {
                            // this should always be the case
                            FramedVertexList fvl = (FramedVertexList) result;
                            List<Vertex> vertList = new ArrayList<Vertex>();
                            FramedVertexList filterList = new FramedVertexList<VertexFrame>(fvl.getGraph(), fvl.getSourceVertex(), vertList, null);
                            for (Object raw : fvl) {
                                if (raw instanceof Value) {
                                    Map hits = ((Value) raw).getHits(filterMap);
                                    if (hits.size() > 0) {
                                        filterList.add((Value) raw);
                                    }
                                } else if (raw instanceof RichTextReference) {
                                    if (((RichTextReference) raw).isFilterMatch(filterMap)) {
                                        filterList.add((RichTextReference) raw);
                                    }
                                }
                            }
                            result = filterList;
                        }
                    }
                    if (getStartsValues() != null) {
                        if (result instanceof DEdgeEntryList) {
                            ((DEdgeEntryList) result).initEntryList(getStartsValues());
                        } else if (result instanceof FramedEdgeList) {
                            ((FramedEdgeList) result).applyFilter("lookup", getStartsValues());
                        }
                    }
                    if (getFilterValues() != null && getFilterKeys() == null) {
                        if (result instanceof DEdgeEntryList) {
                            ((DEdgeEntryList) result).filterEntryList(getFilterValues());
                        } else if (result instanceof FramedEdgeList) {
                            ((FramedEdgeList) result).applyFilter("filter", getFilterValues());
                        }
                    }
                    if (getOrderBys() != null) {
                        if (result instanceof FramedEdgeList) {
                            result = ((FramedEdgeList<?>) result).sortBy(getOrderBys(), getDescending());
                        } else if (result instanceof FramedVertexList) {
                            result = ((FramedVertexList<?>) result).sortBy(getOrderBys(), getDescending());
                        }
                    }
                    if (getStart() >= 0) {
                        if (getCount() > 0) {
                            int end = getStart() + getCount();
                            if (result instanceof FramedEdgeList) {
                                // System.out.println("TEMP DEBUG Sublisting
                                // a FramedEdgeList...");
                                int size = ((FramedEdgeList<?>) result).size();
                                result = ((FramedEdgeList<?>) result).subList(getStart(), (end > size ? size : end));
                            } else if (result instanceof FramedVertexList) {
                                int size = ((FramedVertexList<?>) result).size();
                                result = ((FramedVertexList<?>) result).subList(getStart(), (end > size ? size : end));
                            } else if (result instanceof DEdgeEntryList) {
                                // System.out.println("TEMP DEBUG Sublisting
                                // a DEdgeEntryList...");
                                int size = ((DEdgeEntryList) result).size();
                                result = ((DEdgeEntryList) result).subList(getStart() + 1, (end > size ? size : end));
                            }
                        } else {
                            if (result instanceof FramedEdgeList) {
                                result = ((FramedEdgeList<?>) result).subList(getStart(), ((FramedEdgeList<?>) result).size());
                            } else if (result instanceof FramedVertexList) {
                                result = ((FramedVertexList<?>) result).subList(getStart(), ((FramedVertexList<?>) result).size());
                            } else if (result instanceof DEdgeEntryList) {
                                // System.out.println("TEMP DEBUG Sublisting
                                // a DEdgeEntryList...");
                                result = ((DEdgeEntryList) result).subList(getStart() + 1, ((DEdgeEntryList) result).size());
                            }
                        }
                    }
                    if (result instanceof FramedVertexList) {
                        ParamMap listMap = new ParamMap();
                        if (getIncludeEdges()) {
                            listMap.put(Parameters.EDGES, EMPTY_STRINGS);
                        }
                        if (getIncludeCounts()) {
                            listMap.put(Parameters.COUNTS, EMPTY_STRINGS);
                        }
                        listMap.put(Parameters.PROPS, CaseInsensitiveString.toStrings(this.getProperties()));
                        listMap.put(Parameters.HIDEPROPS, CaseInsensitiveString.toStrings(this.getHideProperties()));
                        result = new JsonFrameListAdapter(getGraph(), (FramedVertexList<?>) result, listMap, isCollectionRoute_);
                    }
                }
            } else {
            // NTF actually, this is a perfectly normal outcome.
            }
        } else {
            Method crystal = getGetters().get(key);
            if (crystal != null) {
                try {
                    result = crystal.invoke(frame, (Object[]) null);
                } catch (UserAccessException uae) {
                    throw uae;
                } catch (Throwable t) {
                    if (frame instanceof EdgeFrame) {
                        result = ((EdgeFrame) frame).asEdge().getProperty(paramKey);
                    } else if (frame instanceof VertexFrame) {
                        result = ((VertexFrame) frame).asVertex().getProperty(paramKey);
                    } else {
                        System.err.println("Trying to get property " + paramKey + " from an object " + frame.getClass().getName());
                    }
                }
            } else {
                if (frame instanceof ViewVertex.Contains) {
                    result = ((EdgeFrame) frame).asEdge().getProperty(paramKey);
                } else if (frame instanceof VertexFrame) {
                    result = ((VertexFrame) frame).asVertex().getProperty(paramKey);
                } else if (frame instanceof EdgeFrame) {
                    result = ((EdgeFrame) frame).asEdge().getProperty(paramKey);
                } else {
                    System.err.println("No method found for key " + paramKey);
                }
            }
        }
    } else {
        System.err.println("Unable to get property " + paramKey + " on a null object");
    }
    return result;
}
Also used : ParamMap(org.openntf.domino.rest.service.Parameters.ParamMap) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) LinkedHashMap(java.util.LinkedHashMap) RichTextReference(org.openntf.domino.graph2.builtin.search.RichTextReference) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex) FramedEdgeList(org.openntf.domino.graph2.annotations.FramedEdgeList) ArrayList(java.util.ArrayList) DEdgeEntryList(org.openntf.domino.graph2.impl.DEdgeEntryList) DEdgeList(org.openntf.domino.graph2.DEdgeList) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) List(java.util.List) DEdgeList(org.openntf.domino.graph2.DEdgeList) HashSet(java.util.HashSet) DProxyVertex(org.openntf.domino.graph2.impl.DProxyVertex) DVertex(org.openntf.domino.graph2.impl.DVertex) Method(java.lang.reflect.Method) Term(org.openntf.domino.graph2.builtin.search.Term) FramedEdgeList(org.openntf.domino.graph2.annotations.FramedEdgeList) UserAccessException(org.openntf.domino.exceptions.UserAccessException) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) Value(org.openntf.domino.graph2.builtin.search.Value) JsonJavaObject(com.ibm.commons.util.io.json.JsonJavaObject) JsonObject(com.ibm.commons.util.io.json.JsonObject) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Map(java.util.Map) ParamMap(org.openntf.domino.rest.service.Parameters.ParamMap) ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) DVertex(org.openntf.domino.graph2.impl.DVertex) Vertex(com.tinkerpop.blueprints.Vertex) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex) DProxyVertex(org.openntf.domino.graph2.impl.DProxyVertex) HashSet(java.util.HashSet) Set(java.util.Set) JsonFrameAdapter(org.openntf.domino.rest.resources.frames.JsonFrameAdapter) ViewColumn(org.openntf.domino.ViewColumn) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) JsonFrameListAdapter(org.openntf.domino.rest.resources.frames.JsonFrameListAdapter) ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) EdgeFrame(com.tinkerpop.frames.EdgeFrame) DEdgeFrame(org.openntf.domino.graph2.builtin.DEdgeFrame) View(org.openntf.domino.View) UserAccessException(org.openntf.domino.exceptions.UserAccessException) DVertexFrame(org.openntf.domino.graph2.builtin.DVertexFrame) VertexFrame(com.tinkerpop.frames.VertexFrame) DEdgeEntryList(org.openntf.domino.graph2.impl.DEdgeEntryList) DEdge(org.openntf.domino.graph2.impl.DEdge) Edge(com.tinkerpop.blueprints.Edge) DEdge(org.openntf.domino.graph2.impl.DEdge)

Example 5 with DEdge

use of org.openntf.domino.graph2.impl.DEdge in project org.openntf.domino by OpenNTF.

the class SessionsByTrack method run.

@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void run() {
    HashMap<String, String> trackLkup = new HashMap<String, String>();
    trackLkup.put("Special", "Sp");
    trackLkup.put("Strategy/Deployment", "Str");
    trackLkup.put("Administration", "Adm");
    trackLkup.put("Development", "Dev");
    trackLkup.put("Business", "Bus");
    trackLkup.put("Commercial", "Comm");
    long testStartTime = System.nanoTime();
    marktime = System.nanoTime();
    try {
        timelog("Beginning Sessions By Track...");
        FramedGraph<DGraph> graph2 = new ConferenceGraph().getFramedGraph();
        Iterable<Sponsor> sponsors = graph2.getVertices("Level", Level.BRONZE, Sponsor.class);
        for (Sponsor s : sponsors) {
            System.out.println("Sponsor " + s.getName() + " - " + s.getUrl());
        }
        ConferenceGraph graph = new ConferenceGraph();
        for (Entry<String, String> track : trackLkup.entrySet()) {
            System.out.println("Outputting sessions ordered by ID for " + track.getKey());
            Track dev = graph.getFramedGraph().getVertex(track.getValue(), Track.class);
            System.out.println(dev.getDescription());
            Iterable<Presentation> presentations = dev.getIncludesSessions();
            Ordering<DVertexFrame> ord = Ordering.from(new DVertexFrameComparator("SessionID"));
            List<Presentation> presOrdered = ord.sortedCopy(presentations);
            for (Presentation pres : presOrdered) {
                Attendee att = pres.getPresentingAttendees().iterator().next();
                System.out.println(att.getFullname());
                System.out.println(pres.getSessionId() + ": " + pres.getTitle());
            }
        }
        for (Entry<String, String> track : trackLkup.entrySet()) {
            System.out.println("Outputting sessions ordered by Title for " + track.getKey());
            Track dev = graph.getFramedGraph().getVertex(track.getValue(), Track.class);
            Iterable<Presentation> presentations = dev.getIncludesSessions();
            Ordering<DVertexFrame> ord = Ordering.from(new DVertexFrameComparator("SessionTitle"));
            List<Presentation> presOrdered = ord.sortedCopy(presentations);
            for (Presentation pres : presOrdered) {
                System.out.println(pres.getSessionId() + ": " + pres.getTitle());
            }
        }
        System.out.println("OUTPUTTING SORTBY");
        FramedVertexList<Sponsor> sponsors2 = (FramedVertexList<Sponsor>) graph2.getVertices(null, null, Sponsor.class);
        List<CaseInsensitiveString> keys = new ArrayList<CaseInsensitiveString>();
        keys.add(new CaseInsensitiveString("Level"));
        keys.add(new CaseInsensitiveString("Name"));
        sponsors2.sortBy((List<CharSequence>) (List<?>) keys, true);
        for (Sponsor spon : sponsors2) {
            System.out.println(spon.getLevel().name() + " - " + spon.getName());
        }
        // Throws java.lang.ClassCastException: com.sun.proxy.$Proxy11 incompatible with com.tinkerpop.blueprints.Vertex
        // Yet to track down why
        List<Presentation> presentations = Lists.newArrayList(graph.getFramedGraph().getVertices(null, null, Presentation.class));
        // GremlinPipeline pipe = new GremlinPipeline(presentations).outE("PresentedBy").outV().dedup();
        GremlinPipeline pipe = new GremlinPipeline(presentations).outE("PresentedBy");
        List<DEdge> edges = pipe.toList();
        for (DEdge edge : edges) {
            System.out.println(edge.getVertex(Direction.OUT).getId());
        }
    } catch (Throwable t) {
        t.printStackTrace();
    }
    long testEndTime = System.nanoTime();
    System.out.println("Completed " + getClass().getSimpleName() + " run in " + ((testEndTime - testStartTime) / 1000000) + " ms");
}
Also used : HashMap(java.util.HashMap) ArrayList(java.util.ArrayList) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) DGraph(org.openntf.domino.graph2.impl.DGraph) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) ArrayList(java.util.ArrayList) List(java.util.List) GremlinPipeline(com.tinkerpop.gremlin.java.GremlinPipeline) DVertexFrameComparator(org.openntf.domino.graph2.builtin.DVertexFrameComparator) Sponsor(org.openntf.conference.graph.Sponsor) Presentation(org.openntf.conference.graph.Presentation) ConferenceGraph(org.openntf.conference.graph.ConferenceGraph) Attendee(org.openntf.conference.graph.Attendee) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) DVertexFrame(org.openntf.domino.graph2.builtin.DVertexFrame) Track(org.openntf.conference.graph.Track) DEdge(org.openntf.domino.graph2.DEdge)

Aggregations

Vertex (com.tinkerpop.blueprints.Vertex)10 DbInfoVertex (org.openntf.domino.graph2.builtin.DbInfoVertex)9 ViewVertex (org.openntf.domino.graph2.builtin.ViewVertex)9 Edge (com.tinkerpop.blueprints.Edge)7 DVertexFrame (org.openntf.domino.graph2.builtin.DVertexFrame)7 DEdge (org.openntf.domino.graph2.impl.DEdge)7 VertexFrame (com.tinkerpop.frames.VertexFrame)6 ArrayList (java.util.ArrayList)6 DVertex (org.openntf.domino.graph2.impl.DVertex)6 CaseInsensitiveString (org.openntf.domino.types.CaseInsensitiveString)6 DProxyVertex (org.openntf.domino.graph2.impl.DProxyVertex)5 JsonJavaObject (com.ibm.commons.util.io.json.JsonJavaObject)4 JsonObject (com.ibm.commons.util.io.json.JsonObject)4 EdgeFrame (com.tinkerpop.frames.EdgeFrame)4 DEdgeFrame (org.openntf.domino.graph2.builtin.DEdgeFrame)4 List (java.util.List)3 FramedVertexList (org.openntf.domino.graph2.annotations.FramedVertexList)3 CategoryVertex (org.openntf.domino.graph2.builtin.CategoryVertex)3 Method (java.lang.reflect.Method)2 HashMap (java.util.HashMap)2