package org.openntf.conference.graph; import org.openntf.conference.graph.Attendee.Attending; import org.openntf.conference.graph.Attendee.PlansToAttend; import org.openntf.conference.graph.Conference.PartOf; import org.openntf.conference.graph.Invite.InvitationFor; import org.openntf.domino.graph2.annotations.AdjacencyUnique; import org.openntf.domino.graph2.annotations.IncidenceUnique; import org.openntf.domino.graph2.annotations.TypedProperty; import org.openntf.domino.graph2.builtin.DEdgeFrame; import org.openntf.domino.graph2.builtin.social.Commentable; import org.openntf.domino.graph2.builtin.social.Likeable; import org.openntf.domino.graph2.builtin.social.Rateable; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.frames.InVertex; import com.tinkerpop.frames.OutVertex; import com.tinkerpop.frames.modules.typedgraph.TypeValue; @TypeValue("Event") public abstract interface Event extends Commentable, Likeable, Rateable { @TypeValue(HappeningOn.LABEL) public static interface HappeningOn extends DEdgeFrame { public static final String LABEL = "HappeningOn"; @InVertex public TimeSlot getTimeslot(); @OutVertex public Event getEvent(); } @TypeValue(HappeningAt.LABEL) public static interface HappeningAt extends DEdgeFrame { public static final String LABEL = "HappeningAt"; @InVertex public Location getLocation(); @OutVertex public Event getEvent(); } public static enum Status { DRAFT, PROPOSED, CONFIRMED, CANCELLED; } @TypedProperty("Title") public String getTitle(); @TypedProperty("Title") public void setTitle(String title); @TypedProperty("Description") public String getDescription(); @TypedProperty("Description") public void setDescription(String description); @TypedProperty("Status") public Status getStatus(); @TypedProperty("Status") public void setStatus(Status status); @AdjacencyUnique(label = PlansToAttend.LABEL, direction = Direction.IN) public Iterable<Attendee> getPlansToAttendAttendees(); @AdjacencyUnique(label = PlansToAttend.LABEL, direction = Direction.IN) public PlansToAttend addPlansToAttend(Attendee attendee); @AdjacencyUnique(label = PlansToAttend.LABEL, direction = Direction.IN) public void removePlansToAttend(Attendee attendee); @IncidenceUnique(label = PlansToAttend.LABEL, direction = Direction.IN) public Iterable<PlansToAttend> getPlansToAttends(); @IncidenceUnique(label = PlansToAttend.LABEL, direction = Direction.IN) public void removePlansToAttend(PlansToAttend plansToAttend); @AdjacencyUnique(label = Attending.LABEL, direction = Direction.IN) public Iterable<Attendee> getAttendingAttendees(); @AdjacencyUnique(label = Attending.LABEL, direction = Direction.IN) public Attending addAttendingAttendee(Attendee attendee); @AdjacencyUnique(label = Attending.LABEL, direction = Direction.IN) public void removeAttendingAttendee(Attendee attendee); @IncidenceUnique(label = Attending.LABEL, direction = Direction.IN) public Iterable<Attending> getAttendings(); @IncidenceUnique(label = Attending.LABEL, direction = Direction.IN) public void removeAttending(Attending attending); @AdjacencyUnique(label = HappeningOn.LABEL) public Iterable<TimeSlot> getTimes(); @AdjacencyUnique(label = HappeningOn.LABEL) public HappeningOn addTime(TimeSlot time); @AdjacencyUnique(label = HappeningOn.LABEL) public void removeTime(TimeSlot time); @IncidenceUnique(label = HappeningOn.LABEL) public Iterable<HappeningOn> getHappeningOns(); @IncidenceUnique(label = HappeningOn.LABEL) public void removeHappeningOn(HappeningOn happeningOn); @AdjacencyUnique(label = HappeningAt.LABEL) public Iterable<Location> getLocations(); @AdjacencyUnique(label = HappeningAt.LABEL) public HappeningAt addLocation(Location location); @AdjacencyUnique(label = HappeningAt.LABEL) public void removeLocation(Location location); @IncidenceUnique(label = HappeningAt.LABEL) public Iterable<HappeningAt> getHappeningAts(); @IncidenceUnique(label = HappeningAt.LABEL) public void removeHappeningAt(HappeningAt happeningAt); @AdjacencyUnique(label = PartOf.LABEL) public Iterable<Conference> getConferences(); @AdjacencyUnique(label = PartOf.LABEL) public PartOf addConference(Conference conference); @AdjacencyUnique(label = PartOf.LABEL) public void removeConference(Conference conference); @IncidenceUnique(label = PartOf.LABEL) public Iterable<PartOf> getPartOfs(); @IncidenceUnique(label = PartOf.LABEL) public void removePartOf(PartOf partOf); @AdjacencyUnique(label = InvitationFor.LABEL) public Iterable<Invite> getInvites(); @AdjacencyUnique(label = InvitationFor.LABEL) public InvitationFor addInvite(Invite invite); @AdjacencyUnique(label = InvitationFor.LABEL) public void removeInvite(Invite invite); @IncidenceUnique(label = InvitationFor.LABEL) public InvitationFor getInvitationFors(); @IncidenceUnique(label = InvitationFor.LABEL) public void removeInvitationFor(InvitationFor invitationFor); }