package com.sequenceiq.cloudbreak.converter;
import java.util.List;
import java.util.Set;
import org.springframework.core.convert.TypeDescriptor;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.api.model.SecurityGroupResponse;
import com.sequenceiq.cloudbreak.api.model.SecurityRuleResponse;
import com.sequenceiq.cloudbreak.domain.SecurityGroup;
import com.sequenceiq.cloudbreak.domain.SecurityRule;
@Component
public class SecurityGroupToJsonConverter extends AbstractConversionServiceAwareConverter<SecurityGroup, SecurityGroupResponse> {
@Override
public SecurityGroupResponse convert(SecurityGroup source) {
SecurityGroupResponse json = new SecurityGroupResponse();
json.setId(source.getId());
json.setName(source.getName());
json.setDescription(source.getDescription());
json.setAccount(source.getAccount());
json.setOwner(source.getOwner());
json.setPublicInAccount(source.isPublicInAccount());
json.setSecurityRules(convertSecurityRules(source.getSecurityRules()));
json.setSecurityGroupId(source.getSecurityGroupId());
json.setCloudPlatform(source.getCloudPlatform());
return json;
}
private List<SecurityRuleResponse> convertSecurityRules(Set<SecurityRule> securityRules) {
return (List<SecurityRuleResponse>) getConversionService().convert(securityRules, TypeDescriptor.forObject(securityRules),
TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(SecurityRuleResponse.class)));
}
}