@Override public String getName() { int nameIndexRef = baseGraph.edges.getInt(edgePointer + baseGraph.E_NAME); return baseGraph.nameIndex.get(nameIndexRef); }
private void setName(long edgePointer, String name) { int nameIndexRef = (int) nameIndex.put(name); if (nameIndexRef < 0) throw new IllegalStateException("Too many names are stored, currently limited to int pointer"); edges.setInt(edgePointer + E_NAME, nameIndexRef); }
@Test public void testTooLongNameNoError() { NameIndex index = new NameIndex(new RAMDirectory()).create(1000); // WTH are they doing in OSM? There are exactly two names in the full planet export which violates this limitation! index.put("Бухарестская улица (http://ru.wikipedia.org/wiki/%D0%91%D1%83%D1%85%D0%B0%D1%80%D0%B5%D1%81%D1%82%D1%81%D0%BA%D0%B0%D1%8F_%D1%83%D0%BB%D0%B8%D1%86%D0%B0_(%D0%A1%D0%B0%D0%BD%D0%BA%D1%82-%D0%9F%D0%B5%D1%82%D0%B5%D1%80%D0%B1%D1%83%D1%80%D0%B3))"); String str = "sdfsdfds"; for (int i = 0; i < 256 * 3; i++) { str += "Б"; } index.put(str); index.close(); }
@Test public void testFlush() { String location = "./target/nameindex-store"; Helper.removeDir(new File(location)); NameIndex index = new NameIndex(new RAMDirectory(location, true).create()).create(1000); long pointer = index.put("test"); index.flush(); index.close(); index = new NameIndex(new RAMDirectory(location, true)); assertTrue(index.loadExisting()); assertEquals("test", index.get(pointer)); // make sure bytePointer is correctly set after loadExisting long newPointer = index.put("testing"); assertEquals(newPointer + ">" + pointer, pointer + "test".getBytes().length + 1, newPointer); index.close(); Helper.removeDir(new File(location)); } }
void close() { wayGeometry.close(); nameIndex.close(); edges.close(); nodes.close(); extStorage.close(); }
void create(long initSize) { nodes.create(initSize); edges.create(initSize); initSize = Math.min(initSize, 2000); wayGeometry.create(initSize); nameIndex.create(initSize); extStorage.create(initSize); initStorage(); // 0 stands for no separate geoRef maxGeoRef = 4; initNodeRefs(0, nodes.getCapacity()); }
void loadExisting(String dim) { if (!nodes.loadExisting()) throw new IllegalStateException("Cannot load nodes. corrupt file or directory? " + dir); if (!dim.equalsIgnoreCase("" + nodeAccess.getDimension())) throw new IllegalStateException("Configured dimension (" + nodeAccess.getDimension() + ") is not equal " + "to dimension of loaded graph (" + dim + ")"); if (!edges.loadExisting()) throw new IllegalStateException("Cannot load edges. corrupt file or directory? " + dir); if (!wayGeometry.loadExisting()) throw new IllegalStateException("Cannot load geometry. corrupt file or directory? " + dir); if (!nameIndex.loadExisting()) throw new IllegalStateException("Cannot load name index. corrupt file or directory? " + dir); if (!extStorage.loadExisting()) throw new IllegalStateException("Cannot load extended storage. corrupt file or directory? " + dir); // first define header indices of this storage initStorage(); // now load some properties from stored data loadNodesHeader(); loadEdgesHeader(); loadWayGeometryHeader(); }
void flush() { setNodesHeader(); setEdgesHeader(); setWayGeometryHeader(); wayGeometry.flush(); nameIndex.flush(); edges.flush(); nodes.flush(); extStorage.flush(); }
long getCapacity() { return edges.getCapacity() + nodes.getCapacity() + nameIndex.getCapacity() + wayGeometry.getCapacity() + extStorage.getCapacity(); }
this.bitUtil = BitUtil.get(dir.getByteOrder()); this.wayGeometry = dir.find("geometry"); this.nameIndex = new NameIndex(dir); this.nodes = dir.find("nodes", DAType.getPreferredInt(dir.getDefaultType())); this.edges = dir.find("edges", DAType.getPreferredInt(dir.getDefaultType()));
/** * @return the byte pointer to the name */ public long put(String name) { if (name == null || name.isEmpty()) { return 0; } if (name.equals(lastName)) { return lastIndex; } byte[] bytes = getBytes(name); long oldPointer = bytePointer; names.ensureCapacity(bytePointer + 1 + bytes.length); byte[] sizeBytes = new byte[]{ (byte) bytes.length }; names.setBytes(bytePointer, sizeBytes, sizeBytes.length); bytePointer++; names.setBytes(bytePointer, bytes, bytes.length); bytePointer += bytes.length; lastName = name; lastIndex = oldPointer; return oldPointer; }
void setSegmentSize(int bytes) { checkInit(); nodes.setSegmentSize(bytes); edges.setSegmentSize(bytes); wayGeometry.setSegmentSize(bytes); nameIndex.setSegmentSize(bytes); extStorage.setSegmentSize(bytes); }
nameIndex.copyTo(clonedG.nameIndex);
@Test public void testCreate() { NameIndex index = new NameIndex(new RAMDirectory()).create(1000); String str1 = "nice"; long pointer1 = index.put(str1); String str2 = "nice work äöß"; long pointer2 = index.put(str2); assertEquals(str2, index.get(pointer2)); assertEquals(str1, index.get(pointer1)); index.close(); }
@Override public String getName() { int nameIndexRef = baseGraph.edges.getInt(edgePointer + baseGraph.E_NAME); return baseGraph.nameIndex.get(nameIndexRef); }
String toDetailsString() { return "edges:" + nf(edgeCount) + "(" + edges.getCapacity() / Helper.MB + "MB), " + "nodes:" + nf(getNodes()) + "(" + nodes.getCapacity() / Helper.MB + "MB), " + "name:(" + nameIndex.getCapacity() / Helper.MB + "MB), " + "geo:" + nf(maxGeoRef) + "(" + wayGeometry.getCapacity() / Helper.MB + "MB), " + "bounds:" + bounds; }
@Test public void testPut() { NameIndex index = new NameIndex(new RAMDirectory()).create(1000); long result = index.put("Something Streetä"); assertEquals("Something Streetä", index.get(result)); long existing = index.put("Something Streetä"); assertEquals(result, existing); result = index.put("testing"); assertEquals("testing", index.get(result)); assertEquals(0, index.put("")); assertEquals(0, index.put(null)); assertEquals("", index.get(0)); index.close(); }
@Override public String getName() { int nameIndexRef = baseGraph.edges.getInt(edgePointer + baseGraph.E_NAME); return baseGraph.nameIndex.get(nameIndexRef); }
@Override public String getName() { int nameIndexRef = baseGraph.edges.getInt(edgePointer + baseGraph.E_NAME); return baseGraph.nameIndex.get(nameIndexRef); }