Package org.focusns.service.core.impl

Source Code of org.focusns.service.core.impl.ProjectHistoryServiceImpl

package org.focusns.service.core.impl;

/*
* #%L
* FocusSNS Runtime
* %%
* Copyright (C) 2011 - 2013 FocusSNS
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation, either version 2.1 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Lesser Public License for more details.
*
* You should have received a copy of the GNU General Lesser Public
* License along with this program.  If not, see
* <http://www.gnu.org/licenses/lgpl-2.1.html>.
* #L%
*/

import java.util.Date;
import java.util.List;

import org.focusns.dao.core.ProjectDao;
import org.focusns.dao.core.ProjectHistoryDao;
import org.focusns.dao.core.ProjectUserDao;
import org.focusns.model.common.Page;
import org.focusns.model.core.Project;
import org.focusns.model.core.ProjectHistory;
import org.focusns.model.core.ProjectUser;
import org.focusns.service.core.ProjectHistoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
@Transactional
public class ProjectHistoryServiceImpl implements ProjectHistoryService {

    @Autowired
    private ProjectDao projectDao;
    @Autowired
    private ProjectUserDao projectUserDao;
    @Autowired
    private ProjectHistoryDao projectHistoryDao;

    public void createProjectHistory(ProjectHistory histroy) {
        //
        Date now = new Date();
        histroy.setCreatedAt(now);
        //
        projectHistoryDao.insert(histroy);
        //
        fillProjectHistory(histroy);
    }

    public void modifyProjectHistory(ProjectHistory history) {
        projectHistoryDao.update(history);
        fillProjectHistory(history);
    }

    public void removeProjectHistory(ProjectHistory history) {
        projectHistoryDao.delete(history.getId());
    }

    public Page<ProjectHistory> fetchPage(Page<ProjectHistory> page, long projectId) {
        page = projectHistoryDao.fetchByProjectId(page, projectId);
        // TODO performance tuning
        for (ProjectHistory history : page.getResults()) {
            Project project = projectDao.select(history.getProjectId());
            ProjectUser projectUser = projectUserDao.selectWithProject(history.getCreatedById());
            history.setProject(project);
            history.setCreatedBy(projectUser);
            //
            List<ProjectHistory> children = projectHistoryDao.selectByParentId(history.getId());
            for (ProjectHistory child : children) {
                //
                Project childProject = projectDao.select(child.getProjectId());
                ProjectUser childProjectUser = projectUserDao.selectWithProject(child.getCreatedById());
                child.setProject(childProject);
                child.setCreatedBy(childProjectUser);
            }
            history.setChildren(children);
        }
        //
        return page;
    }

    private ProjectHistory fillProjectHistory(ProjectHistory projectHistory) {
        if (projectHistory == null) {
            return projectHistory;
        }
        if (projectHistory.getProject() == null && projectHistory.getProjectId() > 0) {
            Project project = projectDao.select(projectHistory.getProjectId());
            projectHistory.setProject(project);
        }
        if (projectHistory.getCreatedBy() == null && projectHistory.getCreatedById() > 0) {
            ProjectUser createBy = projectUserDao.select(projectHistory.getCreatedById());
            projectHistory.setCreatedBy(createBy);
        }
        return projectHistory;
    }

}
TOP

Related Classes of org.focusns.service.core.impl.ProjectHistoryServiceImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.