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.dao.PumaServerTargetDao;
import com.dianping.puma.biz.dao.PumaTargetDao;
import com.dianping.puma.biz.entity.PumaServerEntity;
import com.dianping.puma.biz.entity.PumaServerTargetEntity;
import com.dianping.puma.biz.entity.PumaTargetEntity;
import com.dianping.puma.common.model.PumaTarget;
import com.dianping.puma.common.service.PumaTargetService;
import com.google.common.base.Function;
import com.google.common.collect.FluentIterable;
import java.util.ArrayList;
import java.util.List;
public class PumaTargetServiceImpl implements PumaTargetService {
private Converter converter;
private PumaTargetDao pumaTargetDao;
private PumaServerTargetDao pumaServerTargetDao;
private PumaServerDao pumaServerDao;
@Override
public List<PumaTarget> findByDatabase(String database) {
return FluentIterable
.from(pumaTargetDao.findByDatabase(database))
.transform(new Function<PumaTargetEntity, PumaTarget>() {
@Override
public PumaTarget apply(PumaTargetEntity entity) {
return converter.convert(entity, PumaTarget.class);
}
}).toList();
}
@Override
public List<PumaTarget> findByHost(String host) {
PumaServerEntity pumaServer = pumaServerDao.findByHost(host);
List<PumaServerTargetEntity> pumaServerTargets = pumaServerTargetDao.findByServerName(pumaServer.getName());
List<PumaTarget> result = new ArrayList<PumaTarget>();
for (PumaServerTargetEntity serverTarget : pumaServerTargets) {
String targetDb = serverTarget.getTargetDb();
List<PumaTarget> pumaTarget = findByDatabase(targetDb);
for (PumaTarget target : pumaTarget) {
target.setBeginTime(serverTarget.getBeginTime());
}
result.addAll(pumaTarget);
}
return result;
}
@Override
public List<PumaTarget> findAll() {
return FluentIterable
.from(pumaTargetDao.findAll())
.transform(new Function<PumaTargetEntity, PumaTarget>() {
@Override
public PumaTarget apply(PumaTargetEntity entity) {
return converter.convert(entity, PumaTarget.class);
}
}).toList();
}
@Override
public int create(PumaTarget pumaTarget) {
PumaTargetEntity entity = converter.convert(pumaTarget, PumaTargetEntity.class);
return pumaTargetDao.insert(entity);
}
@Override
public int remove(int id) {
return pumaTargetDao.delete(id);
}
public void setConverter(Converter converter) {
this.converter = converter;
}
public void setPumaTargetDao(PumaTargetDao pumaTargetDao) {
this.pumaTargetDao = pumaTargetDao;
}
public void setPumaServerTargetDao(PumaServerTargetDao pumaServerTargetDao) {
this.pumaServerTargetDao = pumaServerTargetDao;
}
public void setPumaServerDao(PumaServerDao pumaServerDao) {
this.pumaServerDao = pumaServerDao;
}
}