Search in sources :

Example 21 with View

use of org.openntf.domino.View in project org.openntf.domino by OpenNTF.

the class DataInitializer method loadData.

@SuppressWarnings({ "unused", "deprecation" })
public void loadData(final org.openntf.domino.Session s, final FramedTransactionalGraph<DGraph> framedGraph) {
    HashMap<String, Location> locs = new HashMap<String, Location>();
    HashMap<String, Track> tracks = new HashMap<String, Track>();
    try {
        Database srcDb = s.getDatabase(s.getServerName(), SRC_DATA_PATH);
        if (null == srcDb) {
            throw new Exception("Source database not found on this Domino server at " + SRC_DATA_PATH);
        }
        // Create Group vertexes
        Group ibm_champion = framedGraph.addVertex("IBM Champions", Group.class);
        ibm_champion.setType(Group.Type.PROGRAM);
        SimpleDateFormat sdf = new SimpleDateFormat();
        View sessions = srcDb.getView("Sessions");
        for (Document doc : sessions.getAllDocuments()) {
            if (!doc.hasItem("$Conflict")) {
                // ignore conflicts
                String locKey = doc.getItemValueString("Location");
                Location loc = framedGraph.addVertex(locKey, Location.class);
                if (Strings.isBlankString(loc.getName())) {
                    loc.setName(doc.getItemValueString("Location"));
                }
                String trackKey = doc.getItemValueString("Categories");
                Track track = framedGraph.addVertex(trackKey, Track.class);
                if (Strings.isBlankString(track.getTitle())) {
                    track.setTitle(doc.getItemValueString("Categories"));
                    track.setDescription(doc.getItemValueString("Categories"));
                }
                Date startDate = doc.getItemValue("StartDate", Date.class);
                Date startDateTime = doc.getItemValue("StartDateTime", Date.class);
                Date endDate = doc.getItemValue("EndDate", Date.class);
                Date endDateTime = doc.getItemValue("EndDateTime", Date.class);
                Calendar startCal = new GregorianCalendar();
                startCal.setTime(startDate);
                startCal.set(Calendar.HOUR, startDateTime.getHours());
                startCal.set(Calendar.MINUTE, startDateTime.getMinutes());
                startCal.set(Calendar.SECOND, startDateTime.getSeconds());
                Calendar endCal = new GregorianCalendar();
                endCal.setTime(endDate);
                endCal.set(Calendar.HOUR, endDateTime.getHours());
                endCal.set(Calendar.MINUTE, endDateTime.getMinutes());
                endCal.set(Calendar.SECOND, endDateTime.getSeconds());
                String tsKey = sdf.format(startCal.getTime()) + " - " + sdf.format(endCal.getTime());
                TimeSlot ts = framedGraph.addVertex(tsKey, TimeSlot.class);
                // ts.setStartTime(startCal.getTime());
                // ts.setEndTime(endCal.getTime());
                String code = doc.getItemValueString("SessionID");
                // Not sure if I can combine these, that's for later
                Presentation sess = framedGraph.addVertex(code, Presentation.class);
                sess.setTitle(doc.getItemValueString("Subject"));
                sess.setDescription(doc.getItemValueString("Abstract"));
                sess.setStatus(Event.Status.CONFIRMED);
                sess.setSessionId(doc.getItemValueString("SessionID"));
                sess.setLevel(doc.getItemValueString("Level"));
                System.out.println("Assigning location - " + locKey + " to session " + doc.getItemValueString("Subject"));
                sess.addLocation(loc);
                track.addIncludesSession(sess);
                ts.addEvent(sess);
                for (int i = 1; i < 6; i++) {
                    String speaker = doc.getItemValueString("Speaker" + String.valueOf(i));
                    if ("".equals(speaker)) {
                        break;
                    }
                    String speakerName = speaker;
                    String organization = "";
                    if (speaker.contains(" - ")) {
                        int splitPos = speaker.indexOf(" - ");
                        speakerName = speaker.substring(0, splitPos);
                        organization = speaker.substring(splitPos + 3, speaker.length());
                    }
                    Attendee att = framedGraph.addVertex(null, Attendee.class);
                    int sep = speakerName.indexOf(" ");
                    String firstName = speakerName.substring(0, sep);
                    String lastName = speakerName.substring(sep + 1, speakerName.length());
                    att.setFirstName(firstName);
                    att.setLastName(lastName);
                    if (!"".equals(organization)) {
                        Group org = framedGraph.addVertex(organization, Group.class);
                        org.setName(organization);
                        org.setType(Type.COMPANY);
                        org.addMember(att);
                    }
                    sess.addPresentedBy(att);
                    sess.addAttendingAttendee(att);
                    sess.addPlansToAttend(att);
                }
            }
        }
        framedGraph.commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : HashMap(java.util.HashMap) GregorianCalendar(java.util.GregorianCalendar) Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) Document(org.openntf.domino.Document) View(org.openntf.domino.View) Date(java.util.Date) Database(org.openntf.domino.Database) SimpleDateFormat(java.text.SimpleDateFormat)

Example 22 with View

use of org.openntf.domino.View in project org.openntf.domino by OpenNTF.

the class JsonFrameAdapter 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) {
                Vertex v = ((VertexFrame) frame).asVertex();
                // if (v instanceof DProxyVertex) {
                // result = ((DProxyVertex)v).getProxyDelegate().getId().toString();
                // } else {
                result = String.valueOf(v.getId());
            // }
            } else if (frame instanceof EdgeFrame) {
                result = String.valueOf(((EdgeFrame) frame).asEdge().getId());
            }
        } else if (key.equals("@editable")) {
            if (frame instanceof VertexFrame) {
                result = ((DVertex) ((VertexFrame) frame).asVertex()).isEditable();
            } else if (frame instanceof EdgeFrame) {
                result = ((DEdge) ((EdgeFrame) frame).asEdge()).isEditable();
            }
        } else if (key.equals("@proxyid")) {
            // System.out.println("TEMP DEBUG @proxyid requested");
            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("@versions")) {
            if (frame instanceof VertexFrame) {
                try {
                    Vertex v = ((VertexFrame) frame).asVertex();
                    Object id = v.getId();
                    Session sess = Factory.getSession(SessionType.CURRENT);
                    Document doc = sess.getDocumentByMetaversalID(id.toString());
                    if (doc != null) {
                        Database db = doc.getAncestorDatabase();
                        List<DocumentBackupContributor> contributors = Factory.findApplicationServices(DocumentBackupContributor.class);
                        if (contributors != null) {
                            for (DocumentBackupContributor contributor : contributors) {
                                Optional<List<Date>> dates = contributor.getRevisionDates(db, doc.getUniversalID());
                                if (dates.isPresent()) {
                                    result = dates.get();
                                    break;
                                }
                            }
                        }
                    }
                } catch (Throwable t) {
                    t.printStackTrace();
                }
            }
            if (result == null) {
                List<String> resultList = new ArrayList<String>();
                resultList.add("N/A");
                result = resultList;
            }
        } 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("vertexIdentity", 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("@label")) {
            if (frame instanceof EdgeFrame) {
                Edge e = ((EdgeFrame) frame).asEdge();
                result = e.getLabel();
            }
        } 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 VertexFrame) {
                            VertexFrame inFrame = (VertexFrame) raw;
                            result = new JsonFrameAdapter(graph_, inFrame, inMap, isCollectionRoute_);
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                } else {
                    System.out.println("In method not found for type: " + type_.getName());
                }
            }
        } 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 VertexFrame) {
                            VertexFrame outFrame = (VertexFrame) raw;
                            result = new JsonFrameAdapter(graph_, outFrame, 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();
            // " edge types");
            for (CaseInsensitiveString label : counterKeys) {
                Method crystal = getCounters().get(label);
                if (crystal != null) {
                    // key);
                    try {
                        Object raw = crystal.invoke(getFrame(), (Object[]) null);
                        if (raw instanceof Integer) {
                            edgeCounts.put(label.toString(), (Integer) raw);
                        } else {
                        }
                    } catch (IllegalArgumentException iae) {
                        System.out.println("TEMP DEBUG Attempting to invoke " + crystal.getDeclaringClass().getName() + "." + crystal.getName() + " on an " + getFrame().getClass().getName() + " (" + DGraphUtils.getInterfaceList(getFrame()) + ")");
                        throw new RuntimeException(iae);
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                } else {
                // System.out.println("TEMP DEBUG No method found for
                // key "
                // + key);
                }
            }
            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 {
                    // System.out.println("TEMP DEBUG Invokation of a
                    // counter resulted in a "
                    // + (raw == null ? "null" :
                    // raw.getClass().getName()));
                    }
                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            } else {
            // System.out.println("TEMP DEBUG No method found for key "
            // + label);
            }
        } 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();
                    if (view != null) {
                        try {
                            for (ViewColumn column : view.getColumns()) {
                                String progName = column.getItemName();
                                String title = column.getTitle();
                                columnInfo.put(progName, title);
                            }
                        } catch (Throwable t) {
                            columnInfo.put("@error", "Unable to access column information");
                        }
                    }
                } 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 (IllegalArgumentException iae) {
                    throw new RuntimeException(iae.getMessage() + " where the expect call is " + crystal.getDeclaringClass().getName() + "." + crystal.getName() + " but the object is " + DGraphUtils.getInterfaceList(frame));
                } 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()) {
                        // EdgeList into VertexList");
                        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_) {
                        if (result instanceof DEdgeList) {
                            // System.out.println("TEMP DEBUG: Applying
                            // a filter to a DEdgeList");
                            List<CharSequence> filterKeys = getFilterKeys();
                            List<CharSequence> filterValues = getFilterValues();
                            for (int i = 0; i < filterKeys.size(); i++) {
                                result = ((DEdgeList) result).applyFilter(filterKeys.get(i).toString(), filterValues.get(i).toString());
                            }
                        } else if (result instanceof DVertexList) {
                            // System.out.println("TEMP DEBUG: Applying
                            // a filter to a DVertexList");
                            List<CharSequence> filterKeys = getFilterKeys();
                            List<CharSequence> filterValues = getFilterValues();
                            for (int i = 0; i < filterKeys.size(); i++) {
                                result = ((DVertexList) result).applyFilter(filterKeys.get(i).toString(), filterValues.get(i).toString());
                            }
                        } else if (result instanceof FramedEdgeList) {
                            // System.out.println("TEMP DEBUG: Applying
                            // a filter to a FramedEdgeList");
                            List<CharSequence> filterKeys = getFilterKeys();
                            List<CharSequence> filterValues = getFilterValues();
                            for (int i = 0; i < filterKeys.size(); i++) {
                                result = ((FramedEdgeList<?>) result).applyFilter(filterKeys.get(i).toString(), filterValues.get(i).toString());
                            }
                        } else if (result instanceof FramedVertexList) {
                            List<CharSequence> filterKeys = getFilterKeys();
                            List<CharSequence> filterValues = getFilterValues();
                            for (int i = 0; i < filterKeys.size(); i++) {
                                String curkey = filterKeys.get(i).toString();
                                String curvalue = filterValues.get(i).toString();
                                // System.out.println("TEMP DEBUG:
                                // Applying a filter to a
                                // FramedVertexList - "
                                // + curkey + ":" + curvalue);
                                result = ((FramedVertexList<?>) result).applyFilter(curkey, curvalue);
                            }
                        }
                    }
                    if (getStartsValues() != null) {
                        // + result.getClass().getName());
                        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) {
                            // System.out.println("TEMP DEBUG filtering a
                            // DEdgeEntryList");
                            ((DEdgeEntryList) result).filterEntryList(getFilterValues());
                        } else if (result instanceof FramedEdgeList) {
                            ((FramedEdgeList) result).applyFilter("filter", getFilterValues());
                        }
                    }
                    if (getOrderBys() != null) {
                        if (result instanceof FramedEdgeList) {
                            // System.out.println("Ordering an edge
                            // list");
                            result = ((FramedEdgeList<?>) result).sortBy(getOrderBys(), getDescending());
                        } else if (result instanceof FramedVertexList) {
                            // System.out.println("Ordering a vertex
                            // list");
                            result = ((FramedVertexList<?>) result).sortBy(getOrderBys(), getDescending());
                        }
                    }
                    if (getStart() >= 0) {
                        // + " for a " + result.getClass().getName());
                        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(), (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.
            // System.err.println("No edge method found for label " +
            // label + " in a VertexFrame of type "
            // + DGraphUtils.findInterface(frame) + " with id "
            // + ((VertexFrame) frame).asVertex().getId());
            }
        } else {
            // System.out.println("TEMP DEBUG finding property " + key);
            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) ArrayList(java.util.ArrayList) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) Document(org.openntf.domino.Document) LinkedHashMap(java.util.LinkedHashMap) DbInfoVertex(org.openntf.domino.graph2.builtin.DbInfoVertex) Database(org.openntf.domino.Database) FramedEdgeList(org.openntf.domino.graph2.annotations.FramedEdgeList) ArrayList(java.util.ArrayList) DEdgeEntryList(org.openntf.domino.graph2.impl.DEdgeEntryList) DEdgeList(org.openntf.domino.graph2.DEdgeList) DVertexList(org.openntf.domino.graph2.impl.DVertexList) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) List(java.util.List) DEdgeList(org.openntf.domino.graph2.DEdgeList) DProxyVertex(org.openntf.domino.graph2.impl.DProxyVertex) Optional(java.util.Optional) DVertex(org.openntf.domino.graph2.impl.DVertex) Method(java.lang.reflect.Method) FramedEdgeList(org.openntf.domino.graph2.annotations.FramedEdgeList) UserAccessException(org.openntf.domino.exceptions.UserAccessException) CaseInsensitiveString(org.openntf.domino.types.CaseInsensitiveString) JsonJavaObject(com.ibm.commons.util.io.json.JsonJavaObject) JsonObject(com.ibm.commons.util.io.json.JsonObject) 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) Set(java.util.Set) ViewColumn(org.openntf.domino.ViewColumn) FramedVertexList(org.openntf.domino.graph2.annotations.FramedVertexList) ViewVertex(org.openntf.domino.graph2.builtin.ViewVertex) DVertexList(org.openntf.domino.graph2.impl.DVertexList) EdgeFrame(com.tinkerpop.frames.EdgeFrame) DEdgeFrame(org.openntf.domino.graph2.builtin.DEdgeFrame) View(org.openntf.domino.View) Date(java.util.Date) 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) DocumentBackupContributor(org.openntf.domino.contributor.DocumentBackupContributor) DEdge(org.openntf.domino.graph2.impl.DEdge) Edge(com.tinkerpop.blueprints.Edge) DEdge(org.openntf.domino.graph2.impl.DEdge) Session(org.openntf.domino.Session)

Example 23 with View

use of org.openntf.domino.View in project org.openntf.domino by OpenNTF.

the class DataDumper method loadData.

@SuppressWarnings({ "deprecation" })
public void loadData(final org.openntf.domino.Session s, final FramedTransactionalGraph<DGraph> framedGraph) {
    HashMap<String, Location> locs = new HashMap<String, Location>();
    HashMap<String, Track> tracks = new HashMap<String, Track>();
    try {
        Database srcDb = s.getDatabase(s.getServerName(), SRC_DATA_PATH);
        if (null == srcDb) {
            throw new Exception("Source database not found on this Domino server at " + SRC_DATA_PATH);
        }
        // Create Group vertexes
        Group ibm_champion = framedGraph.addVertex("IBM Champions", Group.class);
        ibm_champion.setType(Group.Type.PROGRAM);
        SimpleDateFormat sdf = new SimpleDateFormat();
        View sessions = srcDb.getView("Sessions");
        for (Document doc : sessions.getAllDocuments()) {
            if (!doc.hasItem("$Conflict")) {
                // ignore conflicts
                String locKey = doc.getItemValueString("Location");
                Location loc = framedGraph.addVertex(locKey, Location.class);
                if (Strings.isBlankString(loc.getName())) {
                    loc.setName(doc.getItemValueString("Location"));
                }
                String trackKey = doc.getItemValueString("Categories");
                Track track = framedGraph.addVertex(trackKey, Track.class);
                if (Strings.isBlankString(track.getTitle())) {
                    track.setTitle(doc.getItemValueString("Categories"));
                    track.setDescription(doc.getItemValueString("Categories"));
                }
                Date startDate = doc.getItemValue("StartDate", Date.class);
                Date startDateTime = doc.getItemValue("StartDateTime", Date.class);
                Date endDate = doc.getItemValue("EndDate", Date.class);
                Date endDateTime = doc.getItemValue("EndDateTime", Date.class);
                Calendar startCal = new GregorianCalendar(TimeZone.getTimeZone("EST"));
                startCal.setTime(startDate);
                startCal.set(Calendar.HOUR, startDateTime.getHours());
                startCal.set(Calendar.MINUTE, startDateTime.getMinutes());
                startCal.set(Calendar.SECOND, startDateTime.getSeconds());
                Calendar endCal = new GregorianCalendar(TimeZone.getTimeZone("EST"));
                endCal.setTime(endDate);
                endCal.set(Calendar.HOUR, endDateTime.getHours());
                endCal.set(Calendar.MINUTE, endDateTime.getMinutes());
                endCal.set(Calendar.SECOND, endDateTime.getSeconds());
                String tsKey = sdf.format(startCal.getTime()) + " - " + sdf.format(endCal.getTime());
                TimeSlot ts = framedGraph.addVertex(tsKey, TimeSlot.class);
                ts.setStartTime(startCal);
                ts.setEndTime(endCal);
                String code = doc.getItemValueString("SessionID");
                // Not sure if I can combine these, that's for later
                Presentation sess = framedGraph.addVertex(code, Presentation.class);
                sess.setTitle(doc.getItemValueString("Subject"));
                sess.setDescription(doc.getItemValueString("Abstract"));
                sess.setStatus(Event.Status.CONFIRMED);
                sess.setSessionId(doc.getItemValueString("SessionID"));
                sess.setLevel(doc.getItemValueString("Level"));
                System.out.println("Assigning location - " + locKey + " to session " + doc.getItemValueString("Subject"));
                sess.addLocation(loc);
                track.addIncludesSession(sess);
                ts.addEvent(sess);
                for (int i = 1; i < 6; i++) {
                    String speaker = doc.getItemValueString("Speaker" + String.valueOf(i));
                    if ("".equals(speaker)) {
                        break;
                    }
                    String speakerName = speaker;
                    String organization = "";
                    if (speaker.contains(" - ")) {
                        int splitPos = speaker.indexOf(" - ");
                        speakerName = speaker.substring(0, splitPos);
                        organization = speaker.substring(splitPos + 3, speaker.length());
                    }
                    Attendee att = framedGraph.addVertex(null, Attendee.class);
                    int sep = speakerName.indexOf(" ");
                    String firstName = speakerName.substring(0, sep);
                    String lastName = speakerName.substring(sep + 1, speakerName.length());
                    att.setFirstName(firstName);
                    att.setLastName(lastName);
                    if (!"".equals(organization)) {
                        Group org = framedGraph.addVertex(organization, Group.class);
                        org.setName(organization);
                        org.setType(Type.COMPANY);
                        org.addMember(att);
                    }
                    sess.addPresentedBy(att);
                    sess.addAttendingAttendee(att);
                    sess.addPlansToAttend(att);
                }
            }
        }
        framedGraph.commit();
    } catch (Exception e) {
        e.printStackTrace();
    }
}
Also used : HashMap(java.util.HashMap) GregorianCalendar(java.util.GregorianCalendar) Calendar(java.util.Calendar) GregorianCalendar(java.util.GregorianCalendar) Document(org.openntf.domino.Document) View(org.openntf.domino.View) Date(java.util.Date) Database(org.openntf.domino.Database) SimpleDateFormat(java.text.SimpleDateFormat)

Example 24 with View

use of org.openntf.domino.View in project org.openntf.domino by OpenNTF.

the class Connect17Transaction method queueTransaction.

private void queueTransaction(final Database db, final String state) {
    boolean toggle = true;
    int count = 0;
    View contacts = db.getView("AllContactsByState");
    DocumentCollection dc = contacts.getAllDocumentsByKey(state, true);
    for (Document doc : dc) {
        if (toggle) {
            doc.replaceItemValue("txnTest", new Date());
            count += 1;
        }
        toggle = !toggle;
    }
    System.out.println("...Updated " + Integer.toString(count) + " Contacts pending committal.");
}
Also used : DocumentCollection(org.openntf.domino.DocumentCollection) Document(org.openntf.domino.Document) View(org.openntf.domino.View) Date(java.util.Date)

Example 25 with View

use of org.openntf.domino.View in project org.openntf.domino by OpenNTF.

the class Connect17SyncHelper method run.

@Override
public void run() {
    Session sess = Factory.getSession(SessionType.NATIVE);
    Database extLib = sess.getDatabase("odademo/oda_1.nsf");
    java.util.Map<Object, String> syncMap = new java.util.HashMap<Object, String>();
    syncMap.put("Key", "State");
    syncMap.put("Name", "StateName");
    syncMap.put("@Now", "LastSync");
    DocumentSyncHelper helper = new DocumentSyncHelper(DocumentSyncHelper.Strategy.CREATE_AND_REPLACE, syncMap, extLib.getServer(), extLib.getFilePath(), "AllContactsByState", "Key");
    View states = extLib.getView("AllStates");
    DocumentCollection sourceCollection = states.getAllDocuments();
    helper.process(sourceCollection);
    System.out.println("Updated " + sourceCollection.getCount() + " documents");
}
Also used : Database(org.openntf.domino.Database) DocumentSyncHelper(org.openntf.domino.helpers.DocumentSyncHelper) DocumentCollection(org.openntf.domino.DocumentCollection) View(org.openntf.domino.View) Session(org.openntf.domino.Session)

Aggregations

View (org.openntf.domino.View)33 Session (org.openntf.domino.Session)20 Database (org.openntf.domino.Database)19 Document (org.openntf.domino.Document)9 ViewEntry (org.openntf.domino.ViewEntry)7 Test (org.junit.Test)6 ArrayList (java.util.ArrayList)5 Date (java.util.Date)5 ViewNavigator (org.openntf.domino.ViewNavigator)5 HashMap (java.util.HashMap)4 ViewColumn (org.openntf.domino.ViewColumn)4 Map (java.util.Map)3 Vector (java.util.Vector)3 DocumentCollection (org.openntf.domino.DocumentCollection)3 ViewEntryCollection (org.openntf.domino.ViewEntryCollection)3 JsonJavaObject (com.ibm.commons.util.io.json.JsonJavaObject)2 JsonObject (com.ibm.commons.util.io.json.JsonObject)2 Edge (com.tinkerpop.blueprints.Edge)2 Vertex (com.tinkerpop.blueprints.Vertex)2 EdgeFrame (com.tinkerpop.frames.EdgeFrame)2