implement DeleteFromWay
parent
63794491f6
commit
d89a9f2832
|
@ -285,17 +285,26 @@ func newWaysRefIndex(dir string) (*WaysRefIndex, error) {
|
|||
return &WaysRefIndex{*cache}, nil
|
||||
}
|
||||
|
||||
// func (index *CoordsRefIndex) AddFromWay(way *element.Way) {
|
||||
// for _, node := range way.Nodes {
|
||||
// index.addc <- idRef{id: node.Id, ref: way.Id}
|
||||
// }
|
||||
// }
|
||||
func (index *CoordsRefIndex) AddFromWay(way *element.Way) {
|
||||
if index.linearImport {
|
||||
for _, node := range way.Nodes {
|
||||
index.addc <- idRef{id: node.Id, ref: way.Id}
|
||||
}
|
||||
} else {
|
||||
for _, node := range way.Nodes {
|
||||
index.add(node.Id, way.Id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// func (index *CoordsRefIndex) DeleteFromWay(way *element.Way) {
|
||||
// for _, node := range way.Nodes {
|
||||
// index.addc <- idRef{id: node.Id, ref: way.Id, delete: true}
|
||||
// }
|
||||
// }
|
||||
func (index *CoordsRefIndex) DeleteFromWay(way *element.Way) {
|
||||
if index.linearImport {
|
||||
panic("programming error: delete not supported in linearImport mode")
|
||||
}
|
||||
for _, node := range way.Nodes {
|
||||
index.DeleteRef(node.Id, way.Id)
|
||||
}
|
||||
}
|
||||
|
||||
func (index *WaysRefIndex) AddFromMembers(relId int64, members []element.Member) {
|
||||
for _, member := range members {
|
||||
|
@ -350,18 +359,6 @@ func (index *bunchRefCache) dispatch() {
|
|||
index.waitAdd.Done()
|
||||
}
|
||||
|
||||
func (index *bunchRefCache) AddFromWay(way *element.Way) {
|
||||
if index.linearImport {
|
||||
for _, node := range way.Nodes {
|
||||
index.addc <- idRef{id: node.Id, ref: way.Id}
|
||||
}
|
||||
} else {
|
||||
for _, node := range way.Nodes {
|
||||
index.add(node.Id, way.Id)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (index *bunchRefCache) getBunchId(id int64) int64 {
|
||||
return id / 64
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package cache
|
||||
|
||||
import (
|
||||
"goposm/element"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -46,51 +47,45 @@ func TestInsertRefs(t *testing.T) {
|
|||
|
||||
}
|
||||
|
||||
// func TestDiffCache(t *testing.T) {
|
||||
func TestDiffCache(t *testing.T) {
|
||||
|
||||
// cache_dir, _ := ioutil.TempDir("", "goposm_test")
|
||||
// defer os.RemoveAll(cache_dir)
|
||||
cache_dir, _ := ioutil.TempDir("", "goposm_test")
|
||||
defer os.RemoveAll(cache_dir)
|
||||
|
||||
// cache, err := newRefIndex(cache_dir, &globalCacheOptions.CoordsIndex)
|
||||
// if err != nil {
|
||||
// t.Fatal()
|
||||
// }
|
||||
cache, err := newCoordsRefIndex(cache_dir)
|
||||
if err != nil {
|
||||
t.Fatal()
|
||||
}
|
||||
defer cache.Close()
|
||||
|
||||
// w1 := element.Way{}
|
||||
// w1.Id = 100
|
||||
// w1.Nodes = []element.Node{
|
||||
// {OSMElem: element.OSMElem{Id: 1000}},
|
||||
// {OSMElem: element.OSMElem{Id: 1001}},
|
||||
// {OSMElem: element.OSMElem{Id: 1002}},
|
||||
// }
|
||||
// cache.AddFromWay(&w1)
|
||||
w1 := element.Way{}
|
||||
w1.Id = 100
|
||||
w1.Nodes = []element.Node{
|
||||
{OSMElem: element.OSMElem{Id: 1000}},
|
||||
{OSMElem: element.OSMElem{Id: 1001}},
|
||||
{OSMElem: element.OSMElem{Id: 1002}},
|
||||
}
|
||||
cache.AddFromWay(&w1)
|
||||
|
||||
// w2 := element.Way{}
|
||||
// w2.Id = 200
|
||||
// w2.Nodes = []element.Node{
|
||||
// {OSMElem: element.OSMElem{Id: 1002}},
|
||||
// {OSMElem: element.OSMElem{Id: 1003}},
|
||||
// {OSMElem: element.OSMElem{Id: 1004}},
|
||||
// }
|
||||
// cache.AddFromWay(&w2)
|
||||
w2 := element.Way{}
|
||||
w2.Id = 200
|
||||
w2.Nodes = []element.Node{
|
||||
{OSMElem: element.OSMElem{Id: 1002}},
|
||||
{OSMElem: element.OSMElem{Id: 1003}},
|
||||
{OSMElem: element.OSMElem{Id: 1004}},
|
||||
}
|
||||
cache.AddFromWay(&w2)
|
||||
|
||||
// cache.DeleteFromWay(&w1)
|
||||
cache.DeleteFromWay(&w1)
|
||||
|
||||
// cache.Close()
|
||||
// cache, err = newRefIndex(cache_dir, &globalCacheOptions.CoordsIndex)
|
||||
// if err != nil {
|
||||
// t.Fatal()
|
||||
// }
|
||||
// defer cache.Close()
|
||||
if ids := cache.Get(1000); len(ids) != 0 {
|
||||
t.Fatal(ids)
|
||||
}
|
||||
if ids := cache.Get(1002); len(ids) != 1 {
|
||||
t.Fatal(ids)
|
||||
}
|
||||
|
||||
// if ids := cache.Get(1000); len(ids) != 0 {
|
||||
// t.Fatal(ids)
|
||||
// }
|
||||
// if ids := cache.Get(1002); len(ids) != 1 {
|
||||
// t.Fatal(ids)
|
||||
// }
|
||||
|
||||
// }
|
||||
}
|
||||
|
||||
func TestWriteDiff(t *testing.T) {
|
||||
cache_dir, _ := ioutil.TempDir("", "goposm_test")
|
||||
|
|
Loading…
Reference in New Issue