package com.sequenceiq.cloudbreak.controller; import java.util.List; import javax.inject.Inject; import org.springframework.stereotype.Controller; import com.sequenceiq.cloudbreak.api.endpoint.FlexSubscriptionEndpoint; import com.sequenceiq.cloudbreak.api.model.FlexSubscriptionRequest; import com.sequenceiq.cloudbreak.api.model.FlexSubscriptionResponse; import com.sequenceiq.cloudbreak.converter.FlexSubscriptionToJsonConverter; import com.sequenceiq.cloudbreak.converter.JsonToFlexSubscriptionConverter; import com.sequenceiq.cloudbreak.domain.CbUser; import com.sequenceiq.cloudbreak.domain.FlexSubscription; import com.sequenceiq.cloudbreak.service.flex.FlexSubscriptionService; @Controller public class FlexSubscriptionController implements FlexSubscriptionEndpoint { @Inject private FlexSubscriptionService flexService; @Inject private AuthenticatedUserService authenticatedUserService; @Inject private JsonToFlexSubscriptionConverter toFlexSubscriptionConverter; @Inject private FlexSubscriptionToJsonConverter toJsonConverter; @Override public FlexSubscriptionResponse get(Long id) { FlexSubscription flexSubscription = flexService.findOneById(id); return toJsonConverter.convert(flexSubscription); } @Override public void delete(Long id) { CbUser cbUser = authenticatedUserService.getCbUser(); flexService.delete(id, cbUser); } @Override public FlexSubscriptionResponse postPublic(FlexSubscriptionRequest flexSubscription) { return createFlexSubscription(flexSubscription, true); } @Override public List<FlexSubscriptionResponse> getPublics() { CbUser cbUser = authenticatedUserService.getCbUser(); List<FlexSubscription> subscriptions = flexService.findPublicInAccountForUser(cbUser); return toJsonConverter.convert(subscriptions); } @Override public FlexSubscriptionResponse getPublic(String name) { CbUser cbUser = authenticatedUserService.getCbUser(); FlexSubscription subscription = flexService.findByNameInAccount(name, cbUser.getUserId(), cbUser.getAccount()); return toJsonConverter.convert(subscription); } @Override public void deletePublic(String name) { CbUser cbUser = authenticatedUserService.getCbUser(); FlexSubscription subscription = flexService.findByNameInAccount(name, cbUser.getUserId(), cbUser.getAccount()); flexService.delete(subscription, cbUser); } @Override public void setDefaultInAccount(String name) { CbUser cbUser = authenticatedUserService.getCbUser(); flexService.setDefaultFlexSubscription(name, cbUser); } @Override public void setUsedForControllerInAccount(String name) { CbUser cbUser = authenticatedUserService.getCbUser(); flexService.setUsedForControllerFlexSubscription(name, cbUser); } @Override public FlexSubscriptionResponse postPrivate(FlexSubscriptionRequest flexSubscription) { return createFlexSubscription(flexSubscription, false); } @Override public List<FlexSubscriptionResponse> getPrivates() { CbUser cbUser = authenticatedUserService.getCbUser(); List<FlexSubscription> subscriptions = flexService.findByOwner(cbUser.getUserId()); return toJsonConverter.convert(subscriptions); } @Override public FlexSubscriptionResponse getPrivate(String name) { FlexSubscription subscription = flexService.findOneByName(name); return toJsonConverter.convert(subscription); } @Override public void deletePrivate(String name) { CbUser cbUser = authenticatedUserService.getCbUser(); FlexSubscription subscription = flexService.findOneByName(name); flexService.delete(subscription, cbUser); } private FlexSubscriptionResponse createFlexSubscription(FlexSubscriptionRequest json, boolean publicInAccount) { CbUser cbUser = authenticatedUserService.getCbUser(); FlexSubscription subscription = toFlexSubscriptionConverter.convert(json); subscription.setAccount(cbUser.getAccount()); subscription.setOwner(cbUser.getUserId()); subscription.setPublicInAccount(publicInAccount); subscription = flexService.create(subscription); return toJsonConverter.convert(subscription); } }