All Downloads are FREE. Search and download functionalities are using the official Maven repository.

systems.dmx.events.EventsPlugin Maven / Gradle / Ivy

package systems.dmx.events;

import static systems.dmx.contacts.Constants.*;
import static systems.dmx.core.Constants.*;
import static systems.dmx.events.Constants.*;
import systems.dmx.core.RelatedTopic;
import systems.dmx.core.Topic;
import systems.dmx.core.model.AssocModel;
import systems.dmx.core.model.PlayerModel;
import systems.dmx.core.osgi.PluginActivator;
import systems.dmx.core.service.Inject;
import systems.dmx.core.service.event.PreCreateAssoc;
import systems.dmx.core.util.DMXUtils;
import systems.dmx.timestamps.TimestampsService;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.Consumes;

import java.util.List;
import java.util.logging.Logger;



@Path("/events")
@Consumes("application/json")
@Produces("application/json")
public class EventsPlugin extends PluginActivator implements EventsService, PreCreateAssoc {

    // ---------------------------------------------------------------------------------------------- Instance Variables

    @Inject
    private TimestampsService timestampsService;

    private static final Logger logger = Logger.getLogger(EventsPlugin.class.getName());

    // -------------------------------------------------------------------------------------------------- Public Methods

    // EventsService

    @GET
    @Path("/person/{id}")
    @Override
    public List getEvents(@PathParam("id") long personId) {
        return dmx.getTopic(personId).getRelatedTopics(EVENT_INVOLVEMENT, DEFAULT, DEFAULT, EVENT);
    }

    @GET
    @Path("/{id}/persons")
    @Override
    public List getPersons(@PathParam("id") long eventId) {
        return dmx.getTopic(eventId).getRelatedTopics(EVENT_INVOLVEMENT, DEFAULT, DEFAULT, PERSON);
    }

    // Listeners

    @Override
    public void preCreateAssoc(AssocModel assoc) {
        // Event <-> Person
        DMXUtils.assocAutoTyping(assoc, EVENT, PERSON, EVENT_INVOLVEMENT, DEFAULT, DEFAULT);
        // Event <-> Organization
        DMXUtils.assocAutoTyping(assoc, EVENT, ORGANIZATION, EVENT_INVOLVEMENT, DEFAULT, DEFAULT);
        //
        // Event -> Address
        PlayerModel[] players = DMXUtils.assocAutoTyping(assoc, EVENT, ADDRESS, COMPOSITION, PARENT, CHILD);
        if (players != null) {
            long eventId = players[0].getId();
            Topic event = dmx.getTopic(eventId);
            event.getChildTopics().getTopic(ADDRESS).getRelatingAssoc().delete();
            timestampsService.setModified(event);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy