package org.openntf.conference.graph; 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.DVertexFrame; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.frames.InVertex; import com.tinkerpop.frames.OutVertex; import com.tinkerpop.frames.modules.typedgraph.TypeValue; @TypeValue("Invite") public interface Invite extends DVertexFrame { @TypeValue(Invites.LABEL) public static interface Invites extends DEdgeFrame { public static final String LABEL = "Invites"; public static enum Status { DRAFT, SENT, WITHDRAWN; } @InVertex public Attendee getInviter(); @OutVertex public Invite getInvite(); @TypedProperty("Status") public Status getStatus(); @TypedProperty("Status") public void setStatus(Status status); } @TypeValue(InvitedTo.LABEL) public static interface InvitedTo extends DEdgeFrame { public static final String LABEL = "InvitedTo"; public static enum Status { UNREAD, OPEN, TENTATIVE, COMMITTED, DECLINED; } @OutVertex public Attendee getInvitee(); @InVertex public Invite getInvite(); @TypedProperty("Status") public Status getStatus(); @TypedProperty("Status") public void setStatus(Status status); } @TypeValue(InvitationFor.LABEL) public static interface InvitationFor extends DEdgeFrame { public static final String LABEL = "InvitationFor"; @InVertex public Event getEvent(); @OutVertex public Invite getInvite(); } @TypedProperty("Message") public String getMessage(); @TypedProperty("Message") public void setMessage(String message); @AdjacencyUnique(label = Invites.LABEL, direction = Direction.IN) public Attendee getInvitingAttendee(); @AdjacencyUnique(label = Invites.LABEL, direction = Direction.IN) public Invites addInvites(Attendee inviter); @AdjacencyUnique(label = Invites.LABEL, direction = Direction.IN) public void removeInvites(Attendee inviter); @IncidenceUnique(label = Invites.LABEL, direction = Direction.IN) public Invites getInvites(); @IncidenceUnique(label = Invites.LABEL, direction = Direction.IN) public void removeInvites(Invites invites); @AdjacencyUnique(label = InvitedTo.LABEL) public Iterable<Attendee> getInvitedToAttendees(); @AdjacencyUnique(label = InvitedTo.LABEL) public Invites addInvitedTo(Attendee invitee); @AdjacencyUnique(label = InvitedTo.LABEL) public void removeInvitedTo(Attendee invitee); @IncidenceUnique(label = InvitedTo.LABEL) public Iterable<InvitedTo> getInvitedTos(); @IncidenceUnique(label = InvitedTo.LABEL) public void removeInvitedTo(InvitedTo invitedTo); @AdjacencyUnique(label = InvitationFor.LABEL, direction = Direction.IN) public Event getEvent(); @AdjacencyUnique(label = InvitationFor.LABEL, direction = Direction.IN) public InvitationFor addEvent(Event event); @AdjacencyUnique(label = InvitationFor.LABEL, direction = Direction.IN) public void removeEvent(Event event); @IncidenceUnique(label = InvitationFor.LABEL, direction = Direction.IN) public InvitationFor getInvitationFors(); @IncidenceUnique(label = InvitationFor.LABEL, direction = Direction.IN) public void removeInvitationFor(InvitationFor invitationFor); }