test.eryansky.HibernateTest.java Source code

Java tutorial

Introduction

Here is the source code for test.eryansky.HibernateTest.java

Source

/**
 *  Copyright (c) 2012-2014 http://www.eryansky.com
 *
 *  Licensed under the Apache License, Version 2.0 (the "License"); 
 */
package test.eryansky;

import com.eryansky.common.model.TreeNode;
import com.eryansky.common.orm.Page;
import com.eryansky.common.orm.entity.StatusState;
import com.eryansky.common.utils.mapper.JsonMapper;
import com.google.common.collect.Lists;
import com.eryansky.modules.sys.entity.Organ;
import com.eryansky.modules.sys.entity.Role;
import com.eryansky.modules.sys.entity.User;
import com.eryansky.modules.sys.service.OrganManager;
import com.eryansky.modules.sys.service.ResourceManager;
import com.eryansky.modules.sys.service.RoleManager;
import com.eryansky.modules.sys.service.UserManager;
import org.apache.commons.collections.ListUtils;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate4.SessionFactoryUtils;
import org.springframework.orm.hibernate4.SessionHolder;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.transaction.support.TransactionSynchronizationManager;

import javax.annotation.Resource;
import java.util.Calendar;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

/**
 * @author : &Eryan eryanwcp@gmail.com
 * @date : 2014-07-07 20:30
 */
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:applicationContext.xml", "classpath:applicationContext-mybatis.xml",
        "classpath:applicationContext-task.xml", "classpath:applicationContext-ehcache.xml" })
public class HibernateTest {

    private static Logger logger = LoggerFactory.getLogger(HibernateTest.class);

    @Autowired
    private OrganManager organManager;
    @Autowired
    private ResourceManager resourceManager;
    @Autowired
    private UserManager userManager;
    @Autowired
    private RoleManager roleManager;

    @Resource(name = "defaultSessionFactory")
    private SessionFactory sessionFactory;

    @After
    public void close() {
        SessionHolder holder = (SessionHolder) TransactionSynchronizationManager.getResource(sessionFactory);
        SessionFactoryUtils.closeSession(holder.getSession());
        TransactionSynchronizationManager.unbindResource(sessionFactory);
    }

    @Before
    public void init() {
        Session s = sessionFactory.openSession();
        TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(s));
    }

    /**
     * ???
     */
    @Test
    public void setOrganCode() {
        Organ organ = organManager.getById("200");
        rOrgan(organ, "", 0);
    }

    //
    private void rOrgan(Organ organ, String prefix, int index) {
        String code = prefix + String.format("%02d", index);
        organ.setCode(code);
        organ.setSysCode(code);
        organManager.update(organ);
        List<Organ> childOrgans = organManager.findByParent(organ.getId(), StatusState.NORMAL.getValue());
        index = 0;
        for (Organ childOrgan : childOrgans) {
            prefix = organ.getSysCode();
            rOrgan(childOrgan, prefix, index++);
        }

        System.out.println(organ.getSysCode());
    }

    @Test
    public void genOrgan() {
        Organ rootOrgan = organManager.loadById("1");
        for (int i = 0; i < 20; i++) {
            Organ organ = new Organ();
            organ.setParent(rootOrgan);
            String code = "00" + String.format("%02d", i);
            organ.setName("_" + i);
            organ.setSysCode(code);
            organ.setManagerUserId("1");
            organ.setOrderNo(1);
            organManager.save(organ);
            for (int j = 0; j < 100; j++) {
                Organ organ_2 = new Organ();
                organ_2.setParent(organ);
                String organ_2_code = "00" + String.format("%02d", j);
                organ_2.setName("_" + j);
                organ_2.setSysCode(organ_2_code);
                organ_2.setManagerUserId("1");
                organManager.save(organ_2);
            }

        }
    }

    @Test
    public void parentIds() {
        List<Organ> rootOrgans = organManager.findRoots();
        update(rootOrgans);
    }

    private void update(List<Organ> organs) {
        for (Organ organ : organs) {
            try {
                organManager.update(organ);
            } catch (Exception e) {
                e.printStackTrace();
            }
            update(organ.getSubOrgans());
        }
    }

    @Test
    public void organTree() {
        Date d1 = Calendar.getInstance().getTime();
        List<TreeNode> treeNodes = null;
        List<TreeNode> titleList = Lists.newArrayList();
        String userId = "1";

        treeNodes = organManager.findOrganTree(userId, true);
        List<TreeNode> unionList = ListUtils.union(titleList, treeNodes);
        System.out.println(JsonMapper.getInstance().toJson(unionList));

        Date d2 = Calendar.getInstance().getTime();
        System.out.println(d2.getTime() - d1.getTime());
    }

    @Test
    public void resource() {
        Date d1 = Calendar.getInstance().getTime();
        List<com.eryansky.modules.sys.entity.Resource> list = resourceManager
                .findAppAndMenuResourcesByUserId("ac9c62d1646942348eac686a7d41b0dc");
        System.out.println(list.size());
        for (com.eryansky.modules.sys.entity.Resource r : list) {
            System.out.println(JsonMapper.getInstance().toJson(r));
        }

        Date d2 = Calendar.getInstance().getTime();
        System.out.println(d2.getTime() - d1.getTime());
    }

    @Test
    public void roleuserPage() {
        Date d1 = Calendar.getInstance().getTime();
        Page<User> page = new Page<User>(1, 20);
        page = roleManager.findPageRoleUsers(page, "a47a816aa7e84dc7a8fcc92e93589bcc", null);
        System.out.println(page.getTotalCount());
        for (User user : page.getResult()) {
            System.out.println(user.getName());
        }
        Date d2 = Calendar.getInstance().getTime();
        //        System.out.println(d2.getTime() - d1.getTime());
    }

    @Test
    public void removeRoleUser() {
        Date d1 = Calendar.getInstance().getTime();
        String roleId = "a47a816aa7e84dc7a8fcc92e93589bcc";
        List<String> roleUserIds = Lists.newArrayList();
        roleUserIds.add("7063ac9f3b044a34bf860f2f479903b8");
        Role role = roleManager.loadById(roleId);
        List<User> roleUsers = roleManager.findRoleUsers(roleId);
        Iterator<User> iterator = roleUsers.iterator();
        while (iterator.hasNext()) {
            User user = iterator.next();
            for (String userId : roleUserIds) {
                if (userId.equals(user.getId())) {
                    iterator.remove();
                    break;
                }
            }
        }
        role.setUsers(roleUsers);
        roleManager.update(role);
        Date d2 = Calendar.getInstance().getTime();
        //        System.out.println(d2.getTime() - d1.getTime());
    }

    @Test
    public void organs() {
        try {
            List<String> list = organManager.findChildsDepartmentOrganIds("113600");
            System.out.println(list.size());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}