package com.xihuani.system.service.impl; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.criteria.CriteriaQuery; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.xihuani.system.model.Role; import com.xihuani.system.model.System; import com.xihuani.system.service.SystemService; @Service public class SystemServiceImpl implements SystemService { @PersistenceContext private EntityManager em; @Override @Transactional public List<System> getSystemList() { CriteriaQuery<System> c = em.getCriteriaBuilder().createQuery(System.class); c.from(System.class); return em.createQuery(c).getResultList(); } @Override @Transactional public System findSystem(Integer systemId) { return em.find(System.class, systemId); } @Override @Transactional public void addSystem(System system) { em.persist(system); } @Override @Transactional public void save(System system) { em.merge(system); } @Override @Transactional public List<Role> getSystemRoles(Integer systemId) { System system = this.findSystem(systemId); return new ArrayList(system.getRoles()); } @Override @Transactional public void addRole(Integer systemId, Role role) { System system = this.findSystem(systemId); system.getRoles().add(role); this.save(system); } @Override @Transactional public void deleteRole(Integer systemId, Integer roleId) { System system = this.findSystem(systemId); Set<Role> roles = new HashSet<Role>(); for(Role role: system.getRoles()) { if(role.getId() != roleId) roles.add(role); } this.save(system); } }