private Object convertKey(Object key) { if (key instanceof OCompositeKey) { List<Object> result = new ArrayList<>(); result.addAll(((OCompositeKey) key).getKeys()); return result; } return key; }
@Override public OIndexCursor iterateEntries(Collection<?> keys, boolean ascSortOrder) { String query = (String) keys.stream().findFirst().map(k -> (OCompositeKey) k).map(ck -> ck.getKeys()) .orElse(Arrays.asList("q=*:*")).get(0); OLuceneResultSet identifiables = (OLuceneResultSet) get(query); return new OLuceneIndexCursor(identifiables, query); }
@Override public Point makeShape(OCompositeKey key, SpatialContext ctx) { double lat = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(0), Double.class)).doubleValue(); double lng = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(1), Double.class)).doubleValue(); return ctx.makePoint(lng, lat); }
@Override public Shape makeShape(OCompositeKey key, SpatialContext ctx) { double lat = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(0), Double.class)).doubleValue(); double lng = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(1), Double.class)).doubleValue(); return ctx.makePoint(lng, lat); }
public static Query createFullQuery(OIndexDefinition index, Object key, Analyzer analyzer, Version version) throws ParseException { String query = ""; if (key instanceof OCompositeKey) { Object params = ((OCompositeKey) key).getKeys().get(0); if (params instanceof Map) { Object q = ((Map) params).get("q"); if (q != null) { query = q.toString(); } } else { query = params.toString(); } } else { query = key.toString(); } return getQueryParser(index, query, analyzer, version); }
private List<Object> formatKeys(OIndexDefinition definition, Object key) { List<Object> keys; if (key instanceof OCompositeKey) { keys = ((OCompositeKey) key).getKeys(); } else if (key instanceof List) { keys = ((List) key); } else { keys = new ArrayList<Object>(); keys.add(key); } for (int i = keys.size(); i < definition.getFields().size(); i++) { keys.add(""); } return keys; }
public Query query(OIndexDefinition index, Object key, ODocument metadata, Analyzer analyzer) throws ParseException { String query; if (key instanceof OCompositeKey) { Object params = ((OCompositeKey) key).getKeys().get(0); query = params.toString(); } else { query = key.toString(); } if (query.isEmpty()) return new MatchNoDocsQuery(); return buildQuery(index, query, metadata, analyzer); }
private static boolean isIndexKeyMayDependOnRid(Object key, ORID rid, Dependency[] keyDependencies) { if (key instanceof OCompositeKey) { final List<Object> subKeys = ((OCompositeKey) key).getKeys(); for (int i = 0; i < subKeys.size(); ++i) if (isIndexKeyMayDependOnRid(subKeys.get(i), rid, keyDependencies == null ? null : keyDependencies[i])) return true; return false; } return isIndexKeyMayDependOnRid(key, rid, keyDependencies == null ? null : keyDependencies[0]); }
private static boolean isIndexKeyMayDependOnRid(Object key, ORID rid, Dependency[] keyDependencies) { if (key instanceof OCompositeKey) { final List<Object> subKeys = ((OCompositeKey) key).getKeys(); for (int i = 0; i < subKeys.size(); ++i) if (isIndexKeyMayDependOnRid(subKeys.get(i), rid, keyDependencies == null ? null : keyDependencies[i])) return true; return false; } return isIndexKeyMayDependOnRid(key, rid, keyDependencies == null ? null : keyDependencies[0]); }
private static Set<? extends Comparable<?>> keySet(final OClass documentClass, final String indexName){ final OIndex<?> index = documentClass.getClassIndex(indexName); final OIndexKeyCursor cursor = index.keyCursor(); Object key; final Set<Comparable<?>> result = new HashSet<>(15); while ((key = cursor.next(5)) instanceof OCompositeKey) { final OCompositeKey compositeKey = (OCompositeKey) key; compositeKey.getKeys().stream() .filter(k -> k instanceof Comparable<?>) .map(k -> (Comparable<?>) k) .findFirst() .ifPresent(result::add); } return result; }
@Override public Shape makeShape(OCompositeKey key, SpatialContext ctx) { Point[] points = new Point[2]; int i = 0; for (Object o : key.getKeys()) { List<Number> numbers = (List<Number>) o; double lat = ((Double) OType.convert(numbers.get(0), Double.class)).doubleValue(); double lng = ((Double) OType.convert(numbers.get(1), Double.class)).doubleValue(); points[i] = ctx.makePoint(lng, lat); i++; } return ctx.makeRectangle(points[0], points[1]); }
@Override public Shape makeShape(OCompositeKey key, SpatialContext ctx) { SpatialContext ctx1 = JtsSpatialContext.GEO; String value = key.getKeys().get(0).toString(); try { return ctx1.getWktShapeParser().parse(value); } catch (ParseException e) { OLogManager.instance().error(this, "Error on making shape", e); } return null; }
protected Object enhanceCompositeKey(Object key, PartialSearchMode partialSearchMode) { if (!(key instanceof OCompositeKey)) return key; final OCompositeKey compositeKey = (OCompositeKey) key; final int keySize = getDefinition().getParamCount(); if (!(keySize == 1 || compositeKey.getKeys().size() == keySize || partialSearchMode.equals(PartialSearchMode.NONE))) { final OCompositeKey fullKey = new OCompositeKey(compositeKey); int itemsToAdd = keySize - fullKey.getKeys().size(); final Comparable<?> keyItem; if (partialSearchMode.equals(PartialSearchMode.HIGHEST_BOUNDARY)) keyItem = ALWAYS_GREATER_KEY; else keyItem = ALWAYS_LESS_KEY; for (int i = 0; i < itemsToAdd; i++) fullKey.addKey(keyItem); return fullKey; } return key; }
public Object searchIntersect(OCompositeKey key, double distance, OCommandContext context) throws IOException { double lat = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(0), Double.class)).doubleValue(); double lng = ((Double) OType.convert(((OCompositeKey) key).getKeys().get(1), Double.class)).doubleValue(); SpatialOperation operation = SpatialOperation.Intersects; Point p = ctx.makePoint(lng, lat); SpatialArgs args = new SpatialArgs(operation, ctx.makeCircle(lng, lat, DistanceUtils.dist2Degrees(distance, DistanceUtils.EARTH_MEAN_RADIUS_KM))); Filter filter = strategy.makeFilter(args); IndexSearcher searcher = getSearcher(); ValueSource valueSource = strategy.makeDistanceValueSource(p); Sort distSort = new Sort(valueSource.getSortField(false)).rewrite(searcher); return new LuceneResultSet(this, new SpatialQueryContext(context, searcher, new MatchAllDocsQuery(), filter, distSort).setSpatialArgs(args)); }
public void addFacetContext(QueryContext queryContext, Object key) throws IOException { queryContext.setFacet(true); queryContext.setFacetField(facetField); queryContext.setFacetConfig(config); // queryContext.setfacetDim(facetDim); queryContext.setReader(new DirectoryTaxonomyReader(getTaxDirectory(owner.getDatabase()))); if (key instanceof OCompositeKey) { List<Object> keys = ((OCompositeKey) key).getKeys(); for (Object o : keys) { if (o instanceof Map) { String drillDown = (String) ((Map) o).get("drillDown"); queryContext.setDrillDownQuery(drillDown); } } } } }
protected void removeElement(final T element) { graph.setCurrentGraphInThreadLocal(); graph.autoStartTransaction(); final OSQLSynchQuery<ODocument> query = new OSQLSynchQuery<ODocument>("select from index:" + recordKeyValueIndex.getName() + " where key between [" + element.getIdentity() + "] and [" + element.getIdentity() + "]"); final Collection<ODocument> entries = (Collection<ODocument>) graph.getRawGraph().query(query); for (ODocument entry : entries) { final OCompositeKey key = entry.field("key"); final List<Object> keys = key.getKeys(); underlying.remove(keys.get(1).toString(), element.getIdentity()); recordKeyValueIndex.remove(key, element.getIdentity()); } }