// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.testutils; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitiveType; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.data.osm.Way; /** * Convenience class allowing to manage primitives in the dataset. Useful especially for tests */ public class DatasetFactory { private final DataSet ds; /** * Constructs a new {@code DatasetFactory} with a new dataset. */ public DatasetFactory() { this(new DataSet()); } /** * Constructs a new {@code DatasetFactory} with a given dataset. * @param ds existing dataset to wrap */ public DatasetFactory(DataSet ds) { this.ds = ds; } /** * Replies node with given id. * @param id node id * @return node with given id */ public Node getNode(long id) { return (Node) ds.getPrimitiveById(id, OsmPrimitiveType.NODE); } /** * Replies way with given id. * @param id way id * @return way with given id */ public Way getWay(long id) { return (Way) ds.getPrimitiveById(id, OsmPrimitiveType.WAY); } /** * Replies relation with given id. * @param id relation id * @return relation with given id */ public Relation getRelation(long id) { return (Relation) ds.getPrimitiveById(id, OsmPrimitiveType.RELATION); } /** * Adds node with given id. * @param id node id * @return created node */ public Node addNode(long id) { return addNode(id, 0); } /** * Adds way with given id. * @param id way id * @return created way */ public Way addWay(long id) { return addWay(id, 0); } /** * Adds relation with given id. * @param id relation id * @return created relation */ public Relation addRelation(long id) { return addRelation(id, 0); } /** * Adds node with given id and version. * @param id node id * @param version node version * @return created node */ public Node addNode(long id, int version) { Node n = new Node(id, version); ds.addPrimitive(n); return n; } /** * Adds way with given id and version. * @param id way id * @param version way version * @return created way */ public Way addWay(long id, int version) { Way w = new Way(id, version); ds.addPrimitive(w); return w; } /** * Adds relation with given id and version. * @param id relation id * @param version relation version * @return created relation */ public Relation addRelation(long id, int version) { Relation e = new Relation(id, version); ds.addPrimitive(e); return e; } }