Java 类org.hibernate.transform.DistinctResultTransformer 实例源码

项目:bisis-v4    文件:ExecuteSearchCommand.java   
@SuppressWarnings("deprecation")
@Override
public void execute() {

    try{
        Criteria crt = session.createCriteria(Users.class);
        for (int i = 0; i < operandList.size(); i++) {
            operand = operandList.get(i);
            if (operand.getLabel().getDbtable().equals("users")){
                pref = "";
            } else if (operand.getLabel().getDbtable().equals("signing")){
                pref = "sign.";
                if (!aliasSign){
                    crt.createAlias("signings", "sign");
                    aliasSign = true;
                }
            }else if (operand.getLabel().getDbtable().equals("lending")){
                pref = "lend.";
                if (!aliasLend){
                    crt.createAlias("alllendings", "lend");
                    aliasLend = true;
                }
            }

            if (operand.getValue() != null){
                exp2 = Restrictions.like(pref + operand.getLabel().getDbname(), operand.getValue());
            } else if (operand.getEnd() != null){
                exp2 = Restrictions.between(pref + operand.getLabel().getDbname(), 
                        Utils.setMinDate(operand.getStart()),Utils.setMaxDate(operand.getEnd()));
                if (operand.getLocation() != null) {
                    exp2 = Restrictions.and(exp2, Restrictions.eq(pref + "location", operand.getLocation()));
                }   
            } else {
                exp2 = Restrictions.between(pref + operand.getLabel().getDbname(),
                        Utils.setMinDate(operand.getStart()),Utils.setMaxDate(operand.getStart()));
                if (operand.getLocation() != null) {
                    exp2 = Restrictions.and(exp2, Restrictions.eq(pref + "location", operand.getLocation()));
                }   
            }
            if (exp == null){
                exp = exp2;
            } else if (operator.equals("and")) {
                exp = Restrictions.and(exp, exp2);
            } else if (operator.equals("or")) {
                exp = Restrictions.or(exp, exp2);
            } else if (operator.equals("not")) {
                exp = Restrictions.and(exp, Restrictions.not(exp2));
            }

            if (i < operatorList.size())
             operator = operatorList.get(i);
        }
        crt.add(exp);

        if (crt != null) {
            crt.setProjection(Projections.projectionList()
             .add(Projections.property("userId"))
             .add(Projections.property("firstName"))
             .add(Projections.property("lastName"))
             .add(Projections.property("parentName"))
             .add(Projections.property("jmbg"))
             .add(Projections.property("city"))
             .add(Projections.property("address")));
            Transaction tx = session.beginTransaction();
            list = crt.list();
            list =  DistinctResultTransformer.INSTANCE.transformList(list);
            tx.commit();
        } 
    }catch (Exception e){
        log.error(e);
    }
}