package org.openstack.atlas.service.domain.services.impl;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.openstack.atlas.service.domain.entities.LoadBalancer;
import org.openstack.atlas.service.domain.entities.Ticket;
import org.openstack.atlas.service.domain.exceptions.BadRequestException;
import org.openstack.atlas.service.domain.exceptions.EntityNotFoundException;
import org.openstack.atlas.service.domain.services.TicketService;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
@Service
public class TicketServiceImpl extends BaseService implements TicketService {
private final Log LOG = LogFactory.getLog(TicketServiceImpl.class);
@Override
@Transactional
public Ticket createTicket(LoadBalancer queueLb) throws BadRequestException, EntityNotFoundException {
LOG.debug("Entering " + getClass());
LoadBalancer dbLoadBalancer;
Ticket ticket;
try {
dbLoadBalancer = loadBalancerRepository.getById(queueLb.getId());
} catch (EntityNotFoundException enfe) {
LOG.warn("EntityNotFoundException thrown. Sending error response to client...");
throw new EntityNotFoundException(
String.format("Loadbalancer with id #%d not found", queueLb.getId()));
}
if (!queueLb.getTickets().isEmpty()) {
Ticket ticketToAdd = queueLb.getTickets().iterator().next();
LOG.info(String.format("Adding ticket with ticketId '%s' for load balancer '%d'", ticketToAdd.getTicketId(), queueLb.getId()));
ticket = loadBalancerRepository.createTicket(dbLoadBalancer, ticketToAdd);
LOG.info(String.format("Successfully added ticket with ticketId '%s' for load balancer '%d' in the database", ticketToAdd.getTicketId(), queueLb.getId()));
} else {
LOG.error("No ticket specified. Sending error response to client...");
throw new BadRequestException("No ticket specified.");
}
LOG.info(String.format("Create ticket operation successfully completed for load balancer '%d'", queueLb.getId()));
return ticket;
}
@Override
public List<org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket> customTicketMapper(List<Ticket> tickets) {
List<org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket> ticketList = new ArrayList<org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket>();
org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket ticket_v1;
for (Ticket ticket : tickets) {
ticket_v1 = new org.openstack.atlas.docs.loadbalancers.api.management.v1.Ticket();
ticket_v1.setTicketId(ticket.getTicketId());
ticket_v1.setComment(ticket.getComment());
ticket_v1.setId(ticket.getId());
ticketList.add(ticket_v1);
}
return ticketList;
}
}