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}