001package de.deepamehta.contacts;
002
003import de.deepamehta.core.RelatedTopic;
004import de.deepamehta.core.model.AssociationModel;
005import de.deepamehta.core.osgi.PluginActivator;
006import de.deepamehta.core.service.event.PreCreateAssociationListener;
007import de.deepamehta.core.util.DeepaMehtaUtils;
008
009import javax.ws.rs.GET;
010import javax.ws.rs.Path;
011import javax.ws.rs.PathParam;
012import javax.ws.rs.Produces;
013
014import java.util.List;
015
016
017
018@Path("/contact")
019@Produces("application/json")
020public class ContactsPlugin extends PluginActivator implements ContactsService, PreCreateAssociationListener {
021
022    // -------------------------------------------------------------------------------------------------- Public Methods
023
024
025
026    // **************************************
027    // *** ContactsService Implementation ***
028    // **************************************
029
030
031
032    @GET
033    @Path("/{id}/institutions")
034    @Override
035    public List<RelatedTopic> getInstitutions(@PathParam("id") long personId) {
036        return dm4.getTopic(personId).getRelatedTopics("dm4.contacts.organization_association", "dm4.core.default",
037            "dm4.core.default", "dm4.contacts.institution");
038    }
039
040    @GET
041    @Path("/{id}/persons")
042    @Override
043    public List<RelatedTopic> getPersons(@PathParam("id") long instId) {
044        return dm4.getTopic(instId).getRelatedTopics("dm4.contacts.organization_association", "dm4.core.default",
045            "dm4.core.default", "dm4.contacts.person");
046    }
047
048
049
050    // ********************************
051    // *** Listener Implementations ***
052    // ********************************
053
054
055
056    @Override
057    public void preCreateAssociation(AssociationModel assoc) {
058        // Person <-> Institution
059        DeepaMehtaUtils.associationAutoTyping(assoc, "dm4.contacts.person", "dm4.contacts.institution",
060            "dm4.contacts.organization_association", "dm4.core.default", "dm4.core.default", dm4);
061    }
062}