package com.dianping.puma.biz.service; import com.dianping.puma.common.convert.Converter; import com.dianping.puma.biz.dao.PumaServerDao; import com.dianping.puma.biz.entity.PumaServerEntity; import com.dianping.puma.biz.util.IPUtils; import com.dianping.puma.common.model.PumaServer; import com.dianping.puma.common.service.PumaServerService; import com.google.common.base.Function; import com.google.common.collect.FluentIterable; import java.util.ArrayList; import java.util.Date; import java.util.List; public class PumaServerServiceImpl implements PumaServerService { private Converter converter; private PumaServerDao pumaServerDao; @Override public PumaServer find(String name) { PumaServerEntity entity = pumaServerDao.findByName(name); return converter.convert(entity, PumaServer.class); } @Override public PumaServer findById(int id) { PumaServerEntity entity = pumaServerDao.findById(id); return converter.convert(entity, PumaServer.class); } @Override public PumaServer findByHost(String host) { PumaServerEntity entity = pumaServerDao.findByHost(host); return converter.convert(entity, PumaServer.class); } @Override public List<PumaServer> findOnCurrentServer() { List<PumaServer> result = new ArrayList<PumaServer>(); for (String host : IPUtils.getNoLoopbackIP4Addresses()) { PumaServer pumaServer = findByHost(host); if (pumaServer != null) { result.add(pumaServer); } } return result; } @Override public List<PumaServer> findAll() { return FluentIterable .from(pumaServerDao.findAll()) .transform(new Function<PumaServerEntity, PumaServer>() { @Override public PumaServer apply(PumaServerEntity entity) { return converter.convert(entity, PumaServer.class); } }).toList(); } @Override public List<PumaServer> findAllAlive() { return FluentIterable .from(pumaServerDao.findAllAlive()) .transform(new Function<PumaServerEntity, PumaServer>() { @Override public PumaServer apply(PumaServerEntity entity) { return converter.convert(entity, PumaServer.class); } }).toList(); } @Override public List<PumaServer> findByPage(int page, int pageSize) { return FluentIterable .from(pumaServerDao.findByPage((page - 1) * pageSize, pageSize)) .transform(new Function<PumaServerEntity, PumaServer>() { @Override public PumaServer apply(PumaServerEntity entity) { return converter.convert(entity, PumaServer.class); } }).toList(); } @Override public long count() { return pumaServerDao.count(); } @Override public void registerByHost(String host) { PumaServer pumaServer = findByHost(host); if (pumaServer == null) { pumaServer = new PumaServer(); pumaServer.setName(host); pumaServer.setHost(host); pumaServer.setPort(4040); create(pumaServer); } else { pumaServer.setUpdateTime(new Date()); update(pumaServer); } } @Override public void create(PumaServer pumaServer) { PumaServerEntity entity = converter.convert(pumaServer, PumaServerEntity.class); pumaServerDao.insert(entity); } @Override public void update(PumaServer pumaServer) { PumaServerEntity entity = converter.convert(pumaServer, PumaServerEntity.class); pumaServerDao.update(entity); } @Override public void remove(String name) { pumaServerDao.deleteByName(name); } @Override public void remove(int id) { pumaServerDao.delete(id); } public void setConverter(Converter converter) { this.converter = converter; } public void setPumaServerDao(PumaServerDao pumaServerDao) { this.pumaServerDao = pumaServerDao; } }