private void copy(OResult from, OResultInternal to) { for (String prop : from.getPropertyNames()) { to.setProperty(prop, from.getProperty(prop)); } }
@SuppressWarnings("boxing") public boolean getBoolean(String columnLabel) throws SQLException { try { Boolean r = result.getProperty(columnLabel); lastReadWasNull = r == null; return Boolean.TRUE.equals(r); } catch (Exception e) { throw new SQLException( "An error occurred during the retrieval of the boolean value at column '" + columnLabel + "' ---> " + result.toElement() .toJSON(), e); } }
/** * this is for subqueries, when a OResult is found <ul> <li>if it's a projection with a single column, the value is returned</li> * <li>if it's a document, the RID is returned</li> </ul> * * @param value * * @return */ private Object unboxOResult(Object value) { if (value instanceof List) { return ((List) value).stream().map(x -> unboxOResult(x)).collect(Collectors.toList()); } if (value instanceof OResult) { if (((OResult) value).isElement()) { return ((OResult) value).getIdentity().orElse(null); } Set<String> props = ((OResult) value).getPropertyNames(); if (props.size() == 1) { return ((OResult) value).getProperty(props.iterator().next()); } } return value; }
public void setProperty(String name, Object value) { if (value instanceof Optional) { value = ((Optional) value).orElse(null); } if (value instanceof OResult && ((OResult) value).isElement()) { content.put(name, ((OResult) value).getElement().get()); } else { content.put(name, value); } }
private void tryAddEntryPoint(OResult res, OCommandContext ctx) { if (whileClause == null || whileClause.matchesFilters(res, ctx)) { this.entryPoints.add(0, res); } if (res.isElement()) { traversed.add(res.getElement().get().getIdentity()); } else if (res.getProperty("@rid") != null && res.getProperty("@rid") instanceof OIdentifiable) { traversed.add(((OIdentifiable) res.getProperty("@rid")).getIdentity()); } }
@SuppressWarnings("boxing") public short getShort(String columnLabel) throws SQLException { try { final Short r = result.getProperty(columnLabel); lastReadWasNull = r == null; return r != null ? r : 0; } catch (Exception e) { throw new SQLException("An error occurred during the retrieval of the short value at column '" + columnLabel + "'", e); } }
public void deleteRow() throws SQLException { result.toElement().delete(); }
private OResult toTraverseResult(OResult item) { OTraverseResult res = null; if (item instanceof OTraverseResult) { res = (OTraverseResult) item; } else if (item.isElement() && item.getElement().get().getIdentity().isPersistent()) { res = new OTraverseResult(); res.setElement(item.getElement().get()); res.depth = 0; } else if (item.getPropertyNames().size() == 1) { Object val = item.getProperty(item.getPropertyNames().iterator().next()); if (val instanceof OIdentifiable) { res = new OTraverseResult(); res.setElement((OIdentifiable) val); res.depth = 0; res.setMetadata("$depth", 0); } } else { res = new OTraverseResult(); for (String key : item.getPropertyNames()) { res.setProperty(key, item.getProperty(key)); } for (String md : item.getMetadataKeys()) { res.setMetadata(md, item.getMetadata(md)); } } return res; }
default String toJSON() { if (isElement()) { return getElement().get().toJSON(); } StringBuilder result = new StringBuilder(); result.append("{"); boolean first = true; for (String prop : getPropertyNames()) { if (!first) { result.append(", "); } result.append(toJson(prop)); result.append(": "); result.append(toJson(getProperty(prop))); first = false; } result.append("}"); return result.toString(); }
@Override public OResult next() { OResult result = lastFetched.next(); long begin = profilingEnabled ? System.nanoTime() : 0; try { if (result instanceof OUpdatableResult) { OResultInternal prevValue = new OResultInternal(); ORecord rec = result.getElement().get().getRecord(); prevValue.setProperty("@rid", rec.getIdentity()); prevValue.setProperty("@version", rec.getVersion()); if (rec instanceof ODocument) { prevValue.setProperty("@class", ((ODocument) rec).getSchemaClass().getName()); } if (!result.toElement().getIdentity().isNew()) { for (String propName : result.getPropertyNames()) { prevValue.setProperty(propName, OLiveQueryHookV2.unboxRidbags(result.getProperty(propName))); } } ((OUpdatableResult) result).previousValue = prevValue; } else { throw new OCommandExecutionException("Cannot fetch previous value: " + result); } return result; } finally { if (profilingEnabled) { cost += (System.nanoTime() - begin); } } }
public Object getObject(String columnLabel) throws SQLException { return result.getIdentity().toString(); String r = result.toElement().getSchemaType().map(t -> t.getName()).orElse(null); lastReadWasNull = r == null; return r; Object value = result.getProperty(columnLabel);
@Override protected void fetchNextEntryPoints(OCommandContext ctx, int nRecords) { OResultSet nextN = getPrev().get().syncPull(ctx, nRecords); while (nextN.hasNext()) { OResult item = toTraverseResult(nextN.next()); if (item == null) { continue; } ((OResultInternal) item).setMetadata("$depth", 0); List stack = new ArrayList(); item.getIdentity().ifPresent(x -> stack.add(x)); ((OResultInternal) item).setMetadata("$stack", stack); List<OIdentifiable> path = new ArrayList<>(); if (item.getIdentity().isPresent()) { path.add(item.getIdentity().get()); } else if (item.getProperty("@rid") != null) { path.add(item.getProperty("@rid")); } ((OResultInternal) item).setMetadata("$path", path); if (item != null && item.isElement() && !traversed.contains(item.getElement().get().getIdentity())) { tryAddEntryPoint(item, ctx); traversed.add(item.getElement().get().getIdentity()); } else if (item.getProperty("@rid") != null && item.getProperty("@rid") instanceof OIdentifiable) { tryAddEntryPoint(item, ctx); traversed.add(((OIdentifiable) item.getProperty("@rid")).getIdentity()); } } }
private OResult copy(OResult nextItem) { OResultInternal result = new OResultInternal(); for (String prop : nextItem.getPropertyNames()) { result.setProperty(prop, nextItem.getProperty(prop)); } for (String md : nextItem.getMetadataKeys()) { result.setMetadata(md, nextItem.getMetadata(md)); } return result; } });
@Override protected void fetchNextEntryPoints(OCommandContext ctx, int nRecords) { OResultSet nextN = getPrev().get().syncPull(ctx, nRecords); while (nextN.hasNext()) { while (nextN.hasNext()) { OResult item = toTraverseResult(nextN.next()); if(item != null){ List<ORID> stack = new ArrayList<>(); item.getIdentity().ifPresent(x -> stack.add(x)); ((OResultInternal) item).setMetadata("$stack", stack); List<OIdentifiable> path = new ArrayList<>(); path.add(item.getIdentity().get()); ((OResultInternal) item).setMetadata("$path", path); if (item != null && item.isElement() && !traversed.contains(item.getElement().get().getIdentity())) { tryAddEntryPoint(item, ctx); } } } nextN = getPrev().get().syncPull(ctx, nRecords); } }
private boolean filter(OResult record) { Object filterClass = record.getProperty("@class"); String recordClassName = String.valueOf(filterClass); if (filterClass == null) { boolean found = false; for (ORecordId rid : rids) { if (rid.equals(record.getIdentity().orElse(null))) { found = true; break; if (rid.equals(record.getProperty("@rid"))) { found = true; break;
if (nextItem.isElement()) { int clusterId = nextItem.getIdentity().get().getClusterId(); if (clusterId < 0) {
public Object evaluate(OResult iCurrentRecord, OCommandContext ctx) { if (name.equalsIgnoreCase("@rid")) { return iCurrentRecord.getIdentity().orElse(null); } else if (name.equalsIgnoreCase("@class")) { return iCurrentRecord.getElement().flatMap(r -> r.getSchemaType()).map(clazz -> clazz.getName()).orElse(null); } else if (name.equalsIgnoreCase("@version")) { return iCurrentRecord.getRecord().map(r -> r.getVersion()).orElse(null); } return null; }
public Collection<OIdentifiable> get(final Object iKey) { try (final OResultSet result = getDatabase().indexQuery(getName(), String.format(QUERY_GET, name), iKey)) { return result.stream().map((res) -> res.getIdentity().orElse(null)).collect(Collectors.toSet()); } }