package org.openstack.atlas.service.domain.repository; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.openstack.atlas.service.domain.entities.AllowedDomain; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import java.util.List; import java.util.Set; import java.util.HashSet; @Repository @Transactional public class AllowedDomainsRepository { final Log LOG = LogFactory.getLog(AllowedDomainsRepository.class); @PersistenceContext(unitName = "loadbalancing") private EntityManager entityManager; public Set<String> getAllowedDomains() { Set<String> domains = new HashSet<String>(); Query q = entityManager.createQuery("SELECT ad FROM AllowedDomain ad"); List<AllowedDomain> res = q.getResultList(); for (AllowedDomain ad : res) { domains.add(ad.getName()); } return domains; } public boolean add(String name) { return dbSave(name); } public boolean remove(String name){ return dbDel(name); } public boolean hasDomain(String name) { List<AllowedDomain> res = entityManager.createQuery("SELECT ad.name from AllowedDomain ad where name=:name").setParameter("name", name).getResultList(); return (res.size() > 0) ? true : false; } private boolean dbDel(String name) { List<AllowedDomain> adl = entityManager.createQuery("SELECT ad from AllowedDomain ad where name=:name").setParameter("name", name).getResultList(); if (adl.size() <= 0) { return false; } entityManager.remove(adl.get(0)); return true; } private boolean dbSave(String name) { if (hasDomain(name)) { return false; } AllowedDomain ad = new AllowedDomain(); ad.setName(name); entityManager.persist(ad); return true; } }