package de.rwth.idsg.bikeman.ixsi.processor.subscription.request; import de.rwth.idsg.bikeman.ixsi.store.AvailabilityStore; import de.rwth.idsg.bikeman.ixsi.processor.api.SubscriptionRequestProcessor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import xjc.schema.ixsi.AvailabilitySubscriptionRequestType; import xjc.schema.ixsi.AvailabilitySubscriptionResponseType; import xjc.schema.ixsi.BookingTargetIDType; import xjc.schema.ixsi.ErrorType; import java.util.List; /** * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 26.09.2014 */ @Component public class AvailabilitySubscriptionRequestProcessor implements SubscriptionRequestProcessor<AvailabilitySubscriptionRequestType, AvailabilitySubscriptionResponseType> { @Autowired private AvailabilityStore availabilityStore; @Override public Class<AvailabilitySubscriptionRequestType> getProcessingClass() { return AvailabilitySubscriptionRequestType.class; } @Override public AvailabilitySubscriptionResponseType process(AvailabilitySubscriptionRequestType request, String systemId) { List<BookingTargetIDType> itemIds = request.getBookingTargetID(); if (request.isSetUnsubscription() && request.isUnsubscription()) { availabilityStore.unsubscribe(systemId, itemIds); } else if (request.isSetEventHorizon()) { Integer interval = request.getEventHorizon().getMinutes(); availabilityStore.subscribe(systemId, itemIds, interval); } else { availabilityStore.subscribe(systemId, itemIds); } return new AvailabilitySubscriptionResponseType(); } // ------------------------------------------------------------------------- // Error handling // ------------------------------------------------------------------------- @Override public AvailabilitySubscriptionResponseType buildError(ErrorType e) { return new AvailabilitySubscriptionResponseType().withError(e); } }