@Override public String toString() { return String.format("Index(%s) %s on %s(%s)", indexTree.toString().substring(0, 8), indexInfo.getIndexType(), indexInfo.getTreeName(), indexInfo.getAttributeName()); } }
@Override public boolean equals(Object o) { if (o instanceof IndexInfo) { IndexInfo i = (IndexInfo) o; return Objects.equals(getTreeName(), i.getTreeName()) && Objects.equals(getAttributeName(), i.getAttributeName()) && Objects.equals(getIndexType(), i.getIndexType()) && Objects.equals(getMetadata(), i.getMetadata()); } return false; }
@Override public String toString() { return String.format("Index(%s) %s on %s(%s)", indexTree.toString().substring(0, 8), indexInfo.getIndexType(), indexInfo.getTreeName(), indexInfo.getAttributeName()); } }
@Override public int hashCode() { return Objects.hash(getTreeName(), getAttributeName(), getIndexType(), getMetadata().size()); }
@Override public int hashCode() { return Objects.hash(getTreeName(), getAttributeName(), getIndexType(), getMetadata()); }
private void addIndex(IndexInfo index) { String treeName = index.getTreeName(); if (indexes.containsKey(treeName)) { indexes.get(treeName).add(index); } else { indexes.put(treeName, Lists.newArrayList(index)); } }
private void addIndex(IndexInfo index) { String treeName = index.getTreeName(); if (indexes.containsKey(treeName)) { indexes.get(treeName).add(index); } else { indexes.put(treeName, Lists.newArrayList(index)); } }
@Override public boolean equals(Object o) { if (o instanceof IndexInfo) { IndexInfo i = (IndexInfo) o; return Objects.equals(getTreeName(), i.getTreeName()) && Objects.equals(getAttributeName(), i.getAttributeName()) && Objects.equals(getIndexType(), i.getIndexType()) && compareMetadatas(getMetadata(), i.getMetadata()); } return false; }
@Override public boolean dropIndex(IndexInfo index) { List<IndexInfo> treeIndexes = indexes.get(index.getTreeName()); if (treeIndexes != null) { if (treeIndexes.contains(index)) { clearIndex(index); treeIndexes.remove(index); return true; } } return false; }
public static IndexInfoEntry fromIndexInfo(IndexInfo indexInfo) { String layer = indexInfo.getTreeName(); String indexedAttribute = indexInfo.getAttributeName(); IndexType indexType = indexInfo.getIndexType(); List<String> extraAttributes = Lists.newArrayList(IndexInfo.getMaterializedAttributeNames(indexInfo)); return new IndexInfoEntry(layer, indexedAttribute, indexType, extraAttributes); }
@Override public boolean dropIndex(IndexInfo index) { List<IndexInfo> treeIndexes = indexes.get(index.getTreeName()); if (treeIndexes != null) { if (treeIndexes.contains(index)) { clearIndex(index); treeIndexes.remove(index); return true; } } return false; }
public static Map<String, IndexInfo> getIndexes(Repository repo, String featureTreePath) { List<IndexInfo> indexInfos; indexInfos = repo.indexDatabase().getIndexInfos(featureTreePath); Map<String, IndexInfo> typeIndexes = indexInfos.stream() .collect(Collectors.toMap(i -> i.getTreeName(), i -> i)); return typeIndexes; }
private Index createAndBuildIndex(@Nullable String... extraAttributes) { IndexInfo indexInfo = createIndex(extraAttributes); Index index = updateIndex(indexInfo.getTreeName(), extraAttributes); return index; }
private Index createAndBuildIndex(@Nullable String... extraAttributes) { IndexInfo indexInfo = createIndex(extraAttributes); Index index = updateIndex(indexInfo.getTreeName(), extraAttributes); return index; }
public static void serialize(IndexInfo index, DataOutput out) { try { valueEncoder.encode(FieldType.STRING, index.getTreeName(), out); valueEncoder.encode(FieldType.STRING, index.getAttributeName(), out); valueEncoder.encode(FieldType.STRING, index.getIndexType().toString(), out); valueEncoder.encode(FieldType.MAP, index.getMetadata(), out); } catch (IOException e) { Throwables.propagate(e); } }
public static void serialize(IndexInfo index, DataOutput out) { try { valueEncoder.encode(FieldType.STRING, index.getTreeName(), out); valueEncoder.encode(FieldType.STRING, index.getAttributeName(), out); valueEncoder.encode(FieldType.STRING, index.getIndexType().toString(), out); valueEncoder.encode(FieldType.MAP, index.getMetadata(), out); } catch (IOException e) { throw new RuntimeException(e); } }
@Test public void testCreateIndex() { Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put("meta1", 5L); metadata.put("meta2", "someValue"); String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, metadata); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertEquals(metadata, index.getMetadata()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); }
@When("^I create a spatial index on \"([^\"]*)\"$") public void i_create_a_spatial_index_on(String storeName) throws Throwable { GeoGigDataStore store = datastoreMap.get(storeName); Optional<ObjectId> createOrUpdateIndex = store.createOrUpdateIndex(currentLayer.getTypeName()); assertTrue("Expected an Index to be created", createOrUpdateIndex.isPresent()); IndexDatabase indexDatabase = store.resolveContext(Transaction.AUTO_COMMIT).indexDatabase(); List<IndexInfo> resolveIndexInfo = indexDatabase.getIndexInfos(currentLayer.getTypeName()); assertEquals("Expected exactly 1 IndexInfo", 1, resolveIndexInfo.size()); IndexInfo info = resolveIndexInfo.get(0); assertEquals("Unexpected Index type", IndexType.QUADTREE, info.getIndexType()); assertEquals("Unexpected Index spatial attribute", "the_geom", info.getAttributeName()); assertEquals("Unexpected Index Path name", currentLayer.getTypeName(), info.getTreeName()); }
@Test public void testEqualIndexesWithDifferentExtraAttributesHashDifferently() { Index noExtraAtts = createAndBuildIndex(); Index xExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "x"); Index yExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "y"); assertNotEquals(noExtraAtts, xExtraAtts); assertNotEquals(xExtraAtts, yExtraAtts); assertNotEquals(noExtraAtts.indexTreeId(), xExtraAtts.indexTreeId()); assertNotEquals(xExtraAtts.indexTreeId(), yExtraAtts.indexTreeId()); }
@Test public void testEqualIndexesWithDifferentExtraAttributesHashDifferently() { Index noExtraAtts = createAndBuildIndex(); Index xExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "x"); Index yExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "y"); assertNotEquals(noExtraAtts, xExtraAtts); assertNotEquals(xExtraAtts, yExtraAtts); assertNotEquals(noExtraAtts.indexTreeId(), xExtraAtts.indexTreeId()); assertNotEquals(xExtraAtts.indexTreeId(), yExtraAtts.indexTreeId()); }