/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package com.smartitengineering.user.security; import java.io.InputStream; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import java.util.List; import org.springframework.security.ConfigAttribute; import org.springframework.security.acls.Permission; import org.springframework.security.acls.domain.BasePermission; /** * * @author modhu7 */ public class VotingConfigProviderImpl implements VotingConfigProvider { private List<VotingConfig> listVotingConfig = new ArrayList<VotingConfig>(); public VotingConfigProviderImpl(String xmlFileName) { try { InputStream votersStream = getClass().getClassLoader().getResourceAsStream(xmlFileName); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(votersStream); doc.getDocumentElement().normalize(); NodeList nodeLst = doc.getElementsByTagName("voter"); for (int s = 0; s < nodeLst.getLength(); s++) { Node voterNode = nodeLst.item(s); VotingConfig votingConfig = new VotingConfig(); if (voterNode.getNodeType() == Node.ELEMENT_NODE) { Element voterElement = (Element) voterNode; NodeList permissionElementList = voterElement.getElementsByTagName("permission"); Element permissionElement = (Element) permissionElementList.item(0); NodeList permissions = permissionElement.getChildNodes(); String permission = ((Node) permissions.item(0)).getNodeValue(); votingConfig.setRequirePermission(new Permission[]{BasePermission.buildFromMask(Integer.parseInt(permission))}); NodeList roleList = voterElement.getElementsByTagName("role"); Element roleElement = (Element) roleList.item(0); NodeList roles = roleElement.getChildNodes(); String role = ((Node) roles.item(0)).getNodeValue(); ConfigAttribute attribute = new ConfigAttributeImpl(role); votingConfig.setProcessConfigAttribute(attribute); listVotingConfig.add(votingConfig); } } } catch (Exception e) { e.printStackTrace(); } } @Override public List<VotingConfig> getVotingConfigList() { if (listVotingConfig == null) { return new ArrayList<VotingConfig>(); } return listVotingConfig; } }