package com.john.springinaction.service; import static java.lang.Math.*; import static java.util.Collections.*; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.john.springinaction.domain.Spitter; import com.john.springinaction.domain.Spittle; import com.john.springinaction.persistence.SpitterDao; @Service("spitterService") @Transactional(propagation=Propagation.REQUIRED) public class SpitterServiceImpl implements SpitterService { @Resource(name = "spitterDao") private SpitterDao spitterDao; public void saveSpittle(Spittle spittle) { spittle.setWhen(new Date()); spitterDao.saveSpittle(spittle); } @Transactional(propagation=Propagation.SUPPORTS, readOnly=true) public List<Spittle> getRecentSpittles(int count) { List<Spittle> recentSpittles = spitterDao.getRecentSpittle(); reverse(recentSpittles); return recentSpittles.subList(0, min(49, recentSpittles.size())); } public void saveSpitter(Spitter spitter) { if(spitter.getId() == null) { spitterDao.addSpitter(spitter); } else { spitterDao.saveSpitter(spitter); } } @Transactional(propagation=Propagation.SUPPORTS, readOnly=true) public Spitter getSpitter(long id) { return spitterDao.getSpitterById(id); } public void startFollowing(Spitter follower, Spitter followee) { // TODO Auto-generated method stub } public List<Spittle> getSpittlesForSpitter(Spitter spitter) { return spitterDao.getSpittlesForSpitter(spitter); } public List<Spittle> getSpittlesForSpitter(String username) { Spitter spitter = spitterDao.getSpitterByUsername(username); return getSpittlesForSpitter(spitter); } public Spitter getSpitter(String username) { return spitterDao.getSpitterByUsername(username); } public void deleteSpittle(long id) { spitterDao.deleteSpittle(id); } public List<Spitter> getAllSpitters() { return spitterDao.findAllSpitters(); } public Spittle getSpittleById(long id) { return spitterDao.getSpittleById(id); } }