001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.data.osm;
003
004import java.util.Date;
005
006import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
007
008/**
009 * IPrimitive captures the common functions of {@link OsmPrimitive} and {@link PrimitiveData}.
010 */
011public interface IPrimitive extends Tagged, PrimitiveId {
012
013    boolean isModified();
014    void setModified(boolean modified);
015    boolean isVisible();
016    void setVisible(boolean visible);
017    boolean isDeleted();
018    void setDeleted(boolean deleted);
019    boolean isIncomplete();
020    boolean isNewOrUndeleted();
021    long getId();
022    PrimitiveId getPrimitiveId();
023    int getVersion();
024    void setOsmId(long id, int version);
025    User getUser();
026    void setUser(User user);
027    Date getTimestamp();
028    void setTimestamp(Date timestamp);
029    boolean isTimestampEmpty();
030    int getChangesetId();
031    void setChangesetId(int changesetId);
032
033    void accept(PrimitiveVisitor visitor);
034    String getName();
035    String getLocalName();
036
037}