Example usage for org.hibernate.criterion Restrictions like

List of usage examples for org.hibernate.criterion Restrictions like

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions like.

Prototype

public static SimpleExpression like(String propertyName, Object value) 

Source Link

Document

Apply a "like" constraint to the named property

Usage

From source file:com.fich.wafproject.dao.UserDaoImpl.java

public List<Users> findAll(int pageNumber, String[] targets, String[] names, String[] values,
        boolean pagination) {
    int pageSize = 4;
    Criteria crit = this.createEntityCriteria();
    crit.setProjection(Projections.distinct(Projections.property("id")));
    String dateFrom = "", dateTo = "", targetDate = "";
    if (names != null) {
        for (String alias : names) {
            crit.createAlias(alias, alias);
        }/*w  ww . ja v  a 2  s .c  o m*/
    }
    int count = 0;
    if (values != null) {
        for (String value : values) {
            if (!value.equals("") && value != null) {
                if (targets[count].contains("date")) {
                    if (dateFrom != "") {
                        dateTo = value;
                    } else {
                        dateFrom = value;
                        targetDate = targets[count];
                    }
                } else {
                    crit.add(Restrictions.like(targets[count], "%" + value + "%"));
                }
            }
            count++;
        }
        if (targetDate != "") {
            if (dateFrom != "" && dateTo == "") {
                dateTo = dateFrom;
            }
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
            try {
                Date dateF = format.parse(dateFrom);
                Date dateT = format.parse(dateTo);
                crit.add(Restrictions.between(targetDate, dateF, dateT));
            } catch (ParseException ex) {
                Logger.getLogger(UserDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }
    if (pagination) {
        crit.setFirstResult((pageNumber - 1) * pageSize);
        crit.setMaxResults(pageSize);
    }
    List<Users> users = new ArrayList<Users>();
    for (Object idEvent : crit.list()) {
        //            System.out.println(idEvent);
        users.add(this.findById((Long) idEvent));
    }
    return (List<Users>) users;
}

From source file:com.fich.wafproject.dao.UserHistoryDaoImpl.java

public List<UsersHistory> filter(String[] values, String[] names, String[] targets, int pageNumber,
        String role) {/*from   w  w  w. j  av a  2s.com*/
    int pageSize = 6;
    int count = 0;
    boolean filterByUserProperty = false, filterByUserName = false;
    Criteria crit = this.createEntityCriteria();//.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
    crit.setProjection(Projections.distinct(Projections.property("id")));
    String dateFrom = "", dateTo = "", targetDate = "";
    if (names != null) {
        for (String alias : names) {
            crit.createAlias(alias, alias);
            if (alias.equals("user"))
                filterByUserProperty = true;
        }
    }
    if (!filterByUserProperty && !role.equals(""))
        crit.createAlias("user", "user");
    if (values != null) {
        for (String value : values) {
            if (!value.equals("") && value != null) {
                if (targets[count].contains("date")) {
                    if (dateFrom != "") {
                        dateTo = value;
                    } else {
                        dateFrom = value;
                        targetDate = targets[count];
                    }
                } else {
                    if (targets[count].contains("userName"))
                        filterByUserName = true;
                    crit.add(Restrictions.like(targets[count], "%" + value + "%"));
                }
            }
            count++;
        }
        if (targetDate != "") {
            if (dateFrom != "" && dateTo == "") {
                dateTo = dateFrom;
            }
            DateFormat format = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
            try {
                Date dateF = format.parse(dateFrom);
                Date dateT = format.parse(dateTo);
                crit.add(Restrictions.between(targetDate, dateF, dateT));
            } catch (ParseException ex) {
                Logger.getLogger(UserHistoryDaoImpl.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    if (!filterByUserName && !role.equals(""))
        crit.add(Restrictions.like("user.userName", role));
    crit.setFirstResult((pageNumber - 1) * pageSize);
    crit.setMaxResults(pageSize);
    List<UsersHistory> events = new ArrayList<UsersHistory>();
    for (Object idEvent : crit.list()) {
        events.add(this.findById((Long) idEvent));
    }
    return (List<UsersHistory>) events;
}

From source file:com.floreantpos.model.dao.CustomerDAO.java

License:Open Source License

public List<Customer> findBy(String mobile, String loyalty, String name) {
    Session session = null;//from  w  w w .  j a  va2  s.  c o  m

    try {
        session = getSession();
        Criteria criteria = session.createCriteria(getReferenceClass());
        Disjunction disjunction = Restrictions.disjunction();

        if (StringUtils.isNotEmpty(mobile))
            disjunction.add(Restrictions.like(Customer.PROP_MOBILE_NO, "%" + mobile + "%")); //$NON-NLS-1$ //$NON-NLS-2$

        if (StringUtils.isNotEmpty(loyalty))
            disjunction.add(Restrictions.like(Customer.PROP_LOYALTY_NO, "%" + loyalty + "%")); //$NON-NLS-1$ //$NON-NLS-2$

        if (StringUtils.isNotEmpty(name))
            disjunction.add(Restrictions.like(Customer.PROP_FIRST_NAME, "%" + name + "%")); //$NON-NLS-1$ //$NON-NLS-2$

        criteria.add(disjunction);

        return criteria.list();

    } finally {
        if (session != null) {
            closeSession(session);
        }
    }
}

From source file:com.floreantpos.model.dao.CustomerDAO.java

License:Open Source License

public List<Customer> findBy(String searchString) {
    Session session = null;/*from  ww w.  j  a v  a2 s  .co  m*/

    try {
        session = getSession();
        Criteria criteria = session.createCriteria(getReferenceClass());
        Disjunction disjunction = Restrictions.disjunction();

        if (StringUtils.isNotEmpty(searchString))
            disjunction.add(Restrictions.like(Customer.PROP_MOBILE_NO, "%" + searchString + "%"));
        disjunction.add(Restrictions.like(Customer.PROP_LOYALTY_NO, "%" + searchString + "%"));
        disjunction.add(Restrictions.like(Customer.PROP_FIRST_NAME, "%" + searchString + "%"));

        criteria.add(disjunction);
        return criteria.list();
    } finally {
        if (session != null) {
            closeSession(session);
        }
    }

}

From source file:com.floreantpos.model.dao.DiscountDAO.java

License:Open Source License

public Discount getDiscountByBarcode(String barcode) {
    Session session = null;/*w  w  w  .ja  v  a 2 s.com*/
    Criteria criteria = null;
    try {
        session = createNewSession();
        criteria = session.createCriteria(Discount.class);
        criteria.add(Restrictions.like(Discount.PROP_BARCODE, barcode));
        List<Discount> result = criteria.list();
        if (result == null || result.isEmpty()) {
            return null;
        }
        return (Discount) result.get(0);
    } finally {
        closeSession(session);
    }
}

From source file:com.floreantpos.model.dao.MenuItemDAO.java

License:Open Source License

public MenuItem getMenuItemByBarcode(String barcode) {
    Session session = null;//from   w w w . ja  va  2  s  .c  o  m
    Criteria criteria = null;
    try {
        session = createNewSession();
        criteria = session.createCriteria(MenuItem.class);
        criteria.add(Restrictions.like(MenuItem.PROP_BARCODE, barcode));
        List<MenuItem> result = criteria.list();
        if (result == null || result.isEmpty()) {
            return null;
        }
        return (MenuItem) result.get(0);
    } finally {
        closeSession(session);
    }
}

From source file:com.fourgenius.www.public_access.registration.student.Jp_registration_student_informations.java

private String generate_student_id() {

    String branch;/*from ww  w .j  a va  2s .com*/
    String level;
    String course;
    String batch;
    String group;
    String year;
    String weekOrEnd;
    long regNo;
    String preid;

    if (_rb_registration_student_information_form_colombo.isSelected()) {
        branch = "C";
    } else if (_rb_registration_student_information_form_negombo.isSelected()) {
        branch = "N";
    } else {
        branch = "K";
    }

    if (_cb_registration_student_personalInformations_studentDetails_course_level.getSelectedItem().toString()
            .equals("Diploma Level")) {
        level = "";
    } else {
        String[] lid = _cb_registration_student_personalInformations_studentDetails_course_level
                .getSelectedItem().toString().split("-");
        level = lid[1].toString();
    }

    String[] cid = _cb_registration_student_personalInformations_studentDetails_course.getSelectedItem()
            .toString().split("-");
    course = cid[1].toString();

    batch = _cb_registration_student_batch.getSelectedItem().toString();

    group = _cb_registration_student_group.getSelectedItem().toString();

    String as = _yc_student_registration_year.getYear() + "";
    String ye[] = as.split("");
    year = ye[2] + ye[3];

    weekOrEnd = _cb_registration_student_weekOrEnd.getSelectedItem().toString();

    Criteria c = s.createCriteria(StuInfoPersonal.class);
    if (level.equals("G") || level.equals("I")) {

        preid = branch + level + course + "-" + new SimpleDateFormat("ddMMyyyy").format(new Date());
        c.add(Restrictions.like("stuUserInfoId", preid + "%"));

    } else {

        if (level.equals("")) {

            preid = branch + course + "-" + batch + group + "-" + year + "-" + weekOrEnd;
            c.add(Restrictions.like("stuUserInfoId", preid + "%"));

        } else {

            preid = branch + level + course + "-" + batch + group + "-" + year + "-" + weekOrEnd;
            c.add(Restrictions.like("stuUserInfoId", preid + "%"));

        }

    }

    regNo = (long) c.setProjection(Projections.rowCount()).uniqueResult() + 1;

    String ID = preid + "-" + regNo;

    _lb_registration_student_preview_studentID.setText(ID);

    //        String id = "ID";
    //        String st = "ST";
    //        stu_user_info user_info = new stu_user_info();
    //        String countid = user_info.getStu_user_info_id();
    //        int idcount = Integer.parseInt(countid);
    //        int id_no = ++idcount;
    //
    //        String a = Integer.toString(id_no);
    //        int length = a.length();
    //        System.out.println(length);
    //
    //        String idn = Integer.toString(id_no);
    //        String zeros;
    //        if (length == 1) {
    //            zeros = "00000";
    //        } else if (length == 2) {
    //            zeros = "0000";
    //        } else if (length == 3) {
    //            zeros = "000";
    //        } else if (length == 4) {
    //            zeros = "00";
    //        } else if (length == 5) {
    //            zeros = "0";
    //        } else {
    //            zeros = "";
    //        }
    //
    //        if (_rb_registration_student_information_form_colombo.isSelected()) {
    //            branch_name = "COL";
    //        } else {
    //            branch_name = "KAN";
    //        }
    //        String lecture_id = id + "-" + st + "-" + branch_name + "-" + zeros + idn;
    //        _lb_registration_student_preview_studentID.setText(lecture_id);
    return ID;

}

From source file:com.glaf.base.utils.HibernateUtil.java

License:Apache License

/**
 * //  w w  w  .  j a  v a2s.c om
 * @param map
 * @param forClass
 * @return
 */
public static DetachedCriteria getCriteria(Map<String, String> map, Class<?> forClass) {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(forClass);
    Set<String> params = map.keySet();
    // boolean createAliased = false;
    if (params != null) {
        Map<String, String> aliasMap = new java.util.HashMap<String, String>();// ??
        int aliasNum = 0;// ???
        Iterator<String> it = params.iterator();
        while (it.hasNext()) {
            String key = (String) it.next();
            String value = map.get(key) == null ? null : map.get(key).toString();
            value = value == null ? value : value.trim();
            if (key.startsWith(QUERY_PREFIX) && value != null && value.trim().length() > 0) {
                // ??
                String name = key.substring(QUERY_PREFIX.length());
                // ?? "="
                String op = "eq";
                if (name.indexOf("_") != -1) {
                    int pos = name.lastIndexOf("_");
                    op = name.substring(pos + 1);
                    name = name.substring(0, pos);
                }

                if ("me".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=" + value));

                } else if ("zns".equals(op)) { // 
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(" 1 = 2 "));

                } else if ("mn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is NULL "));

                } else if ("mnn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is not NULL "));

                } else if ("md".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));

                } else if ("mis".equals(op)) { // in( ?_select )
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                } else if ("xd".equals(op)) { //  . date
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=? ",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if ("xs".equals(op)) { //  . String
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "='" + value + "' "));
                } else if ("xe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) > 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("ixe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) >= 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xel".equals(op)) { //  .  
                    if (!value.equals("") && Long.parseLong(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xne".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "<>" + value));
                    }
                } else if ("xi".equals(op)) { //  . in () String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(aliasMap.get(alias) + name + " in (" + value + ") "));
                } else if ("xl".equals(op)) { //  like . String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions
                            .sqlRestriction(aliasMap.get(alias) + name + " like '%" + value + "%'"));
                } else if (op.startsWith("xdate")) { // Date
                    String dateOp = "=";
                    if ("xdatelt".equals(op)) {
                        dateOp = "<";
                    } else if ("xdategt".equals(op)) {
                        dateOp = ">";
                    } else if ("xdatele".equals(op)) {
                        dateOp = "<=";
                    } else if ("xdatege".equals(op)) {
                        dateOp = ">=";
                    }
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if (op.startsWith("date")) { // Date
                    String dateOp = "=";
                    if ("datelt".equals(op)) {
                        dateOp = "<";
                    } else if ("dategt".equals(op)) {
                        dateOp = ">";
                    } else if ("datele".equals(op)) {
                        dateOp = "<=";
                    } else if ("datege".equals(op)) {
                        dateOp = ">=";
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } /*
                  * else if(op.equals("double")){ //Double String doubleOp
                  * = "="; if("double".equals(op)){ } }
                  */else if ("like".equals(op)) { // like
                    detachedCriteria.add(Restrictions.like(name, "%" + value + "%"));
                } else if ("es".equals(op)) {
                    // if(Integer.parseInt(value) != -1){
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(name + " = ? ", value, StandardBasicTypes.STRING));
                    // }
                } else if ("ex".equals(op)) { // =int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Integer(value)));
                    }
                } else if ("el".equals(op)) { // =long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Long(value)));
                    }
                } else if ("ed".equals(op)) { // =double
                    if (Double.parseDouble(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Double(value)));
                    }
                } else if ("nei".equals(op)) { // <>int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Integer(value)));
                    }
                } else if ("nel".equals(op)) { // <>long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Long(value)));
                    }
                } else if ("in".equals(op)) { // in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(
                                Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " in (" + value
                        // + ") "));
                    }
                } else if ("nin".equals(op)) { // not in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(Restrictions
                                .sqlRestriction(maintAlias + "_." + name + " not in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " not in (" + value
                        // + ") "));
                    }
                } else {
                    detachedCriteria.add(Restrictions.eq(name, value));
                }
            } else if (key.startsWith(ORDER_PREFIX)) {
                // ????? //order__asc(desc) ? hidden 
                String name = key.substring(ORDER_PREFIX.length());

                int pos = name.lastIndexOf(".");
                if (pos != -1) {
                    String alias = name.substring(0, pos);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                }

                if (value.trim().equalsIgnoreCase("asc")) {
                    detachedCriteria.addOrder(Order.asc(name));
                } else {
                    detachedCriteria.addOrder(Order.desc(name));
                }
            }
        }
        map.putAll(aliasMap);
    }

    return detachedCriteria;
}

From source file:com.green.common.service.BaseService.java

License:Open Source License

/**
 * ?//  ww  w  .j av  a 2 s . co m
 * @param user ?UserUtils.getUser()??
 * @param officeAlias ??dc.createAlias("office", "office");
 * @param userAlias ???
 * @return ?
 */
protected static Junction dataScopeFilter(User user, String officeAlias, String userAlias) {

    // ????
    List<String> dataScope = Lists.newArrayList();
    Junction junction = Restrictions.disjunction();

    // ???
    if (!user.isAdmin()) {
        for (Role r : user.getRoleList()) {
            if (!dataScope.contains(r.getDataScope()) && StringUtils.isNotBlank(officeAlias)) {
                boolean isDataScopeAll = false;
                if (Role.DATA_SCOPE_ALL.equals(r.getDataScope())) {
                    isDataScopeAll = true;
                } else if (Role.DATA_SCOPE_COMPANY_AND_CHILD.equals(r.getDataScope())) {
                    junction.add(Restrictions.eq(officeAlias + ".id", user.getCompany().getId()));
                    junction.add(Restrictions.like(officeAlias + ".parentIds",
                            user.getCompany().getParentIds() + user.getCompany().getId() + ",%"));
                } else if (Role.DATA_SCOPE_COMPANY.equals(r.getDataScope())) {
                    junction.add(Restrictions.eq(officeAlias + ".id", user.getCompany().getId()));
                    junction.add(Restrictions.and(
                            Restrictions.eq(officeAlias + ".parent.id", user.getCompany().getId()),
                            Restrictions.eq(officeAlias + ".type", "2"))); // ?
                } else if (Role.DATA_SCOPE_OFFICE_AND_CHILD.equals(r.getDataScope())) {
                    junction.add(Restrictions.eq(officeAlias + ".id", user.getOffice().getId()));
                    junction.add(Restrictions.like(officeAlias + ".parentIds",
                            user.getOffice().getParentIds() + user.getOffice().getId() + ",%"));
                } else if (Role.DATA_SCOPE_OFFICE.equals(r.getDataScope())) {
                    junction.add(Restrictions.eq(officeAlias + ".id", user.getOffice().getId()));
                } else if (Role.DATA_SCOPE_CUSTOM.equals(r.getDataScope())) {
                    junction.add(Restrictions.in(officeAlias + ".id", r.getOfficeIdList()));
                }
                //else if (Role.DATA_SCOPE_SELF.equals(r.getDataScope())){
                if (!isDataScopeAll) {
                    if (StringUtils.isNotBlank(userAlias)) {
                        junction.add(Restrictions.eq(userAlias + ".id", user.getId()));
                    } else {
                        junction.add(Restrictions.isNull(officeAlias + ".id"));
                    }
                } else {
                    // ?????
                    junction = Restrictions.disjunction();
                    break;
                }
                dataScope.add(r.getDataScope());
            }
        }
    }
    return junction;
}

From source file:com.green.modules.cms.service.ArticleService.java

License:Open Source License

@Transactional(readOnly = false)
public Page<Article> find(Page<Article> page, Article article, boolean isDataScopeFilter) {
    // ??6??/*from w  w w.ja  v  a 2s .c  o m*/
    Date updateExpiredWeightDate = (Date) CacheUtils.get("updateExpiredWeightDateByArticle");
    if (updateExpiredWeightDate == null
            || (updateExpiredWeightDate != null && updateExpiredWeightDate.getTime() < new Date().getTime())) {
        articleDao.updateExpiredWeight();
        CacheUtils.put("updateExpiredWeightDateByArticle", DateUtils.addHours(new Date(), 6));
    }
    DetachedCriteria dc = articleDao.createDetachedCriteria();
    dc.createAlias("category", "category");
    dc.createAlias("category.site", "category.site");
    if (article.getCategory() != null && StringUtils.isNotBlank(article.getCategory().getId())
            && !Category.isRoot(article.getCategory().getId())) {
        Category category = categoryDao.get(article.getCategory().getId());
        if (category != null) {
            dc.add(Restrictions.or(Restrictions.eq("category.id", category.getId()),
                    Restrictions.like("category.parentIds", "%," + category.getId() + ",%")));
            dc.add(Restrictions.eq("category.site.id", category.getSite().getId()));
            article.setCategory(category);
        } else {
            dc.add(Restrictions.eq("category.site.id", Site.getCurrentSiteId()));
        }
    } else {
        dc.add(Restrictions.eq("category.site.id", Site.getCurrentSiteId()));
    }
    if (StringUtils.isNotEmpty(article.getTitle())) {
        dc.add(Restrictions.like("title", "%" + article.getTitle() + "%"));
    }
    if (StringUtils.isNotEmpty(article.getPosid())) {
        dc.add(Restrictions.like("posid", "%," + article.getPosid() + ",%"));
    }
    if (StringUtils.isNotEmpty(article.getImage()) && Article.YES.equals(article.getImage())) {
        dc.add(Restrictions.and(Restrictions.isNotNull("image"), Restrictions.ne("image", "")));
    }
    if (article.getCreateBy() != null && StringUtils.isNotBlank(article.getCreateBy().getId())) {
        dc.add(Restrictions.eq("createBy.id", article.getCreateBy().getId()));
    }
    if (isDataScopeFilter) {
        dc.createAlias("category.office", "categoryOffice").createAlias("createBy", "createBy");
        dc.add(dataScopeFilter(UserUtils.getUser(), "categoryOffice", "createBy"));
    }
    dc.add(Restrictions.eq(Article.FIELD_DEL_FLAG, article.getDelFlag()));
    if (StringUtils.isBlank(page.getOrderBy())) {
        dc.addOrder(Order.desc("weight"));
        dc.addOrder(Order.desc("updateDate"));
    }
    return articleDao.find(page, dc);
}