@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 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 int hashCode() { return Objects.hash(getTreeName(), getAttributeName(), getIndexType(), getMetadata().size()); }
@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 int hashCode() { return Objects.hash(getTreeName(), getAttributeName(), getIndexType(), getMetadata()); }
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); }
protected @Override void compute() { List<TreeCopyTask> treeTasks = new ArrayList<>(); Set<IndexTreeMapping> mappings = new HashSet<>(); try (AutoCloseableIterator<IndexTreeMapping> indexMappings = src .resolveIndexedTrees(index)) { mappings = Sets.newHashSet(indexMappings); } for (IndexTreeMapping mapping : mappings) { ObjectId indexTreeId = mapping.indexTree; if (!target.exists(indexTreeId)) { TreeCopyTask task = new TreeCopyTask(src.getTree(indexTreeId), src, target); treeTasks.add(task); } } super.invokeAll(treeTasks); IndexInfo targetIndex = target.createIndexInfo(index.getTreeName(), index.getAttributeName(), index.getIndexType(), index.getMetadata()); mappings.forEach(m -> target.addIndexedTree(targetIndex, m.featureTree, m.indexTree)); }
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); } }
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); } }
@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 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()); }
@Test public void testGetIndex() { Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put("meta1", 5L); metadata.put("meta2", "someValue"); String treeName = "tree"; String attributeName = "attribute"; indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, metadata); indexDb.createIndexInfo("otherTree", "someAttribute", IndexType.QUADTREE, null); Optional<IndexInfo> indexOpt = indexDb.getIndexInfo(treeName, attributeName); assertTrue(indexOpt.isPresent()); IndexInfo index = indexOpt.get(); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertEquals(metadata, index.getMetadata()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); }
@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 \"([^\"]*)\" with extra attributes \"([^\"]*)\"$") public void i_create_a_spatial_index_with_extra_Attributes(String storeName, String attributes) throws Throwable { assertNotNull(attributes); assertFalse(attributes.isEmpty()); final String[] attributeArray = attributes.split(" "); final List<String> attributeList = Arrays.asList(attributeArray); GeoGigDataStore store = datastoreMap.get(storeName); Optional<ObjectId> createOrUpdateIndex = store.createOrUpdateIndex(currentLayer.getTypeName(), attributeArray); 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()); assertTrue("Extra Attribute list missing expected attributes", attributeList.containsAll( IndexInfo.getMaterializedAttributeNames(info))); assertEquals("Unexpected Index Path name", currentLayer.getTypeName(), info.getTreeName()); }
@When("^I create a spatial index on \"([^\"]*)\" with extra attributes \"([^\"]*)\"$") public void i_create_a_spatial_index_with_extra_Attributes(String storeName, String attributes) throws Throwable { assertNotNull(attributes); assertFalse(attributes.isEmpty()); final String[] attributeArray = attributes.split(" "); final List<String> attributeList = Arrays.asList(attributeArray); GeoGigDataStore store = datastoreMap.get(storeName); Optional<ObjectId> createOrUpdateIndex = store.createOrUpdateIndex(currentLayer.getTypeName(), attributeArray); 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()); assertTrue("Extra Attribute list missing expected attributes", attributeList.containsAll( IndexInfo.getMaterializedAttributeNames(info))); assertEquals("Unexpected Index Path name", currentLayer.getTypeName(), info.getTreeName()); }
@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 testGetIndex() { Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put("meta1", 5L); metadata.put("meta2", "someValue"); String treeName = "tree"; String attributeName = "attribute"; indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, metadata); indexDb.createIndexInfo("otherTree", "someAttribute", IndexType.QUADTREE, null); Optional<IndexInfo> indexOpt = indexDb.getIndexInfo(treeName, attributeName); assertTrue(indexOpt.isPresent()); IndexInfo index = indexOpt.get(); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertEquals(metadata, index.getMetadata()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); }
@Test public void testNullMetadata() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertTrue(index.getMetadata().isEmpty()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); Optional<IndexInfo> indexOpt = indexDb.getIndexInfo(treeName, attributeName); assertTrue(indexOpt.isPresent()); index = indexOpt.get(); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertTrue(index.getMetadata().isEmpty()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); }
@Test public void testNullMetadata() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertTrue(index.getMetadata().isEmpty()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); Optional<IndexInfo> indexOpt = indexDb.getIndexInfo(treeName, attributeName); assertTrue(indexOpt.isPresent()); index = indexOpt.get(); assertEquals(treeName, index.getTreeName()); assertEquals(attributeName, index.getAttributeName()); assertEquals(IndexType.QUADTREE, index.getIndexType()); assertTrue(index.getMetadata().isEmpty()); assertEquals(IndexInfo.getIndexId(treeName, attributeName), index.getId()); }