package org.xdams.security.load; import org.xdams.security.AuthenticationType; import org.xdams.security.UserDetails; import org.xdams.user.bean.UserBean; import org.xdams.utility.resource.ConfManager; import org.xdams.xml.builder.XMLBuilder; import org.xdams.xmlengine.connection.manager.ConnectionManager; import org.xdams.xw.XWConnection; public class LoadUserManager { public static UserBean executeLoad(UserDetails userDetails, AuthenticationType authenticationType) throws Exception { if (authenticationType.getLoadUserType() == null || authenticationType.getLoadUserType().equals("xDams-basic")) { if (authenticationType.isLoadUserSpeedUp()) { String xmlUsers = ConfManager.getConfString(userDetails.getAccount() + "-security/users.xml"); String xmlArchives = ConfManager.getConfString(userDetails.getAccount() + "-security/accounts.xml"); String xmlrole = ConfManager.getConfString(userDetails.getAccount() + "-security/role.xml"); return LoadUserSpeedUp.loadUserByString(xmlUsers, xmlArchives, xmlrole, userDetails.getId(), userDetails.getAccount()); } else { XMLBuilder xmlUsers = ConfManager.getConfXML(userDetails.getAccount() + "-security/users.xml"); XMLBuilder xmlArchives = ConfManager.getConfXML(userDetails.getAccount() + "-security/accounts.xml"); XMLBuilder xmlrole = ConfManager.getConfXML(userDetails.getAccount() + "-security/role.xml"); return LoadUser.loadUser(xmlUsers, xmlArchives, xmlrole, userDetails.getId(), userDetails.getAccount()); } } else if ((authenticationType.getLoadUserType().equals("xDams-xway"))) { XWConnection xwconn = null; ConnectionManager connectionManager = new ConnectionManager(); try { xwconn = connectionManager.getConnection(authenticationType.getArchiveXWAY()); String queryUser = "([XML,/user/@id]=\"" + userDetails.getId() + "\") AND ([XML,/user/@account]=\"" + userDetails.getAccount() + "\") OR ([XML,/account/@id]=\"" + userDetails.getAccount() + "\")"; String[] recordsXML = xwconn.select(queryUser); String xmlUsers = ""; String xmlArchives = ""; for (int i = 0; i < recordsXML.length; i++) { if (recordsXML[i].indexOf("<user") != -1) { xmlUsers = recordsXML[i]; } else if (recordsXML[i].indexOf("<account") != -1) { xmlArchives = recordsXML[i]; } } String xmlrole = ConfManager.getConfString(userDetails.getAccount() + "-security/role.xml"); return LoadUserSpeedUp.loadUserByString(xmlUsers, xmlArchives, xmlrole, userDetails.getId(), userDetails.getAccount()); } catch (Exception e) { e.printStackTrace(); return null; } finally { connectionManager.closeConnection(xwconn); } } else { return null; } } }