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
015    void setModified(boolean modified);
016
017    boolean isVisible();
018
019    void setVisible(boolean visible);
020
021    boolean isDeleted();
022
023    void setDeleted(boolean deleted);
024
025    boolean isIncomplete();
026
027    boolean isNewOrUndeleted();
028
029    long getId();
030
031    PrimitiveId getPrimitiveId();
032
033    int getVersion();
034
035    void setOsmId(long id, int version);
036
037    User getUser();
038
039    void setUser(User user);
040
041    Date getTimestamp();
042
043    int getRawTimestamp();
044
045    void setTimestamp(Date timestamp);
046
047    void setRawTimestamp(int timestamp);
048
049    boolean isTimestampEmpty();
050
051    int getChangesetId();
052
053    void setChangesetId(int changesetId);
054
055    void accept(PrimitiveVisitor visitor);
056
057    String getName();
058
059    String getLocalName();
060}