/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.plugin.vote.manager.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.util.Assert; import com.ewcms.plugin.vote.manager.dao.QuestionnaireDAO; import com.ewcms.plugin.vote.manager.dao.SubjectDAO; import com.ewcms.plugin.vote.model.Questionnaire; import com.ewcms.plugin.vote.model.Subject; /** * 问卷调查主题Service * * @author 吴智俊 */ @Service public class SubjectService implements SubjectServiceable { @Autowired private QuestionnaireDAO questionnaireDAO; @Autowired private SubjectDAO subjectDAO; @Override public Long addSubject(Long questionnaireId, Subject subject) { Assert.notNull(questionnaireId); Long maxSort = subjectDAO.findSubjectMaxSort(questionnaireId); Questionnaire questionnaire = questionnaireDAO.get(questionnaireId); Assert.notNull(questionnaire); List<Subject> subjects = questionnaire.getSubjects(); subject.setSort(maxSort + 1); subjectDAO.persist(subject); subjectDAO.flush(subject); subjects.add(subject); questionnaire.setSubjects(subjects); questionnaireDAO.merge(questionnaire); return subject.getId(); } @Override public void delSubject(Long questionnaireId, Long subjectId) { Subject subject = subjectDAO.get(subjectId); Assert.notNull(subject); Questionnaire questionnaire = questionnaireDAO.get(questionnaireId); Assert.notNull(questionnaire); List<Subject> subjects = questionnaire.getSubjects(); subjects.remove(subject); questionnaire.setSubjects(subjects); questionnaireDAO.merge(questionnaire); } @Override public Subject findSubject(Long subjectId) { return subjectDAO.get(subjectId); } @Override public Long updSubject(Long questionnaireId, Subject subject) { Subject subject_old = subjectDAO.get(subject.getId()); if (subject.getStatus() != Subject.Status.INPUT){ subject.setSubjectItems(subject_old.getSubjectItems()); } subjectDAO.merge(subject); return subject.getId(); } @Override public void downSubject(Long questionnaireId, Long subjectId) { Assert.notNull(questionnaireId); Subject subject = subjectDAO.get(subjectId); Assert.notNull(subject); Long sort = subject.getSort(); if (sort == null){ sort = subjectDAO.findSubjectMaxSort(questionnaireId); subject.setSort(sort + 1); subjectDAO.merge(subject); }else{ Subject subject_next = subjectDAO.findSubjectBySort(questionnaireId, sort + 1); if (subject_next != null){ subject_next.setSort(sort); subjectDAO.merge(subject_next); subject.setSort(sort + 1); subjectDAO.merge(subject); } } } @Override public void upSubject(Long questionnaireId, Long subjectId) { Assert.notNull(questionnaireId); Subject subject = subjectDAO.get(subjectId); Assert.notNull(subject); Long sort = subject.getSort(); if (sort == null){ sort = subjectDAO.findSubjectMaxSort(questionnaireId); subject.setSort(sort + 1); subjectDAO.merge(subject); }else{ Subject subject_prv = subjectDAO.findSubjectBySort(questionnaireId, sort - 1); if (subject_prv != null){ subject_prv.setSort(sort); subjectDAO.merge(subject_prv); subject.setSort(sort - 1); subjectDAO.merge(subject); } } } }