{"action":"created","issue":{"url":"https://api.github.com/repos/graphhopper/graphhopper/issues/447","labels_url":"https://api.github.com/repos/graphhopper/graphhopper/issues/447/labels{/name}","comments_url":"https://api.github.com/repos/graphhopper/graphhopper/issues/447/comments","events_url":"https://api.github.com/repos/graphhopper/graphhopper/issues/447/events","html_url":"https://github.com/graphhopper/graphhopper/pull/447","id":88958833,"number":447,"title":"Refactoring of GraphHopperStorage to fix #111","user":{"login":"karussell","id":129644,"avatar_url":"https://avatars.githubusercontent.com/u/129644?v=3","gravatar_id":"","url":"https://api.github.com/users/karussell","html_url":"https://github.com/karussell","followers_url":"https://api.github.com/users/karussell/followers","following_url":"https://api.github.com/users/karussell/following{/other_user}","gists_url":"https://api.github.com/users/karussell/gists{/gist_id}","starred_url":"https://api.github.com/users/karussell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karussell/subscriptions","organizations_url":"https://api.github.com/users/karussell/orgs","repos_url":"https://api.github.com/users/karussell/repos","events_url":"https://api.github.com/users/karussell/events{/privacy}","received_events_url":"https://api.github.com/users/karussell/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/graphhopper/graphhopper/labels/improvement","name":"improvement","color":"d7e102"}],"state":"open","locked":false,"assignee":{"login":"karussell","id":129644,"avatar_url":"https://avatars.githubusercontent.com/u/129644?v=3","gravatar_id":"","url":"https://api.github.com/users/karussell","html_url":"https://github.com/karussell","followers_url":"https://api.github.com/users/karussell/followers","following_url":"https://api.github.com/users/karussell/following{/other_user}","gists_url":"https://api.github.com/users/karussell/gists{/gist_id}","starred_url":"https://api.github.com/users/karussell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karussell/subscriptions","organizations_url":"https://api.github.com/users/karussell/orgs","repos_url":"https://api.github.com/users/karussell/repos","events_url":"https://api.github.com/users/karussell/events{/privacy}","received_events_url":"https://api.github.com/users/karussell/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/graphhopper/graphhopper/milestones/6","html_url":"https://github.com/graphhopper/graphhopper/milestones/0.5","labels_url":"https://api.github.com/repos/graphhopper/graphhopper/milestones/6/labels","id":735501,"number":6,"title":"0.5","description":"","creator":{"login":"karussell","id":129644,"avatar_url":"https://avatars.githubusercontent.com/u/129644?v=3","gravatar_id":"","url":"https://api.github.com/users/karussell","html_url":"https://github.com/karussell","followers_url":"https://api.github.com/users/karussell/followers","following_url":"https://api.github.com/users/karussell/following{/other_user}","gists_url":"https://api.github.com/users/karussell/gists{/gist_id}","starred_url":"https://api.github.com/users/karussell/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/karussell/subscriptions","organizations_url":"https://api.github.com/users/karussell/orgs","repos_url":"https://api.github.com/users/karussell/repos","events_url":"https://api.github.com/users/karussell/events{/privacy}","received_events_url":"https://api.github.com/users/karussell/received_events","type":"User","site_admin":false},"open_issues":10,"closed_issues":26,"state":"open","created_at":"2014-07-29T12:21:57Z","updated_at":"2015-07-03T15:55:04Z","due_on":null,"closed_at":null},"comments":13,"created_at":"2015-06-17T08:51:14Z","updated_at":"2015-07-03T18:21:09Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/graphhopper/graphhopper/pulls/447","html_url":"https://github.com/graphhopper/graphhopper/pull/447","diff_url":"https://github.com/graphhopper/graphhopper/pull/447.diff","patch_url":"https://github.com/graphhopper/graphhopper/pull/447.patch"},"body":"This pull request is a major rewrite of some core parts of GraphHopper (storage and access of CHGraph, old name LevelGraph). This fixes #111. E.g. GraphHopperStorage now contains graphs like base graph and a ch graph which will allow for the physical separation of edges and shortcuts. \r\n\r\nCurrently there are the following steps before we can merge this:\r\n- [x] merge master into this\r\n- [x] rename LevelGraph* to CHGraph*\r\n- [x] separate node_ch_refs for CHGraphImpl to avoid base graph going through shortcuts\r\n- [x] test with none CH algo on prepared graph should pass now\r\n- [x] make base graph see only its edges (no shortcuts). edge count for level graph and base graph should change (e.g. getAllEdges.count)\r\n- [x] all tests should pass now\r\n- [ ] fix all TODOs in the source code, and can we add edges count to locationindextree.calcChecksum? And can we avoid requiring the GraphHopperStorage and use a Graph instead in DijkstraBidirectionCHTest.createFactory\r\n- [ ] fix some bugs uncovered while refactoring, but do this in different issues\r\n- [x] separate shortcut DataAccess in CHGraphImpl\r\n\r\nLater we can also have multiple ch graphs but for that we should create a new issue besides #339\r\n\r\nSome bugs uncovered while refactoring:\r\n - [ ] setNodesHeader returns wrong used header size\r\n - [ ] internalEdgeDisconnect -> use N_EDGE_REF for nodes.setInt\r\n - [ ]  bug if next is called after setAdditionalField? if (extStorage.isRequireEdgeField()) iter.setAdditionalField(extStorage.getDefaultEdgeFieldValue());\r\n - [x] bug in test testFindShortcuts_Roundabout regarding skipped edges of shortcut 6,4\r\n - [ ] bug in alledgeiterator detach => reverse can be incorrectly set if detach(false) and reverse=true\r\n - [x] bug in alledgeiterator found: while iteration edgepointer can get bigger than valid edges and if it would be compacted then even array index out of bounds would get thrown\r\n - [ ] here it should be getNodes instead of getCapacity! removedNodes = new GHBitSetImpl((int) (nodes.getCapacity() / 4));\r\n - [ ] shouldn't we throw an exception in CHGraphImpl instead of returning? public final void setLevel( int nodeIndex, int level ) { if (nodeIndex >= baseGraph.getNodes()) return;\r\n\r\n(where marked they are fixed in the pull request but not master yet)\r\n\r\n"},"comment":{"url":"https://api.github.com/repos/graphhopper/graphhopper/issues/comments/118404842","html_url":"https://github.com/graphhopper/graphhopper/pull/447#issuecomment-118404842","issue_url":"https://api.github.com/repos/graphhopper/graphhopper/issues/447","id":118404842,"user":{"login":"devemux86","id":3484020,"avatar_url":"https://avatars.githubusercontent.com/u/3484020?v=3","gravatar_id":"","url":"https://api.github.com/users/devemux86","html_url":"https://github.com/devemux86","followers_url":"https://api.github.com/users/devemux86/followers","following_url":"https://api.github.com/users/devemux86/following{/other_user}","gists_url":"https://api.github.com/users/devemux86/gists{/gist_id}","starred_url":"https://api.github.com/users/devemux86/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/devemux86/subscriptions","organizations_url":"https://api.github.com/users/devemux86/orgs","repos_url":"https://api.github.com/users/devemux86/repos","events_url":"https://api.github.com/users/devemux86/events{/privacy}","received_events_url":"https://api.github.com/users/devemux86/received_events","type":"User","site_admin":false},"created_at":"2015-07-03T18:21:09Z","updated_at":"2015-07-03T18:21:09Z","body":":+1: \r\nWhat algorithm, bidirectional Dijkstra ?"}}