For IntelliJ IDEA and
Android Studio


@Override public String toString() { return (isCHPossible() ? "CH|" : "") + encodingManager + "|" + getDirectory().getDefaultType() + "|" + baseGraph.nodeAccess.getDimension() + "D" + "|" + baseGraph.extStorage + "|" + getProperties().versionsToString(); }
static Directory guessDirectory(GraphStorage store) { if (store.getDirectory() instanceof MMapDirectory) { throw new IllegalStateException("not supported yet: mmap will overwrite existing storage at the same location"); } String location = store.getDirectory().getLocation(); boolean isStoring = ((GHDirectory) store.getDirectory()).isStoring(); return new RAMDirectory(location, isStoring); }
@Test public void testEnsureSize() { Directory dir = new RAMDirectory(); graph = newGHStorage(dir, false).create(defaultSize); int roughEdgeRowLength = 4 * 8; int testIndex = dir.find("edges").getSegmentSize() * 3 / roughEdgeRowLength; // we need a big node index to trigger multiple segments, but low enough to avoid OOM graph.edge(0, testIndex, 10, true); // test if optimize works without error graph.optimize(); }
void flush() { setNodesHeader(); setEdgesHeader(); setWayGeometryHeader(); wayGeometry.flush(); nameIndex.flush(); edges.flush(); nodes.flush(); extStorage.flush(); }
@Override public long getCapacity() { long cnt = baseGraph.getCapacity() + properties.getCapacity(); for (CHGraphImpl cg : chGraphs) { cnt += cg.getCapacity(); } return cnt; }
void setSegmentSize(int bytes) { checkInit(); nodes.setSegmentSize(bytes); edges.setSegmentSize(bytes); wayGeometry.setSegmentSize(bytes); nameIndex.setSegmentSize(bytes); extStorage.setSegmentSize(bytes); }
@Override public void flush() { for (CHGraphImpl cg : chGraphs) { cg.setEdgesHeader(); cg.flush(); } baseGraph.flush(); properties.flush(); }
@Override public CHEdgeIteratorState edge(int a, int b) { // increase edge array not for shortcuts baseGraph.ensureNodeIndex(Math.max(a, b)); int edgeId = baseGraph.edgeAccess.internalEdgeAdd(baseGraph.nextEdgeId(), a, b); CHEdgeIteratorImpl iter = new CHEdgeIteratorImpl(baseGraph, baseGraph.edgeAccess, EdgeFilter.ALL_EDGES); boolean ret = iter.init(edgeId, b); assert ret; return iter; }
@Override protected GraphHopperStorage createGHStorage(EncodingManager em, List<? extends Weighting> weightings, boolean is3D) { return new GraphHopperStorage(weightings, new RAMDirectory(), em, is3D, new GraphExtension.NoOpExtension()). create(1000); }
@Override public final CHEdgeIterator setBaseNode(int baseNode) { assert baseGraph.isFrozen() : "Traversal CHGraph is only possible if BaseGraph is frozen"; // always use ch edge access setEdgeId(chEdgeAccess.getEdgeRef(baseNode)); _setBaseNode(baseNode); return this; }
@Override public final void setAdditionalNodeField(int index, int additionalValue) { if (that.extStorage.isRequireNodeField() && that.N_ADDITIONAL >= 0) { that.ensureNodeIndex(index); long tmp = (long) index * that.nodeEntryBytes; that.nodes.setInt(tmp + that.N_ADDITIONAL, additionalValue); } else { throw new AssertionError("This graph does not provide an additional node field"); } }
@Override public GraphHopperStorage createGHStorage(String location, boolean enabled3D) { // reduce segment size in order to test the case where multiple segments come into the game GraphHopperStorage gs = newGHStorage(new RAMDirectory(location), enabled3D); gs.setSegmentSize(defaultSize / 2); gs.create(defaultSize); return gs; }
@Override public String toString() { return (isCHPossible() ? "CH|" : "") + encodingManager + "|" + getDirectory().getDefaultType() + "|" + baseGraph.nodeAccess.getDimension() + "D" + "|" + baseGraph.extStorage + "|" + getProperties().versionsToString(); }