package de.rwth.idsg.bikeman.ixsi.processor.query.staticdata;
import de.rwth.idsg.bikeman.ixsi.IXSIConstants;
import de.rwth.idsg.bikeman.ixsi.dto.ChangedProvidersResponseDTO;
import de.rwth.idsg.bikeman.ixsi.processor.api.StaticRequestProcessor;
import de.rwth.idsg.bikeman.ixsi.repository.QueryIXSIRepository;
import org.springframework.stereotype.Component;
import xjc.schema.ixsi.ChangedProvidersRequestType;
import xjc.schema.ixsi.ChangedProvidersResponseType;
import xjc.schema.ixsi.ErrorType;
import javax.inject.Inject;
/**
* @author Sevket Goekay <goekay@dbis.rwth-aachen.de>
* @since 26.09.2014
*/
@Component
public class ChangedProvidersRequestProcessor implements
StaticRequestProcessor<ChangedProvidersRequestType, ChangedProvidersResponseType> {
@Inject private QueryIXSIRepository queryIXSIRepository;
@Override
public Class<ChangedProvidersRequestType> getProcessingClass() {
return ChangedProvidersRequestType.class;
}
@Override
public ChangedProvidersResponseType process(ChangedProvidersRequestType request) {
long timestamp = request.getTimestamp().getMillis();
ChangedProvidersResponseDTO responseDTO = queryIXSIRepository.changedProviders(timestamp);
if (responseDTO.isProvidersChanged()) {
return new ChangedProvidersResponseType().withProvider(IXSIConstants.Provider.id);
} else {
return new ChangedProvidersResponseType();
}
}
// -------------------------------------------------------------------------
// Error handling
// -------------------------------------------------------------------------
@Override
public ChangedProvidersResponseType buildError(ErrorType e) {
return new ChangedProvidersResponseType().withError(e);
}
}