/** * Licensed to Apereo under one or more contributor license agreements. See the NOTICE file * distributed with this work for additional information regarding copyright ownership. Apereo * licenses this file to you under the Apache License, Version 2.0 (the "License"); you may not use * this file except in compliance with the License. You may obtain a copy of the License at the * following location: * * <p>http://www.apache.org/licenses/LICENSE-2.0 * * <p>Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing permissions and * limitations under the License. */ package org.apereo.portal.events.tincan.converters; import java.net.URI; import org.apereo.portal.events.PortalEvent; import org.apereo.portal.events.tincan.ILrsActorService; import org.apereo.portal.events.tincan.IPortalEventToLrsStatementConverter; import org.apereo.portal.events.tincan.UrnBuilder; import org.apereo.portal.events.tincan.om.LrsActor; import org.apereo.portal.events.tincan.om.LrsObject; import org.apereo.portal.events.tincan.om.LrsStatement; import org.apereo.portal.events.tincan.om.LrsVerb; import org.springframework.beans.factory.annotation.Autowired; /** * Base class for PortalEvent to LrsStatement converters. * */ public abstract class AbstractPortalEventToLrsStatementConverter implements IPortalEventToLrsStatementConverter { private ILrsActorService actorService; private String defaultObjectType = "Activity"; private LrsVerb verb; protected abstract LrsObject getLrsObject(PortalEvent event); /** * Set the service that creates the LrsActor. * * @param actorService the actor service */ @Autowired public void setActorService(ILrsActorService actorService) { this.actorService = actorService; } /** * Set the verb to use for this conversion. * * @param verb the verb to use. */ public void setVerb(LrsVerb verb) { this.verb = verb; } /** * Get the default object type for the Lrs Object. * * @return the activity type */ public String getDefaultObjectType() { return defaultObjectType; } /** * Override the default object type. Defaults to "Activity". * * @return the default object type */ public void setDefaultObjectType(String defaultObjectType) { this.defaultObjectType = defaultObjectType; } /** * Check if the converter supports the specific event. Subclassess should override. * * @param event the event to check * @return false */ @Override public boolean supports(PortalEvent event) { return false; } /** * Convert an event to an LrsStatement. * * @param event the portal event. * @return the new LrsStatement */ @Override public LrsStatement toLrsStatement(PortalEvent event) { return new LrsStatement(getActor(event), getVerb(event), getLrsObject(event)); } /** * Get the actor for an event. * * @param event the portal event * @return the LrsActor */ protected LrsActor getActor(PortalEvent event) { String username = event.getUserName(); return actorService.getLrsActor(username); } /** * Get the verb for the converted LrsStatement. Can be overridden to support different verbs * based on the event. * * @param event the portal event. * @return the verb. */ protected LrsVerb getVerb(PortalEvent event) { return verb; } /** * Build the URN for the LrsStatement. This method attaches creates the base URN. Additional * elements can be attached. * * @param parts Additional URN elements. * @return The formatted URI */ protected URI buildUrn(String... parts) { UrnBuilder builder = new UrnBuilder("UTF-8", "tincan", "uportal", "activities"); builder.add(parts); return builder.getUri(); } }