portal web service

ResearchAreaService.java 4.0KB

    package com.ekexiu.portal.service; import java.sql.Connection; import java.sql.SQLException; import java.util.List; import org.jfw.apt.annotation.Autowrie; import org.jfw.apt.web.annotation.Path; import org.jfw.apt.web.annotation.operate.Delete; import org.jfw.apt.web.annotation.operate.Get; import org.jfw.apt.web.annotation.operate.Post; import org.jfw.apt.web.annotation.operate.Put; import org.jfw.apt.web.annotation.param.AfterCommit; import org.jfw.apt.web.annotation.param.JdbcConn; import org.jfw.apt.web.annotation.param.PathVar; import org.jfw.apt.web.annotation.param.RequestBody; import com.ekexiu.portal.dao.ResearchAreaDao; import com.ekexiu.portal.dao.ResearchAreaLogDao; import com.ekexiu.portal.notify.NotifyService; import com.ekexiu.portal.notify.NotifyType; import com.ekexiu.portal.po.ResearchArea; import com.ekexiu.portal.po.ResearchAreaLog; @Path("/researchArea") public class ResearchAreaService { @Autowrie private ResearchAreaDao researchAreaDao; @Autowrie private ResearchAreaLogDao researchAreaLogDao; @Autowrie private NotifyService notifyService; public NotifyService getNotifyService() { return notifyService; } public void setNotifyService(NotifyService notifyService) { this.notifyService = notifyService; } public ResearchAreaDao getResearchAreaDao() { return researchAreaDao; } public void setResearchAreaDao(ResearchAreaDao researchAreaDao) { this.researchAreaDao = researchAreaDao; } public ResearchAreaLogDao getResearchAreaLogDao() { return researchAreaLogDao; } public void setResearchAreaLogDao(ResearchAreaLogDao researchAreaLogDao) { this.researchAreaLogDao = researchAreaLogDao; } @Get @Path("/{professorId}") public List<ResearchArea> query(@JdbcConn Connection con,@PathVar String professorId) throws SQLException { return this.researchAreaDao.query(con, professorId); } @Post @Path("/agree") public void agree(@JdbcConn(true) Connection con, String targetId, String targetCaption, String opId,String uname,@AfterCommit List<Runnable> runs) throws SQLException { if (this.researchAreaDao.inc(con, targetId, targetCaption) > 0) { ResearchAreaLog log = new ResearchAreaLog(); log.setCaption(targetCaption); log.setOpreteProfessorId(opId); log.setProfessorId(targetId); this.researchAreaLogDao.insert(con, log); this.notifyService.notify(con, targetId, opId, uname, targetId, targetCaption,NotifyType.AGREE_RESEARCH_AREA, runs); } } @Post @Path("/unAgree") public void unAgree(@JdbcConn(true) Connection con, String targetId, String targetCaption, String opId) throws SQLException { if (this.researchAreaDao.dec(con, targetId, targetCaption) > 0) { this.researchAreaLogDao.delete(con, targetId, opId, targetCaption); } } @Delete @Path("/{professorId}") public void delete(@JdbcConn(true) Connection con,@PathVar String professorId) throws SQLException{ this.researchAreaDao.delete(con, professorId); this.researchAreaLogDao.delete(con, professorId); } @Put @Path public void saveResearchArea(@JdbcConn(true) Connection con, @RequestBody List<ResearchArea> areas) throws SQLException { String professorId = areas.get(0).getProfessorId(); List<ResearchArea> olds = this.researchAreaDao.query(con, professorId); int sortNum = 1; for (ResearchArea area : areas) { area.setSortNum(sortNum++); boolean found = false; for (ResearchArea old : olds) { if (area.getCaption().equals(old.getCaption())) { found = true; this.researchAreaDao.updateDescp(con, professorId, area.getCaption(), area.getDescp(), area.getSortNum()); break; } } if (!found) { area.setProfessorId(professorId); this.researchAreaDao.insert(con, area); } } for (ResearchArea old : olds) { boolean found = false; for (ResearchArea area : areas) { if (area.getCaption().equals(old.getCaption())) { found = true; break; } } if (!found) { this.researchAreaDao.delete(con, professorId, old.getCaption()); this.researchAreaLogDao.delete(con, professorId, old.getCaption()); } } } }