package br.gov.frameworkdemoiselle.fuselage.business;
import java.util.List;
import br.gov.frameworkdemoiselle.enumeration.contrib.Logic;
import br.gov.frameworkdemoiselle.fuselage.domain.SecurityResource;
import br.gov.frameworkdemoiselle.fuselage.persistence.ResourceDAO;
import br.gov.frameworkdemoiselle.lifecycle.Startup;
import br.gov.frameworkdemoiselle.query.contrib.QueryConfig;
import br.gov.frameworkdemoiselle.stereotype.BusinessController;
import br.gov.frameworkdemoiselle.template.contrib.DelegateCrud;
import br.gov.frameworkdemoiselle.transaction.Transactional;
@BusinessController
public class ResourceBC extends DelegateCrud<SecurityResource, Long, ResourceDAO> {
private static final long serialVersionUID = 1L;
@Transactional
@Startup
public void startup() {
if (findAll().isEmpty()) {
insert(new SecurityResource("public_url", "/index.jsf", "Url inicial"));
insert(new SecurityResource("public_url", "/security/login.jsf", "Url de Login"));
insert(new SecurityResource("public_url_startswith", "/javax.faces.resource/", "Url de recursos JSF"));
}
}
public List<SecurityResource> findResourceByName(String resourceName) {
QueryConfig<SecurityResource> queryConfig = getQueryConfig();
queryConfig.getFilter().put("name", resourceName);
queryConfig.setFilterCaseInsensitive(false);
return findAll();
}
/**
* Get all resources except listed in @param securityResources
*/
public List<SecurityResource> findResourceExceptList(List<SecurityResource> securityResources) {
QueryConfig<SecurityResource> queryConfig = getQueryConfig();
queryConfig.setSorting("name");
if (securityResources != null && securityResources.size() > 0) {
Long[] ids = new Long[securityResources.size()];
for (int i = 0; i != securityResources.size(); i++)
ids[i] = securityResources.get(i).getId();
queryConfig.getFilter().put("id", ids);
queryConfig.setFilterLogic(Logic.NAND);
}
return findAll();
}
}