package de.rwth.idsg.bikeman.ixsi.processor.subscription.request; import de.rwth.idsg.bikeman.ixsi.IXSIConstants; import de.rwth.idsg.bikeman.ixsi.store.PlaceAvailabilityStore; 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.ErrorType; import xjc.schema.ixsi.PlaceAvailabilitySubscriptionStatusRequestType; import xjc.schema.ixsi.PlaceAvailabilitySubscriptionStatusResponseType; import xjc.schema.ixsi.ProviderPlaceIDType; import java.util.ArrayList; import java.util.List; /** * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 26.09.2014 */ @Component public class PlaceAvailabilitySubscriptionStatusRequestProcessor implements SubscriptionRequestProcessor<PlaceAvailabilitySubscriptionStatusRequestType, PlaceAvailabilitySubscriptionStatusResponseType> { @Autowired private PlaceAvailabilityStore placeAvailabilityStore; @Override public Class<PlaceAvailabilitySubscriptionStatusRequestType> getProcessingClass() { return PlaceAvailabilitySubscriptionStatusRequestType.class; } @Override public PlaceAvailabilitySubscriptionStatusResponseType process(PlaceAvailabilitySubscriptionStatusRequestType request, String systemId) { List<String> subscriptions = placeAvailabilityStore.getSubscriptions(systemId); List<ProviderPlaceIDType> ids = new ArrayList<>(); for (String s : subscriptions) { ids.add(new ProviderPlaceIDType() .withPlaceID(s) .withProviderID(IXSIConstants.Provider.id) ); } return new PlaceAvailabilitySubscriptionStatusResponseType().withPlaceID(ids); } // ------------------------------------------------------------------------- // Error handling // ------------------------------------------------------------------------- @Override public PlaceAvailabilitySubscriptionStatusResponseType buildError(ErrorType e) { return new PlaceAvailabilitySubscriptionStatusResponseType().withError(e); } }