Search in sources :

Example 6 with Element

use of de.westnordost.osmapi.map.data.Element in project StreetComplete by westnordost.

the class QuestController method retrieve.

/**
 * Retrieve the given quest from local database asynchronously, including the element / note.
 */
public void retrieve(final QuestGroup group, final long questId) {
    workerHandler.post(() -> {
        if (group == QuestGroup.OSM) {
            // race condition: another thread may have removed the element already (#288)
            OsmQuest osmQuest = osmQuestDB.get(questId);
            if (osmQuest == null)
                return;
            Element element = osmElementDB.get(osmQuest.getElementType(), osmQuest.getElementId());
            if (element == null)
                return;
            relay.onQuestSelected(osmQuest, group, element);
        } else if (group == QuestGroup.OSM_NOTE) {
            OsmNoteQuest osmNoteQuest = osmNoteQuestDB.get(questId);
            if (osmNoteQuest == null)
                return;
            relay.onQuestSelected(osmNoteQuest, group, null);
        }
    });
}
Also used : Element(de.westnordost.osmapi.map.data.Element) OsmQuest(de.westnordost.streetcomplete.data.osm.OsmQuest) OsmNoteQuest(de.westnordost.streetcomplete.data.osmnotes.OsmNoteQuest)

Example 7 with Element

use of de.westnordost.osmapi.map.data.Element in project StreetComplete by westnordost.

the class MergedElementDao method putAll.

public void putAll(Collection<Element> elements) {
    Collection<Node> nodes = new ArrayList<>();
    Collection<Way> ways = new ArrayList<>();
    Collection<Relation> relations = new ArrayList<>();
    for (Element element : elements) {
        switch(element.getType()) {
            case NODE:
                nodes.add((Node) element);
                break;
            case WAY:
                ways.add((Way) element);
                break;
            case RELATION:
                relations.add((Relation) element);
                break;
        }
    }
    if (!nodes.isEmpty())
        nodeDao.putAll(nodes);
    if (!ways.isEmpty())
        wayDao.putAll(ways);
    if (!relations.isEmpty())
        relationDao.putAll(relations);
}
Also used : Relation(de.westnordost.osmapi.map.data.Relation) Node(de.westnordost.osmapi.map.data.Node) Element(de.westnordost.osmapi.map.data.Element) ArrayList(java.util.ArrayList) Way(de.westnordost.osmapi.map.data.Way)

Example 8 with Element

use of de.westnordost.osmapi.map.data.Element in project StreetComplete by westnordost.

the class OverpassMapDataParserTest method testNode.

public void testNode() {
    LatLon pos = new OsmLatLon(51.7463194, 0.2428181);
    String xml = " <node id='5' version='1' lat='" + pos.getLatitude() + "' lon='" + pos.getLongitude() + "'/>";
    Element e = parseOne(xml, null);
    assertTrue(e instanceof Node);
    Node node = (Node) e;
    assertEquals(pos, node.getPosition());
    assertEquals(5, node.getId());
    assertEquals(1, node.getVersion());
    assertNull(node.getTags());
}
Also used : LatLon(de.westnordost.osmapi.map.data.LatLon) OsmLatLon(de.westnordost.osmapi.map.data.OsmLatLon) Element(de.westnordost.osmapi.map.data.Element) Node(de.westnordost.osmapi.map.data.Node) OsmLatLon(de.westnordost.osmapi.map.data.OsmLatLon)

Example 9 with Element

use of de.westnordost.osmapi.map.data.Element in project StreetComplete by westnordost.

the class OverpassMapDataParserTest method testRelation.

public void testRelation() {
    OsmLatLon[] p = new OsmLatLon[5];
    p[0] = new OsmLatLon(1, 2);
    p[1] = new OsmLatLon(3, 4);
    p[2] = new OsmLatLon(5, 6);
    p[3] = new OsmLatLon(7, 8);
    p[4] = new OsmLatLon(9, 10);
    String xml = "<relation id='10' version='1'>\n" + " <member type='relation' ref='4' role=''/>\n" + " <member type='way' ref='1' role='outer'>\n" + "  <nd lat='" + p[0].getLatitude() + "' lon='" + p[0].getLongitude() + "'/>\n" + "  <nd lat='" + p[1].getLatitude() + "' lon='" + p[1].getLongitude() + "'/>\n" + " </member>\n" + " <member type='way' ref='2' role='inner'>\n" + "  <nd lat='" + p[2].getLatitude() + "' lon='" + p[2].getLongitude() + "'/>\n" + "  <nd lat='" + p[3].getLatitude() + "' lon='" + p[3].getLongitude() + "'/>\n" + " </member>\n" + " <member type='node' ref='3' role='point'>\n" + "  <nd lat='" + p[4].getLatitude() + "' lon='" + p[4].getLongitude() + "'/>\n" + " </member>\n" + "</relation>";
    LongSparseArray<List<LatLon>> expectedGeometry = new LongSparseArray<>();
    expectedGeometry.put(1, new ArrayList<>(Arrays.asList(p[0], p[1])));
    expectedGeometry.put(2, new ArrayList<>(Arrays.asList(p[2], p[3])));
    Element e = parseOne(xml, expectedGeometry);
    assertTrue(e instanceof Relation);
    Relation relation = (Relation) e;
    assertEquals(10, relation.getId());
    assertEquals(1, relation.getVersion());
    assertEquals(4, relation.getMembers().size());
    RelationMember[] rm = new RelationMember[relation.getMembers().size()];
    relation.getMembers().toArray(rm);
    assertEquals(4, rm[0].getRef());
    assertEquals(Element.Type.RELATION, rm[0].getType());
    assertEquals("", rm[0].getRole());
    assertEquals(1, rm[1].getRef());
    assertEquals(Element.Type.WAY, rm[1].getType());
    assertEquals("outer", rm[1].getRole());
    assertEquals(2, rm[2].getRef());
    assertEquals(Element.Type.WAY, rm[2].getType());
    assertEquals("inner", rm[2].getRole());
    assertEquals(3, rm[3].getRef());
    assertEquals(Element.Type.NODE, rm[3].getType());
    assertEquals("point", rm[3].getRole());
    assertNull(relation.getTags());
}
Also used : LongSparseArray(android.util.LongSparseArray) Relation(de.westnordost.osmapi.map.data.Relation) RelationMember(de.westnordost.osmapi.map.data.RelationMember) Element(de.westnordost.osmapi.map.data.Element) ArrayList(java.util.ArrayList) List(java.util.List) OsmLatLon(de.westnordost.osmapi.map.data.OsmLatLon)

Example 10 with Element

use of de.westnordost.osmapi.map.data.Element in project StreetComplete by westnordost.

the class AOsmElementDaoTest method createElement.

private Element createElement(long id, int version) {
    Element element = mock(Element.class);
    when(element.getId()).thenReturn(id);
    when(element.getVersion()).thenReturn(version);
    return element;
}
Also used : Element(de.westnordost.osmapi.map.data.Element)

Aggregations

Element (de.westnordost.osmapi.map.data.Element)22 OsmQuest (de.westnordost.streetcomplete.data.osm.OsmQuest)9 Point (android.graphics.Point)4 MergedElementDao (de.westnordost.streetcomplete.data.osm.persist.MergedElementDao)4 OsmQuestDao (de.westnordost.streetcomplete.data.osm.persist.OsmQuestDao)4 ArrayList (java.util.ArrayList)4 MapDataDao (de.westnordost.osmapi.map.MapDataDao)3 Node (de.westnordost.osmapi.map.data.Node)3 OsmLatLon (de.westnordost.osmapi.map.data.OsmLatLon)3 Relation (de.westnordost.osmapi.map.data.Relation)3 Way (de.westnordost.osmapi.map.data.Way)3 DownloadedTilesDao (de.westnordost.streetcomplete.data.tiles.DownloadedTilesDao)3 SharedPreferences (android.content.SharedPreferences)2 LongSparseArray (android.util.LongSparseArray)2 OpenChangesetsDao (de.westnordost.streetcomplete.data.changesets.OpenChangesetsDao)2 StringMapChanges (de.westnordost.streetcomplete.data.osm.changes.StringMapChanges)2 HashMap (java.util.HashMap)2 List (java.util.List)2 View (android.view.View)1 ImageView (android.widget.ImageView)1