/*******************************************************************************
* Copyright (c) 2012 Dmitry Tikhomirov.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* Dmitry Tikhomirov - initial API and implementation
******************************************************************************/
package org.opensheet.server.dao.impl;
import java.util.List;
import org.hibernate.SessionFactory;
import org.opensheet.server.dao.AssignmentDAO;
import org.opensheet.server.dao.BranchDAO;
import org.opensheet.server.dao.DepartmentDAO;
import org.opensheet.server.dao.UserDAO;
import org.opensheet.shared.model.Assignment;
import org.opensheet.shared.model.Branch;
import org.opensheet.shared.model.Department;
import org.opensheet.shared.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;
@Repository
public class BranchDAOImpl implements BranchDAO {
@Autowired private SessionFactory sessionFactory;
@Autowired private UserDAO userDAO;
@Autowired private AssignmentDAO assignmentDAO;
@Autowired private DepartmentDAO departmentDAO;
@Override
@Transactional
public Branch getBranchById(Integer id) {
Branch branch = (Branch) sessionFactory.getCurrentSession().get(Branch.class, id);
return branch;
}
@Override
@Transactional
public List<Branch> getBranchList(Boolean status) {
@SuppressWarnings("unchecked")
List<Branch> list = (List<Branch>) sessionFactory.getCurrentSession().createQuery("FROM Branch b WHERE b.status= ? ").setBoolean(0, status).list();
return list;
}
/* Move users to default if status 1=>0
*
* (non-Javadoc)
* @see org.opensheet.server.dao.BranchDAO#setBranch(org.opensheet.shared.model.Branch)
*/
@Override
@Transactional
public void setBranch(Branch branch) {
Branch b = this.getBranchById(branch.getId());
b.setName(branch.getName());
b.setOwner(branch.getOwner());
b.setIndex(branch.getIndex());
if(branch.getId() != 1){
b.setStatus(branch.getStatus());
if(b.getStatus()== false){
Branch defaultBranch = getBranchById(1);
List<User> users = userDAO.getUsersByBranch("any", b.getId());
for(User u: users){
u.setBranch(defaultBranch);
}
List<Department> departments = departmentDAO.listDepartmentByBranch("any", b.getId());
for(Department d: departments){
d.setBranch(defaultBranch);
}
List<Assignment> assignments = assignmentDAO.getAssignmentByBranch(b);
for(Assignment a: assignments){
System.out.println(a.getName() + " " + a.getId() + " " + a.getBranch().getId() );
if(a.getName() != null)
a.setBranch(defaultBranch);
}
//sessionFactory.getCurrentSession().flush();
}
}
}
@Override
@Transactional
public void addBranch(Branch branch) {
sessionFactory.getCurrentSession().save(branch);
}
}