package com.norteksoft.product.util;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.io.SAXReader;
import com.norteksoft.acs.service.security.SecurityResourceCache;
public class ReadAutoAuthUtil {
private static String AUTO_AUTH_FUNCTION_ID="IS_AUTHENTICATED_ANONYMOUSLY";
public static Collection<AuthFunction> getAutoAuths(String systemCode){
Collection<AuthFunction> autoAuths=new ArrayList<AuthFunction>();
if(StringUtils.isEmpty(systemCode)){
readAutoAuthFunction("autoAuthConfig.xml",autoAuths,"functions/function");
}else{
readAutoAuthFunction("publicAutoAuthConfig.xml",autoAuths,"functions/function");
readAutoAuthFunction("autoAuthConfig.xml",autoAuths,"functions/function");
}
return autoAuths;
}
@SuppressWarnings("unchecked")
private static Collection<AuthFunction> readAutoAuthFunction(String fileName,Collection<AuthFunction> autoAuths,String nodes){
try{
SAXReader reader = new SAXReader();
InputStreamReader isreader=new InputStreamReader(SecurityResourceCache.class.getClassLoader().getResourceAsStream(fileName),"UTF-8");
Document document=reader.read(isreader);
List<org.dom4j.Element> tableList = document.selectNodes(nodes);
Iterator it = tableList.iterator();
while(it.hasNext()){//只会循环一次
org.dom4j.Element function = (org.dom4j.Element)it.next();
//得到column的属性
List<Attribute> columnAttributes = function.attributes();
AuthFunction autoAuth=new AuthFunction();
for(int i=0;i<columnAttributes.size();i++){
String attributeName = columnAttributes.get(i).getName();
if("path".equals(attributeName)){
autoAuth.setFunctionPath(columnAttributes.get(i).getValue());
}
}
autoAuth.setFunctionId(AUTO_AUTH_FUNCTION_ID);
autoAuths.add(autoAuth);
}
}catch (Exception e) {
}
return autoAuths;
}
}