package de.rwth.idsg.bikeman.ixsi.processor.query.user; import com.google.common.base.Optional; import de.rwth.idsg.bikeman.ixsi.ErrorFactory; import de.rwth.idsg.bikeman.ixsi.processor.api.UserRequestProcessor; import de.rwth.idsg.bikeman.ixsi.service.IxsiUserService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import xjc.schema.ixsi.CreateUserRequestType; import xjc.schema.ixsi.CreateUserResponseType; import xjc.schema.ixsi.ErrorType; import xjc.schema.ixsi.Language; import xjc.schema.ixsi.UserInfoType; import xjc.schema.ixsi.UserType; import java.util.List; /** * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 06.05.2015 */ @Slf4j @Component public class CreateUserRequestProcessor implements UserRequestProcessor<CreateUserRequestType, CreateUserResponseType> { @Autowired private IxsiUserService ixsiUserService; @Override public Class<CreateUserRequestType> getProcessingClass() { return CreateUserRequestType.class; } @Override public CreateUserResponseType processAnonymously(CreateUserRequestType request, Optional<Language> lan) { if (!request.isSetUser()) { return buildError(ErrorFactory.Sys.invalidRequest("User list may not be empty.", null)); } try { List<UserType> acceptedUsers = ixsiUserService.createUsers(request.getUser()); return new CreateUserResponseType().withUser(acceptedUsers); } catch (Exception e) { return buildError(ErrorFactory.Sys.backendFailed(e.getMessage(), null)); } } @Override public CreateUserResponseType processForUser(CreateUserRequestType request, Optional<Language> lan, UserInfoType userInfo) { // TODO return buildError(ErrorFactory.Sys.notImplemented(null, null)); } @Override public CreateUserResponseType buildError(ErrorType e) { return new CreateUserResponseType().withError(e); } }