001    // License: GPL. For details, see LICENSE file.
002    package org.openstreetmap.josm.data.osm;
003    
004    import java.util.Date;
005    
006    import org.openstreetmap.josm.data.osm.visitor.PrimitiveVisitor;
007    
008    /**
009     * IPrimitive captures the common functions of OsmPrimitive and PrimitiveData.
010     */
011    public 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 visit(PrimitiveVisitor visitor);
034        String getName();
035        String getLocalName();
036    
037    }