package com.captechconsulting.core.service; import com.captechconsulting.core.dao.LocationDao; import com.captechconsulting.core.dao.TicketDao; import com.captechconsulting.core.domain.Location; import com.captechconsulting.core.domain.LocationScan; import com.captechconsulting.core.domain.Ticket; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.orm.ObjectRetrievalFailureException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.Date; import java.util.Iterator; import java.util.List; @Service @Transactional public class TicketService { @Autowired private TicketDao ticketDao; @Autowired private LocationDao locationDao; public Ticket get(final long id) { Ticket ticket = ticketDao.findOne(id); if (ticket != null) { return ticket; } throw new ObjectRetrievalFailureException(Ticket.class, id); } public List<Ticket> list(int page, int size) { return ticketDao.findAll(new PageRequest(page, size)).getContent(); } public Ticket store(Ticket ticket) { return ticketDao.save(ticket); } public void delete(Ticket ticket) { ticketDao.delete(ticket); } public Location addLocationScan(Ticket ticket, Long locationId) { Location location = locationDao.findOne(locationId); if (location == null) { throw new ObjectRetrievalFailureException(Ticket.class, locationId); } LocationScan locationScan = new LocationScan(); locationScan.setLocation(location); locationScan.setTimestamp(new Date()); ticket.getLocationScans().add(locationScan); store(ticket); return location; } public void deleteLocationScan(Ticket ticket, Long locationId) { for (Iterator<LocationScan> locationIterator = ticket.getLocationScans().iterator() ; locationIterator.hasNext(); ) { LocationScan location = locationIterator.next(); if (locationId.equals(location.getId())) { locationIterator.remove(); return; } } throw new ObjectRetrievalFailureException(Location.class, locationId); } }