package com.sequenceiq.cloudbreak.converter;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.api.model.FlexSubscriptionRequest;
import com.sequenceiq.cloudbreak.controller.BadRequestException;
import com.sequenceiq.cloudbreak.controller.NotFoundException;
import com.sequenceiq.cloudbreak.domain.FlexSubscription;
import com.sequenceiq.cloudbreak.domain.SmartSenseSubscription;
import com.sequenceiq.cloudbreak.service.smartsense.SmartSenseSubscriptionService;
@Component
public class JsonToFlexSubscriptionConverter extends AbstractConversionServiceAwareConverter<FlexSubscriptionRequest, FlexSubscription> {
@Inject
private SmartSenseSubscriptionService smartSenseSubscriptionService;
@Override
public FlexSubscription convert(FlexSubscriptionRequest source) {
FlexSubscription subscription = new FlexSubscription();
subscription.setName(source.getName());
subscription.setSubscriptionId(source.getSubscriptionId());
subscription.setDefault(source.isDefault());
subscription.setUsedForController(source.isUsedForController());
Long smartSenseSubscriptionId = source.getSmartSenseSubscriptionId();
try {
SmartSenseSubscription smartSenseSubscription = smartSenseSubscriptionService.findOneById(smartSenseSubscriptionId);
subscription.setSmartSenseSubscription(smartSenseSubscription);
} catch (NotFoundException nex) {
throw new BadRequestException("SmartSense subscription could not be found with id: " + smartSenseSubscriptionId);
}
return subscription;
}
}