TomcatUserImporter.java :  » Project-Management » XPlanner-0.7b7 » com » technoetic » xplanner » security » Java Open Source

Java Open Source » Project Management » XPlanner 0.7b7 
XPlanner 0.7b7 » com » technoetic » xplanner » security » TomcatUserImporter.java
package com.technoetic.xplanner.security;

import com.technoetic.xplanner.db.hibernate.GlobalSessionFactory;
import com.technoetic.xplanner.db.hibernate.HibernateHelper;
import com.technoetic.xplanner.domain.Person;
import com.technoetic.xplanner.domain.Project;
import com.technoetic.xplanner.domain.Role;
import com.technoetic.xplanner.security.module.XPlannerLoginModule;
import com.technoetic.xplanner.security.module.LoginSupportImpl;

import net.sf.hibernate.Hibernate;
import net.sf.hibernate.Session;
import org.apache.commons.digester.Digester;
import org.apache.log4j.Logger;

import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class TomcatUserImporter {
    public static void main(String[] args) {
        Logger log = Logger.getLogger(TomcatUserImporter.class);

        String filename = null;
        if (args.length > 0) {
            filename = args[0];
        } else {
            log.error("usage: TomcatUserImporter filename");
            return;
        }

        Digester digester = new Digester();
        digester.setValidating(false);

        digester.addObjectCreate("tomcat-users", ArrayList.class);

        digester.addObjectCreate("tomcat-users/user", User.class);
        digester.addSetProperties("tomcat-users/user");
        digester.addSetNext("tomcat-users/user", "add");

        try {
            FileInputStream in = new FileInputStream(filename);
            List users = (List)digester.parse(in);

            HibernateHelper.initializeHibernate();
            Session session = GlobalSessionFactory.get().openSession();
            XPlannerLoginModule encryptor = new XPlannerLoginModule(new LoginSupportImpl());
            Iterator userItr = users.iterator();
            while (userItr.hasNext()) {
                User user = (User)userItr.next();
                try {
                    List projects = session.find("from project in class " + Project.class.getName());
                    List people = session.find("from person in class " +
                            Person.class.getName() + " where userid = ?",
                            user.getUsername(), Hibernate.STRING);
                    Person person = null;
                    Iterator peopleIterator = people.iterator();
                    if (peopleIterator.hasNext()) {
                        person = (Person)peopleIterator.next();
                        if (person.getPassword() == null) {
                            log.info("setting password: user=" + user.getUsername());
                            person.setPassword(encryptor.encodePassword(user.getPassword(), null));
                        }
                        String[] roles = user.getRoles().split(",");
                        for (int i = 0; i < roles.length; i++) {
                            Iterator projectItr = projects.iterator();
                            while (projectItr.hasNext()) {
                                Project project = (Project)projectItr.next();
                                if (!isUserInRole(person, project.getId(), roles[i])) {
                                    Role role = new Role(roles[i]);
                                    log.info("adding role: user=" + user.getUsername() + ", role=" + roles[i]);
                                    session.save(role);
                                }
                            }
                        }
                    } else {
                        log.warn("no xplanner user: " + user.getUsername());
                    }
                    session.flush();
                    session.connection().commit();
                } catch (Throwable e) {
                    session.connection().rollback();
                }
            }
            session.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static boolean isUserInRole(Person person, int projectId, String roleName) {
//        Iterator roleItr = person.getRoles().iterator();
//        while (roleItr.hasNext()) {
//            Role role = (Role)roleItr.next();
//            // do-before-release Check if Importer is still correct
//            if (role.fromNameKey().equals(roleName)) {
//                return true;
//            }
//        }
        return false;
    }

    public static class User {
        private String username;
        private String password;
        private String roles;

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }

        public String getRoles() {
            return roles;
        }

        public void setRoles(String roles) {
            this.roles = roles;
        }
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.