Package org.xdams.security.load

Source Code of org.xdams.security.load.LoadUserSpeedUp

package org.xdams.security.load;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.xdams.user.bean.Account;
import org.xdams.user.bean.Archive;
import org.xdams.user.bean.UserBean;

/*
* NOT TESTED
*
* */
public class LoadUserSpeedUp {

  public static String[] extractUser(String username, String account, String xmlUsers) {
    Pattern patternUser = Pattern.compile("((?i)<user\\s*([^>]+)>(.+?)</user>)", Pattern.DOTALL);
    Matcher matcherUser = patternUser.matcher(xmlUsers);
    String[] myUserAndAttribute = new String[2];
    // cerco il mio utente dentro il file utenti
    while (matcherUser.find()) {
      String myUser = matcherUser.group(1);
      String myUserAttribute = matcherUser.group(2).replaceAll("\\s*=\\s*[^\\\"]", "=");
      if (myUser.contains(username) && myUser.contains(account)) {
        myUserAndAttribute[0] = myUser;
        myUserAndAttribute[1] = myUserAttribute;
        break;
      }
    }
    return myUserAndAttribute;
  }

  public static List<Archive> extractArchiveUserList(String username, String account, String myUser) {
    List<Archive> archives = new ArrayList<Archive>();
    try {
      Pattern patternArchive = Pattern.compile("((?i)<archive\\s*([^>]+)>(.+?)</archive>)", Pattern.DOTALL);
      Matcher matcherArchive = patternArchive.matcher(myUser);
      while (matcherArchive.find()) {
        Archive archive = new Archive();
        String archiveStr = matcherArchive.group(1);
        String archiveAttribute = matcherArchive.group(2).replaceAll("\\s*=\\s*[^\\\"]", "=");
        archive.setAlias(valueAttribute(archiveAttribute, "alias"));
        archive.setRole(valueAttribute(archiveAttribute, "role"));
        // System.out.println("archive: " + archive);
        archives.add(archive);
//        System.out.println("#################################################");
      }
    } catch (Exception e) {
      // TODO: handle exception
    }

    return archives;
  }

  public static Map<String, Archive> extractArchiveList(String account, String xmlArchives, Account accountBean) {
    Map<String, Archive> archivesMap = new LinkedHashMap<String, Archive>();
    try {
      // mi trovo gli account
      Pattern patternAccount = Pattern.compile("((?i)<account\\s*([^>]+)>(.+?)</account>)", Pattern.DOTALL);
      Matcher matcherAccount = patternAccount.matcher(xmlArchives);
      // mi trovo gli archiveGroup
      Pattern patternArchiveGroup = Pattern.compile("((?i)<archiveGroup\\s*([^>]+)>(.+?)</archiveGroup>)", Pattern.DOTALL);
      // mi trovo gli archive
      Pattern patternArchive = Pattern.compile("((?i)<archive ([^>]+)>(.+?)</archive>)", Pattern.DOTALL);
      while (matcherAccount.find()) {
        String accountStr = matcherAccount.group(1);
        String accountAttribute = matcherAccount.group(2).replaceAll("\\s*=\\s*[^\\\"]", "=");
        if (valueAttribute(accountAttribute, "id").equals(account)) {
          accountBean.setId(valueAttribute(accountAttribute, "id"));
          accountBean.setDescrAccount(valueAttribute(accountAttribute, "descrAccount"));
          accountBean.setFatherAccount(valueAttribute(accountAttribute, "fatherAccount"));
          // System.out.println("accountStr: " + accountStr);
//          System.out.println("accountAttribute: " + accountAttribute);
          Matcher matcherArchiveGroup = patternArchiveGroup.matcher(accountStr);
          while (matcherArchiveGroup.find()) {
            String archiveGroupStr = matcherArchiveGroup.group(1);
            String archiveGroupAttributeStr = matcherArchiveGroup.group(2).replaceAll("\\s*=\\s*[^\\\"]", "=");
            String groupName = valueAttribute(archiveGroupAttributeStr, "name");
           
            // System.out.println("matcherArchiveGroup.group(1): " + matcherArchiveGroup.group(1));
//            System.out.println("archiveGroupStr: " + archiveGroupStr);
            Matcher matcherArchive = patternArchive.matcher(archiveGroupStr);
            while (matcherArchive.find()) {
              Archive archive = new Archive();
             
              String archiveStr = matcherArchive.group(1);
              String archiveAttributeStr = matcherArchive.group(2).replaceAll("\\s*=\\s*[^\\\"]", "=");
              String archiveTextStr = matcherArchive.group(3);
//              System.out.println("archiveTextStr: " + archiveTextStr);
              archive.setGroupName(groupName);
              archive.setAlias(valueAttribute(archiveAttributeStr, "alias"));
              archive.setHost(valueAttribute(archiveAttributeStr, "host"));
              archive.setIco(valueAttribute(archiveAttributeStr, "ico"));
              archive.setArchiveDescr(archiveTextStr);
              archive.setPne(valueAttribute(archiveAttributeStr, "pne"));
              archive.setPort(valueAttribute(archiveAttributeStr, "port"));
              archive.setWebapp(valueAttribute(archiveAttributeStr, "webapp"));
              archive.setType(valueAttribute(archiveAttributeStr, "type"));
              archivesMap.put(archive.getAlias(), archive);
//              System.out.println("archive: " + archive);
             
            }
//            System.out.println("#################################################");
          }
        }
      }
    } catch (Exception e) {
      // TODO: handle exception
    }
    return archivesMap;
  }

  public static String valueAttribute(String valuesAttributes, String attributeName) {
    String returnValue = "";
    try {
      Pattern patternAttrValue = Pattern.compile(attributeName + "=\"(.+?)\"");
      Matcher matcherAttrValue = patternAttrValue.matcher(valuesAttributes);
      while (matcherAttrValue.find()) {
        returnValue = matcherAttrValue.group(1);
      }
    } catch (Exception e) {
      // TODO: handle exception
    }

    // System.out.println("attributeName: " + attributeName + " returnValue: " + returnValue + "!!!!!!!!!!!!!!!!!");
    return returnValue;
  }

  public static UserBean loadUserByString(String xmlUsers, String xmlArchives, String xmlrole, String username, String account) {

    UserBean userBean = new UserBean();
    try {

      xmlUsers = xmlUsers.replaceAll("(?s)<!--.*?-->", "");
      xmlArchives = xmlArchives.replaceAll("(?s)<!--.*?-->", "");

      String myUser = extractUser(username, account, xmlUsers)[0];
      String myUserAttribute = extractUser(username, account, xmlUsers)[1];
      Account accountBean = new Account();
      Map<String, Archive> archiveAllMap = extractArchiveList(account, xmlArchives, accountBean);
      List<Archive> archiveUserList = extractArchiveUserList(username, account, myUser);
//      System.out.println(myUser);
//System.out.println(myUserAttribute);
      userBean.setName(valueAttribute(myUserAttribute, "name"));
      userBean.setLastName(valueAttribute(myUserAttribute, "lastName"));
      userBean.setId(valueAttribute(myUserAttribute, "id"));
      userBean.setEmail(valueAttribute(myUserAttribute, "email"));
      userBean.setLanguage(valueAttribute(myUserAttribute, "language"));
      userBean.setAccountRef(valueAttribute(myUserAttribute, "account"));
      userBean.setFatherAccountRef(valueAttribute(myUserAttribute, "fatherAccount"));
      userBean.setPwd(valueAttribute(myUserAttribute, "pwd"));
      userBean.setRole(valueAttribute(myUserAttribute, "role"));

      for (Archive archive : archiveUserList) {
        String archAlias = archive.getAlias();
        if (archiveAllMap.containsKey(archAlias)) {
          Archive archiveNew = archiveAllMap.get(archAlias);
          archiveNew.setRole(archive.getRole());
          userBean.putArchives(archAlias, archiveNew);
          userBean.addArchives(archiveNew);
        }
      }
      userBean.setAccount(accountBean);
      if (userBean.getAccount().equals("") || userBean.getId().equals("")) {
        return null;
      }

//      System.out.println(userBean);
      return userBean;

    } catch (Exception e) {
      e.printStackTrace();
    }
    return userBean;
  }
}
TOP

Related Classes of org.xdams.security.load.LoadUserSpeedUp

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.