package com.sequenceiq.cloudbreak.converter;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Component;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.sequenceiq.cloudbreak.api.model.NetworkRequest;
import com.sequenceiq.cloudbreak.common.type.ResourceStatus;
import com.sequenceiq.cloudbreak.controller.BadRequestException;
import com.sequenceiq.cloudbreak.domain.Network;
import com.sequenceiq.cloudbreak.domain.json.Json;
import com.sequenceiq.cloudbreak.service.topology.TopologyService;
@Component
public class JsonToNetworkConverter extends AbstractConversionServiceAwareConverter<NetworkRequest, Network> {
@Inject
private TopologyService topologyService;
@Override
public Network convert(NetworkRequest source) {
Network network = new Network();
network.setName(source.getName());
network.setDescription(source.getDescription());
network.setSubnetCIDR(source.getSubnetCIDR());
network.setStatus(ResourceStatus.USER_MANAGED);
network.setCloudPlatform(source.getCloudPlatform());
Map<String, Object> parameters = source.getParameters();
if (parameters != null && !parameters.isEmpty()) {
try {
network.setAttributes(new Json(parameters));
} catch (JsonProcessingException e) {
throw new BadRequestException("Invalid parameters");
}
}
if (source.getTopologyId() != null) {
network.setTopology(topologyService.getById(source.getTopologyId()));
}
return network;
}
}