/** * 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.SubjectDAO; import com.ewcms.plugin.vote.manager.dao.SubjectItemDAO; import com.ewcms.plugin.vote.model.Subject; import com.ewcms.plugin.vote.model.SubjectItem; /** * 问卷调查主题明细Service * * @author 吴智俊 */ @Service public class SubjectItemService implements SubjectItemServiceable { @Autowired private SubjectDAO subjectDAO; @Autowired private SubjectItemDAO subjectItemDAO; @Override public Long addSubjectItem(Long subjectId, SubjectItem subjectItem) { Assert.notNull(subjectId); Long maxSort = subjectItemDAO.findSubjectItemMaxSort(subjectId); Subject subject = subjectDAO.get(subjectId); Assert.notNull(subject); List<SubjectItem> subjectItems = subject.getSubjectItems(); subjectItem.setSort(maxSort + 1); subjectItemDAO.persist(subjectItem); subjectItemDAO.flush(subjectItem); subjectItems.add(subjectItem); subject.setSubjectItems(subjectItems); subjectDAO.merge(subject); return subjectItem.getId(); } @Override public void delSubjectItem(Long subjectId, Long subjectItemId) { SubjectItem subjectItem = subjectItemDAO.get(subjectItemId); Assert.notNull(subjectItem); Subject subject = subjectDAO.get(subjectId); Assert.notNull(subject); List<SubjectItem> subjectItems = subject.getSubjectItems(); subjectItems.remove(subjectItem); subject.setSubjectItems(subjectItems); subjectDAO.merge(subject); } @Override public SubjectItem findSubjectItem(Long subjectItemId) { return subjectItemDAO.get(subjectItemId); } @Override public Long updSubjectItem(SubjectItem subjectItem) { if (subjectItem.getVoteNumber() == null) subjectItem.setVoteNumber(0L); subjectItemDAO.merge(subjectItem); return subjectItem.getId(); } @Override public SubjectItem findSubjectItemBySubjectAndInputStatus(Long subjectId) { return subjectItemDAO.findSubjectItemBySubjectAndInputStatus(subjectId); } @Override public void downSubjectItem(Long subjectId, Long subjectItemId) { Assert.notNull(subjectId); SubjectItem subjectItem = subjectItemDAO.get(subjectItemId); Assert.notNull(subjectItem); Long sort = subjectItem.getSort(); if (sort == null){ sort = subjectItemDAO.findSubjectItemMaxSort(subjectItemId); subjectItem.setSort(sort + 1); subjectItemDAO.merge(subjectItem); }else{ SubjectItem subjectItem_next = subjectItemDAO.findSubjectItemBySort(subjectId, sort + 1); if (subjectItem_next != null){ subjectItem_next.setSort(sort); subjectItemDAO.merge(subjectItem_next); subjectItem.setSort(sort + 1); subjectItemDAO.merge(subjectItem); } } } @Override public void upSubjectItem(Long subjectId, Long subjectItemId) { Assert.notNull(subjectId); SubjectItem subjectItem = subjectItemDAO.get(subjectItemId); Assert.notNull(subjectItem); Long sort = subjectItem.getSort(); if (sort == null){ sort = subjectItemDAO.findSubjectItemMaxSort(subjectId); subjectItem.setSort(sort + 1); subjectItemDAO.merge(subjectItem); }else{ SubjectItem subjectItem_prv = subjectItemDAO.findSubjectItemBySort(subjectId, sort - 1); if (subjectItem_prv != null){ subjectItem_prv.setSort(sort); subjectItemDAO.merge(subjectItem_prv); subjectItem.setSort(sort - 1); subjectItemDAO.merge(subjectItem); } } } }