Example usage for org.hibernate.criterion Restrictions not

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

Introduction

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

Prototype

public static Criterion not(Criterion expression) 

Source Link

Document

Return the negation of an expression

Usage

From source file:es.uvigo.ei.sing.gc.view.models.committee.summary.SummaryViewModel.java

License:Open Source License

@Command("saveAndFinish")
public void saveAndFinish() throws Exception {
    final Committee committee = this.getCommittee();

    if (committee.isFinished()) {
        throw new IllegalStateException("Committee is already completed");
    } else {//from   w  ww. j a v a  2s. co  m
        final Session session = HibernateUtil.currentSession();

        Committee sameName = (Committee) session.createCriteria(Committee.class).setMaxResults(1)
                .add(Restrictions.eq("user", committee.getUser()))
                .add(Restrictions.eq("name", committee.getName()))
                .add(Restrictions.not(Restrictions.eq("id", committee.getId()))).uniqueResult();

        if (sameName == null) {
            committee.setFinished(true);

            session.persist(committee);

            Executions.sendRedirect("/home.zul");
        } else {
            Messagebox.show(
                    "There is another committee with the same name. Please, change the name in order to continue.",
                    "Invalid Name", Messagebox.OK, Messagebox.ERROR);
        }
    }
}

From source file:eu.jangos.manager.controller.CommandsService.java

License:Apache License

/**
 * Return the list of all commands available in the database.
 * @return A List of Commands corresponding to the content of the database.
 *///  w  ww  .java  2 s  . c  om
public List<Commands> getAllCommands() {
    logger.debug("Returning all commands");

    try (Session session = HibernateUtil.getSessionFactory().openSession()) {
        return session.createCriteria(Commands.class).add(Restrictions.not(Restrictions.like("name", "all")))
                .addOrder(Order.asc("name")).list();
    } catch (HibernateException he) {
        return null;
    }
}

From source file:fr.gael.dhus.olingo.v1.SQLVisitor.java

License:Open Source License

@Override
public Object visitUnary(UnaryExpression unary_expression, UnaryOperator operator, Object operand) {
    switch (operator) {
    case MINUS: {
        if (operand instanceof Long) {
            return -((Long) operand);
        } else if (operand instanceof Double) {
            return -((Double) operand);
        } else {/*from   www  .ja v a  2 s.  c om*/
            throw new UnsupportedOperationException("Invalid expression: " + unary_expression.getUriLiteral());
        }
    }
    case NOT: {
        return Restrictions.not((Criterion) operand);
    }
    default:
        break;
    }
    throw new UnsupportedOperationException("Unsupported operator: " + operator.toUriLiteral());
}

From source file:fr.gael.dhus.service.ProductService.java

License:Open Source License

/**
 * Returns all products not contained in a collection.
 * @return a set of products.//from   ww  w  . j ava 2  s  .co m
 */
@Transactional(readOnly = true)
public Set<Product> getNoCollectionProducts() {
    DetachedCriteria criteria = DetachedCriteria.forClass(Product.class);
    Iterator<Product> it = collectionService.getAllProductInCollection().iterator();

    HashSet<Long> cpid = new HashSet<>();
    while (it.hasNext()) {
        cpid.add(it.next().getId());
    }

    criteria.add(Restrictions.not(Restrictions.in("id", cpid)));
    criteria.add(Restrictions.eq("processed", true));
    return new HashSet<>(productDao.listCriteria(criteria, 0, -1));
}

From source file:fr.mcc.ginco.dao.hibernate.ThesaurusConceptDAO.java

License:CeCILL license

private void excludeConcept(Criteria criteria, String excludeId) {
    if (excludeId != null && !excludeId.isEmpty()) {
        criteria.add(Restrictions.not(Restrictions.eq("tc.identifier", excludeId)));
    }/*from w  w  w  .ja  v a  2 s .  c o m*/
}

From source file:fsl.ta.toms.roms.dao.impl.ReportDAOImpl.java

@Override
public SummonsOutstandingReportBO summonsOutstandingReport(SummonsOutstandingReportCriteriaBO reportCriteria,
        String userName, String userRegion, ReportDisplayInformationDAOImpl reportDisplayInformation) {
    Criteria criteria = this.hibernateTemplate.getSessionFactory().getCurrentSession()
            .createCriteria(SummonsDO.class, "s");
    criteria.createAlias("s.roadOperation", "ro", Criteria.LEFT_JOIN);
    criteria.createAlias("s.offender", "of", Criteria.LEFT_JOIN);
    criteria.createAlias("s.status", "st", Criteria.LEFT_JOIN);
    criteria.createAlias("ro.category", "c", Criteria.LEFT_JOIN);
    criteria.createAlias("s.taStaff", "ta", Criteria.LEFT_JOIN);
    criteria.createAlias("ta.person", "taPerson");

    Date reportStartDate = DateUtils.searchDateFormater(reportCriteria.getOperationStartDate(),
            DateUtils.SEARCHDATETYPE.START);
    Date reportEndDate = DateUtils.searchDateFormater(reportCriteria.getOperationEndDate(),
            DateUtils.SEARCHDATETYPE.END);

    Criterion mainCriterion = Restrictions.or(
            Restrictions.between("ro.scheduledStartDtime", reportStartDate, reportEndDate),
            Restrictions.between("ro.scheduledEndDtime", reportStartDate, reportEndDate));

    /* Only summons which are not yet issued should be returned */
    List<String> summonsOutstandingStatusList = new ArrayList<String>();
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.CANCELLED);
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.WITHDRAWN);
    summonsOutstandingStatusList.add(fsl.ta.toms.roms.constants.Constants.DocumentStatus.SERVED);
    Criterion subCriterion = Restrictions.not(Restrictions.in("st.statusId", summonsOutstandingStatusList));
    /* _________________________________________________________ */

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("of.personId", reportCriteria.getOffenderId()));
    }//from w  ww  .  ja  va  2 s.  c  om

    if (StringUtil.isSet(reportCriteria.getOffenderTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("of.trnNbr", reportCriteria.getOffenderTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getOffenderFirstName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("of.firstName", reportCriteria.getOffenderFirstName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (StringUtil.isSet(reportCriteria.getOffenderLastName())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions
                        .like("of.lastName", reportCriteria.getOffenderLastName().trim(), MatchMode.ANYWHERE)
                        .ignoreCase());
    }

    if (reportCriteria.getOperationCategory() != null && !reportCriteria.getOperationCategory().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("c.categoryId", reportCriteria.getOperationCategory().trim()));

    }

    if (reportCriteria.getRoadOperationId() != null && reportCriteria.getRoadOperationId() > 0) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ro.roadOperationId", reportCriteria.getRoadOperationId()));
    }

    if (reportCriteria.getTAOfficeRegion() != null && !reportCriteria.getTAOfficeRegion().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ro.officeLocCode", reportCriteria.getTAOfficeRegion().trim()));
    }

    if (reportCriteria.getTAStaffId() != null && !reportCriteria.getTAStaffId().isEmpty()) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("ta.staffId", reportCriteria.getTAStaffId().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getTAStaffTRN())) {
        subCriterion = Restrictions.and(subCriterion,
                Restrictions.eq("taPerson.trnNbr", reportCriteria.getTAStaffTRN().trim()));
    }

    if (StringUtil.isSet(reportCriteria.getRoadOperationName())) {
        subCriterion = Restrictions.and(subCriterion, Restrictions
                .like("ro.operationName", reportCriteria.getRoadOperationName().trim(), MatchMode.ANYWHERE)
                .ignoreCase());
    }

    criteria.add(Restrictions.and(mainCriterion, subCriterion));

    NameUtil nameUtil = new NameUtil();
    String stringStartDate = "";
    String stringEndDate = "";
    try {
        stringStartDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationStartDate());
        stringEndDate = DateUtils.getFormattedUtilDate(reportCriteria.getOperationEndDate());
    } catch (Exception exe) {

    }
    /* Get report criteria names and descriptions */

    if (reportCriteria.getOffenderId() != null && reportCriteria.getOffenderId() > 0)
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderId()));
    else if (StringUtil.isSet(reportCriteria.getOffenderTRN()))
        reportCriteria.setOffenderName(this.getPersonName(reportCriteria.getOffenderTRN()));

    reportCriteria
            .setOperationCategoryDesc(this.getOperationCategoryDesc(reportCriteria.getOperationCategory()));
    reportCriteria.setRoadOperationName(reportCriteria.getRoadOperationName());

    reportCriteria.setTAOfficeRegionDesc(this.getTAOfficeRegionDescription(reportCriteria.getTAOfficeRegion()));

    if (StringUtil.isSet(reportCriteria.getTAStaffId()))
        reportCriteria.setTAStaffName(this.getTAStaffName(reportCriteria.getTAStaffId()));
    else if (StringUtil.isSet(reportCriteria.getTAStaffTRN()))
        reportCriteria.setTAStaffName(this.getPersonName(reportCriteria.getTAStaffTRN()));

    /*
     * reportCriteria.setRoadOperationDesc(this.getRoadOperationName(
     * reportCriteria.getRoadOperationId()));
     */
    /* __________________________________________ */

    SummonsOutstandingReportBO report = new SummonsOutstandingReportBO(userName, userRegion,
            reportDisplayInformation.applicationName,
            reportDisplayInformation.summonsOutstandingReportTitle + stringStartDate + " TO " + stringEndDate,
            reportCriteria.getOperationStartDate(), reportCriteria.getOperationEndDate(),
            reportCriteria.getSearchCriteriaString(), getTAOfficeRegionDescription(userRegion));

    List<SummonsOutstandingReportResultsBO> summonsOutStReportList = new ArrayList<SummonsOutstandingReportResultsBO>();

    for (SummonsDO summons : (List<SummonsDO>) criteria.list()) {

        String offenderFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getOffender().getFirstName())
                        ? summons.getOffender().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getOffender().getLastName())
                        ? summons.getOffender().getLastName().trim()
                        : ""));

        String offenceDescription = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getOffence()
                .getDescription();

        String tAStaffFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getTaStaff().getPerson().getFirstName())
                        ? summons.getTaStaff().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getTaStaff().getPerson().getLastName())
                        ? summons.getTaStaff().getPerson().getLastName().trim()
                        : ""));

        VehicleDO vehicle = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getVehicle();
        String vehicleDetails = "";
        if (vehicle != null) {
            vehicleDetails = (StringUtil.isSet(vehicle.getModel()) ? vehicle.getModel().trim() : "") + "; "
                    + (StringUtil.isSet(vehicle.getMakeDescription()) ? vehicle.getMakeDescription().trim()
                            : "")
                    + "; Plate #: "
                    + (StringUtil.isSet(vehicle.getPlateRegNo()) ? vehicle.getPlateRegNo().trim() : "");
        }

        String locationOfOffence = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getCompliancyArtery().getDescription();

        String tAOfficeRegion = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOfficeLocCode();

        String jPFullName = NameUtil.getName(
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getFirstName())
                        ? summons.getJusticeOfPeace().getPerson().getFirstName().trim()
                        : ""),
                (StringUtil.isSet(summons.getJusticeOfPeace().getPerson().getLastName())
                        ? summons.getJusticeOfPeace().getPerson().getLastName()
                        : ""));

        String roadOperationDetails = summons.getRoadCheckOffenceOutcome().getRoadCheckOffence().getRoadCheck()
                .getCompliance().getRoadOperation().getOperationName();

        /* Get latest trial for the summons */
        Criteria criteriaCourtAppearance = this.hibernateTemplate.getSessionFactory().getCurrentSession()
                .createCriteria(CourtAppearanceDO.class, "CApp");

        criteriaCourtAppearance.createAlias("CApp.courtCase", "CCase");
        criteriaCourtAppearance.createAlias("CCase.summons", "Summ");

        criteriaCourtAppearance.add(Restrictions.eq("Summ.summonsId", summons.getSummonsId()));

        criteriaCourtAppearance.addOrder(Order.asc("CApp.CourtDTime"));
        criteriaCourtAppearance.addOrder(Order.asc("CApp.courtAppearanceId"));

        Integer courtAppListSize = criteriaCourtAppearance.list().size();
        String courtDetails = "";

        if (courtAppListSize > 0) {
            CourtAppearanceDO courtApp = (CourtAppearanceDO) criteriaCourtAppearance.list()
                    .get(courtAppListSize - 1);

            String stringTrialDate = "";
            SimpleDateFormat dt = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
            try {
                stringTrialDate = dt.format(courtApp.getCourtDTime());

            } catch (Exception exe) {

            }

            courtDetails = String.format("Court Appearance Date is %s at %s.", stringTrialDate,
                    courtApp.getCourt().getDescription());
        }
        /* _______________________________ */

        SummonsOutstandingReportResultsBO summonsOutstanding = new SummonsOutstandingReportResultsBO(
                offenderFullName, offenceDescription, tAStaffFullName, vehicleDetails, locationOfOffence,
                tAOfficeRegion, jPFullName, roadOperationDetails, courtDetails,
                getTAOfficeRegionDescription(tAOfficeRegion), summons.getServedOnDate());

        summonsOutStReportList.add(summonsOutstanding);
    }

    report.setResults(summonsOutStReportList);
    return report;
}

From source file:gov.nih.nci.firebird.service.annual.registration.RegistrationWithdrawalServiceBean.java

License:Open Source License

@Override
@SuppressWarnings("unchecked")
public List<FirebirdUser> getAllInvestigatorsWithPendingWithdrawalRequests() {
    return sessionProvider.get().createCriteria(FirebirdUser.class)
            .add(Restrictions.isNotNull("investigatorRole.withdrawalRequest.explanation"))
            .add(Restrictions.not(Restrictions.eq("investigatorRole.status", InvestigatorStatus.WITHDRAWN)))
            .list();//from   ww  w.java 2s  .  c o  m
}

From source file:gr.abiss.calipso.domain.ColumnHeading.java

License:Open Source License

/**
 * this routine is a massive if-then construct that acts as a factory for
 * the right implementation of the responsibilities defined in the
 * "Processor" class (above) based on the type of ColumnHeading - the right
 * implementation will be returned. having everything in one place below,
 * makes it easy to maintain, as the logic of each of the methods are
 * closely interdependent for a given column type for e.g. the kind of
 * hibernate criteria needed depends on what is made available on the UI
 *//* www . j  av a  2 s .  c  o  m*/
private Processor getProcessor() {
    if (isField()) {
        switch (field.getName().getType()) {
        // ==============================================================

        case 1:
        case 2:
        case 3:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    final Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    //final Map<String, String> options = field.getOptions();
                    List<CustomAttributeLookupValue> lookupValues = calipsoService.findLookupValues(space,
                            field.getName().getText());
                    // TODO: create a leaf-node only finder method in calipso service
                    List<CustomAttributeLookupValue> leafLookupValues = new LinkedList<CustomAttributeLookupValue>();

                    // leaf selection only for now
                    for (CustomAttributeLookupValue val : lookupValues) {
                        if (CollectionUtils.isEmpty(val.getChildren())) {
                            leafLookupValues.add(val);
                        }
                    }
                    lookupValues = null;

                    final CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values", leafLookupValues,
                            new IChoiceRenderer<CustomAttributeLookupValue>() {

                                @Override
                                public Object getDisplayValue(CustomAttributeLookupValue object) {
                                    return fragment.getString(object.getNameTranslationResourceKey());
                                }

                                @Override
                                public String getIdValue(CustomAttributeLookupValue object, int index) {
                                    return object.getId() + "";
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        List values = filterCriteria.getValues();
                        List<Integer> keys = new ArrayList<Integer>(values.size());
                        for (Object o : values) {
                            if (o instanceof CustomAttributeLookupValue) {
                                CustomAttributeLookupValue val = (CustomAttributeLookupValue) o;
                                keys.add(NumberUtils.createInteger(val.getId() + ""));
                            } else {
                                keys.add(NumberUtils.createInteger(o + ""));
                            }
                        }
                        criteria.add(Restrictions.in(getNameText(), keys));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValueList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueListFromQueryString(s);
                }
            };
        // ==============================================================
        case 4: // decimal number
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ, NOT_EQ, GT, LT, BETWEEN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "textField", container);
                    TextField textField = new TextField("value", Double.class);
                    textField.setModel(new PropertyModel(filterCriteria, "value"));
                    fragment.add(textField);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        TextField textField2 = new TextField("value2", Double.class);
                        textField2.setModel(new PropertyModel(filterCriteria, "value2"));
                        fragment.add(textField2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(name.text, value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Double.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, Double.class);
                }

            };
        // ==============================================================
        case 6: // date
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ, NOT_EQ, GT, LT, BETWEEN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "dateField", container);
                    DateField calendar = new DateField("value",
                            new PropertyModel(filterCriteria, "value")/*,
                                                                      false*/);
                    fragment.add(calendar);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        DateField calendar2 = new DateField("value2",
                                new PropertyModel(filterCriteria, "value2")/*,
                                                                           false*/);
                        fragment.add(calendar2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(getNameText(), value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Date.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, Date.class);
                }
            };
        // ==============================================================
        case 5: // free text
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        // TODO:
        case 10:// organization
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        // TODO:
        case 11:// file
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        case 200:// attachment
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        case 20:// is user
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };

        case 25:// is user
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        case 100: // Assignable spaces (move to space)
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    final Map<String, String> options = field.getOptions();
                    List<String> keys = null;
                    if (options != null) {
                        keys = new ArrayList(options.keySet()); // bound
                        // value
                    } else {
                        keys = new ArrayList();
                    }

                    List<Space> spaces = new LinkedList<Space>();
                    for (String key : keys) {
                        // spaces.add(ComponentUtils.getJtrac(c).loadSpace(Long.parseLong(key)));
                        spaces.add(calipsoService.loadSpace(Long.parseLong(key)));
                    } // for
                    CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values", spaces,
                            new IChoiceRenderer<Space>() {
                                private static final long serialVersionUID = 1L;

                                @Override
                                public Object getDisplayValue(Space o) {
                                    logger.info("Option for space: " + o);
                                    String name = o.getName();
                                    return name != null ? name : o.getId();
                                }

                                @Override
                                public String getIdValue(Space o, int index) {
                                    return o.getId() + "";
                                }
                            });

                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        List values = filterCriteria.getValues();
                        criteria.add(Restrictions.in(getNameText(), values));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValueList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueListFromQueryString(s);
                }
            };
        // ==============================================================
        default:
            throw new RuntimeException("Unknown Column Heading " + name);
        }
    } else { // this is not a custom field but one of the "built-in" columns
        switch (name) {
        // ==============================================================
        case ID:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        // should never come here for criteria: see
                        // ItemSearch#getRefId()
                        throw new RuntimeException("should not come here for 'id'");
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        // ==============================================================
        case SUMMARY:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };
        // ==============================================================
        case DETAIL:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    // do nothing, 'detail' already processed, see:
                    // ItemSearch#getSearchText()
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, String.class);
                }
            };

        // ==============================================================
        case STATUS:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    // status selectable only when context space is not null
                    // final Map<Integer, String> options =
                    // space.getMetadata().getStatesMap();
                    final Map<Integer, String> options;
                    if (space == null) {
                        options = State.getSpecialStates();
                    } else {
                        options = space.getMetadata().getStatesMap();
                    }
                    options.remove(State.NEW);
                    CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values",
                            new ArrayList(options.keySet()), new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return options.get(o);
                                }

                                public String getIdValue(Object o, int i) {
                                    return o.toString();
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        criteria.add(Restrictions.in(getNameText(), filterCriteria.getValues()));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValueList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    //logger.info("loadFromQueryString: "+s);
                    setStatusListFromQueryString(s);
                }
            };
        // ==============================================================
        case ASSIGNED_TO:
        case LOGGED_BY:
        case REPORTED_BY:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN, IS_NULL);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    List<User> users = null;
                    if (space == null) {
                        users = calipsoService.findUsersForUser(user);
                    } else {
                        users = calipsoService.findUsersForSpace(space.getId());
                    }
                    CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values", users,
                            new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return ((User) o).getFullName();
                                }

                                public String getIdValue(Object o, int i) {
                                    return ((User) o).getId() + "";
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        criteria.add(Restrictions.in(getNameText(), filterCriteria.getValues()));
                    } else if (filterIsNullExpression()) {
                        criteria.add(Restrictions.isNull(getNameText()));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromUserList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setUserListFromQueryString(s, calipsoService);
                }
            };
        // ==============================================================

        case ASSET_TYPE:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);

                    List<AssetType> assetTypes = calipsoService.findAllAssetTypes();
                    CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values", assetTypes,
                            new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return ((AssetType) o).getName();
                                }

                                public String getIdValue(Object o, int i) {
                                    return String.valueOf(((AssetType) o).getId());
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));

                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        criteria.createAlias("assets", "assets");
                        criteria.add(Restrictions.in("assets.assetType", filterCriteria.getValues()));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromAssetTypeList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setAssetTypeListFromQueryString(s, user, calipsoService);
                }
            };
        // ==============================================================
        case TIME_STAMP:
        case DUE_TO:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(BETWEEN, GT, LT, EQ, NOT_EQ);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "dateField", container);
                    DateField calendar = new DateField("value",
                            new PropertyModel(filterCriteria, "value")/*,
                                                                      false*/);
                    fragment.add(calendar);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        DateField calendar2 = new DateField("value2",
                                new PropertyModel(filterCriteria, "value2")/*,
                                                                           false*/);
                        fragment.add(calendar2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(getNameText(), value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Date.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, Date.class);
                }
            };
        // ==============================================================
        case SPACE:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    List<Space> spaces = new ArrayList(user.getSpaces());
                    CheckBoxMultipleChoice choice = new CheckBoxMultipleChoice("values", spaces,
                            new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return ((Space) o).getName();
                                }

                                public String getIdValue(Object o, int i) {
                                    return ((Space) o).getId() + "";
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    // already handled space as special case, see
                    // ItemSearch#getSelectedSpaces()
                }

                String getAsQueryString() {
                    return getQueryStringFromSpaceList();
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setSpaceListFromQueryString(s, user, calipsoService);
                }
            };

        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        case TOTAL_RESPONSE_TIME:
        case TIME_FROM_CREATION_TO_FIRST_REPLY:
        case TIME_FROM_CREATION_TO_CLOSE:
            return new ProcessorCustom() {
                private Class validationClass = null;

                List<Expression> getValidFilterExpressions() {
                    return getAsList(BETWEEN, GT, LT);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "effortField", container);
                    WebMarkupContainer days = new WebMarkupContainer("days");

                    if (name.equals(TOTAL_RESPONSE_TIME)) {
                        validationClass = Double.class;
                    } else {
                        validationClass = Long.class;
                    }

                    TextField textField = new TextField("value", validationClass);
                    days.add(textField);
                    // textField.setModel(new PropertyModel(this,
                    // "filterCriteria.value"));
                    textField.setModel(new PropertyModel(filterCriteria, "value"));
                    fragment.add(days);

                    WebMarkupContainer days2 = new WebMarkupContainer("days2");
                    if (filterCriteria.getExpression() == BETWEEN) {
                        TextField textField2 = new TextField("value2", validationClass);
                        days2.add(textField2);
                        // textField2.setModel(new PropertyModel(this,
                        // "filterCriteria.value2"));
                        textField2.setModel(new PropertyModel(filterCriteria, "value2"));
                    } // if
                    else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                        days2.setVisible(false);
                    } // else
                    fragment.add(days2);
                    // fragment.setVisible(isVisible());
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                }

                void addRestrictions(CustomCriteria customCriteria) {
                    if (filterHasValue()) {
                        String criteriaObjectClass = null;
                        if (validationClass != null) {
                            criteriaObjectClass = validationClass.getCanonicalName();
                        } // if

                        Object value = filterCriteria.getValue();
                        Object value2 = filterCriteria.getValue2();

                        Double v1 = new Double(value.toString());
                        value = v1 * 86400;// In Seconds
                        switch (filterCriteria.getExpression()) {
                        case GT:
                            customCriteria.add(name.getText(), CustomCriteria.GT, value.toString(),
                                    criteriaObjectClass);
                            break;
                        case LT:
                            customCriteria.add(name.getText(), CustomCriteria.LT, value.toString(),
                                    criteriaObjectClass);
                            break;
                        case BETWEEN:
                            Double v2 = new Double(value2.toString());
                            value2 = v2 * 86400; // In Seconds
                            customCriteria.add(name.getText(), CustomCriteria.GET, value.toString(),
                                    criteriaObjectClass);
                            customCriteria.add(name.getText(), CustomCriteria.LET, value2.toString(),
                                    criteriaObjectClass);
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Long.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, Long.class);
                }
            };

        // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

        case PLANNED_EFFORT:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ, NOT_EQ, GT, LT, BETWEEN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space,
                        CalipsoService calipsoService) {
                    Fragment fragment = new Fragment("fragParent", "effortField2", container);
                    EffortField effortField = new EffortField("value",
                            new PropertyModel(filterCriteria, "value"), false);
                    fragment.add(effortField);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        EffortField effortField2 = new EffortField("value2",
                                new PropertyModel(filterCriteria, "value2"), false);
                        fragment.add(new WebMarkupContainer("and"));
                        fragment.add(effortField2);
                    } else {
                        fragment.add(new WebMarkupContainer("and").setVisible(false));
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(getNameText(), value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Integer.class);
                }

                void loadFromQueryString(String s, User user, CalipsoService calipsoService) {
                    setValueFromQueryString(s, Integer.class);
                }
            };

        // ==============================================================
        default:
            throw new RuntimeException("Unknown Column Heading " + name);
        }
    }
}

From source file:info.jtrac.domain.ColumnHeading.java

License:Apache License

/**
 * this routine is a massive if-then construct that acts as a factory for the
 * right implementation of the responsibilities defined in the "Processor" class (above)
 * based on the type of ColumnHeading - the right implementation will be returned.
 * having everything in one place below, makes it easy to maintain, as the
 * logic of each of the methods are closely interdependent for a given column type
 * for e.g. the kind of hibernate criteria needed depends on what is made available on the UI
 *///  w w w  .  j  ava2s.c  o  m
private Processor getProcessor() {
    if (isField()) {
        switch (field.getName().getType()) {
        //==============================================================
        case 1:
        case 2:
        case 3:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    final Map<String, String> options = field.getOptions();
                    JtracCheckBoxMultipleChoice choice = new JtracCheckBoxMultipleChoice("values",
                            new ArrayList(options.keySet()), new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return options.get(o);
                                }

                                public String getIdValue(Object o, int i) {
                                    return o.toString();
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        List values = filterCriteria.getValues();
                        List<Integer> keys = new ArrayList<Integer>(values.size());
                        for (Object o : values) {
                            keys.add(new Integer(o.toString()));
                        }
                        criteria.add(Restrictions.in(getNameText(), keys));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValueList();
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueListFromQueryString(s);
                }
            };
        //==============================================================
        case 4: // decimal number  
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ, NOT_EQ, GT, LT, BETWEEN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "textField", container);
                    TextField textField = new TextField("value", Double.class);
                    textField.setModel(new PropertyModel(filterCriteria, "value"));
                    fragment.add(textField);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        TextField textField2 = new TextField("value2", Double.class);
                        textField.setModel(new PropertyModel(filterCriteria, "value2"));
                        fragment.add(textField2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(name.text, value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Double.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, Double.class);
                }

            };
        //==============================================================
        case 6: // date
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ, NOT_EQ, GT, LT, BETWEEN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "dateField", container);
                    YuiCalendar calendar = new YuiCalendar("value", new PropertyModel(filterCriteria, "value"),
                            false);
                    fragment.add(calendar);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        YuiCalendar calendar2 = new YuiCalendar("value2",
                                new PropertyModel(filterCriteria, "value2"), false);
                        fragment.add(calendar2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case EQ:
                            criteria.add(Restrictions.eq(getNameText(), value));
                            break;
                        case NOT_EQ:
                            criteria.add(Restrictions.not(Restrictions.eq(getNameText(), value)));
                            break;
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Date.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, Date.class);
                }
            };
        //==============================================================
        case 5: // free text 
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, String.class);
                }
            };
        //==============================================================
        default:
            throw new RuntimeException("Unknown Column Heading " + name);
        }
    } else { // this is not a custom field but one of the "built-in" columns           
        switch (name) {
        //==============================================================
        case ID:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(EQ);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        // should never come here for criteria: see ItemSearch#getRefId()
                        throw new RuntimeException("should not come here for 'id'");
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, String.class);
                }
            };
        //==============================================================
        case SUMMARY:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        criteria.add(Restrictions.ilike(getNameText(), (String) filterCriteria.getValue(),
                                MatchMode.ANYWHERE));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, String.class);
                }
            };
        //==============================================================
        case DETAIL:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(CONTAINS);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    return getTextFieldFragment(container);
                }

                void addRestrictions(DetachedCriteria criteria) {
                    // do nothing, 'detail' already processed, see: ItemSearch#getSearchText()
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(String.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, String.class);
                }
            };

        //==============================================================
        case STATUS:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    // status selectable only when context space is not null
                    final Map<Integer, String> options = space.getMetadata().getStatesMap();
                    options.remove(State.NEW);
                    JtracCheckBoxMultipleChoice choice = new JtracCheckBoxMultipleChoice("values",
                            new ArrayList(options.keySet()), new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return options.get(o);
                                }

                                public String getIdValue(Object o, int i) {
                                    return o.toString();
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        criteria.add(Restrictions.in(getNameText(), filterCriteria.getValues()));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValueList();
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setStatusListFromQueryString(s);
                }
            };
        //==============================================================
        case ASSIGNED_TO:
        case LOGGED_BY:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    List<User> users = null;
                    if (space == null) {
                        users = jtrac.findUsersForUser(user);
                    } else {
                        users = jtrac.findUsersForSpace(space.getId());
                    }
                    JtracCheckBoxMultipleChoice choice = new JtracCheckBoxMultipleChoice("values", users,
                            new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return ((User) o).getName();
                                }

                                public String getIdValue(Object o, int i) {
                                    return ((User) o).getId() + "";
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValueList()) {
                        criteria.add(Restrictions.in(getNameText(), filterCriteria.getValues()));
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromUserList();
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setUserListFromQueryString(s, jtrac);
                }
            };
        //==============================================================
        case TIME_STAMP:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(BETWEEN, GT, LT);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "dateField", container);
                    YuiCalendar calendar = new YuiCalendar("value", new PropertyModel(filterCriteria, "value"),
                            false);
                    fragment.add(calendar);
                    if (filterCriteria.getExpression() == BETWEEN) {
                        YuiCalendar calendar2 = new YuiCalendar("value2",
                                new PropertyModel(filterCriteria, "value2"), false);
                        fragment.add(calendar2);
                    } else {
                        fragment.add(new WebMarkupContainer("value2").setVisible(false));
                    }
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    if (filterHasValue()) {
                        Object value = filterCriteria.getValue();
                        switch (filterCriteria.getExpression()) {
                        case GT:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            break;
                        case LT:
                            criteria.add(Restrictions.lt(getNameText(), value));
                            break;
                        case BETWEEN:
                            criteria.add(Restrictions.gt(getNameText(), value));
                            criteria.add(Restrictions.lt(getNameText(), filterCriteria.getValue2()));
                            break;
                        default:
                        }
                    }
                }

                String getAsQueryString() {
                    return getQueryStringFromValue(Date.class);
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setValueFromQueryString(s, Date.class);
                }
            };
        //==============================================================
        case SPACE:
            return new Processor() {
                List<Expression> getValidFilterExpressions() {
                    return getAsList(IN);
                }

                Fragment getFilterUiFragment(MarkupContainer container, User user, Space space, Jtrac jtrac) {
                    Fragment fragment = new Fragment("fragParent", "multiSelect", container);
                    List<Space> spaces = new ArrayList(user.getSpaces());
                    JtracCheckBoxMultipleChoice choice = new JtracCheckBoxMultipleChoice("values", spaces,
                            new IChoiceRenderer() {
                                public Object getDisplayValue(Object o) {
                                    return ((Space) o).getName();
                                }

                                public String getIdValue(Object o, int i) {
                                    return ((Space) o).getId() + "";
                                }
                            });
                    fragment.add(choice);
                    choice.setModel(new PropertyModel(filterCriteria, "values"));
                    return fragment;
                }

                void addRestrictions(DetachedCriteria criteria) {
                    // already handled space as special case, see ItemSearch#getSelectedSpaces()
                }

                String getAsQueryString() {
                    return getQueryStringFromSpaceList();
                }

                void loadFromQueryString(String s, User user, Jtrac jtrac) {
                    setSpaceListFromQueryString(s, user, jtrac);
                }
            };
        //==============================================================
        default:
            throw new RuntimeException("Unknown Column Heading " + name);
        }
    }
}

From source file:info.jtrac.repository.HibernateJtracDao.java

License:Apache License

public void addRestrictions(final ColumnHeading columnHeading, DetachedCriteria criteria) {
    if (columnHeading.isField()) {
        switch (columnHeading.getField().getName().getType()) {
        case 1:// w w w.  j av a  2  s  .  com
        case 2:
        case 3: {
            if (columnHeading.filterHasValueList()) {
                List<Object> values = columnHeading.getFilterCriteria().getValues();
                List<Integer> keys = new ArrayList<Integer>(values.size());
                for (Object o : values) {
                    keys.add(new Integer(o.toString()));
                }
                criteria.add(Restrictions.in(columnHeading.getNameText(), keys));
            }
            break;
        }
        case 4: {// decimal number
            if (columnHeading.filterHasValue()) {
                Object value = columnHeading.getFilterCriteria().getValue();
                switch (columnHeading.getFilterCriteria().getExpression()) {
                case EQ: {
                    criteria.add(Restrictions.eq(columnHeading.getNameText(), value));
                    break;
                }
                case NOT_EQ: {
                    criteria.add(Restrictions.not(Restrictions.eq(columnHeading.getName().getText(), value)));
                    break;
                }
                case GT: {
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    break;
                }
                case LT: {
                    criteria.add(Restrictions.lt(columnHeading.getNameText(), value));
                    break;
                }
                case BETWEEN: {
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    criteria.add(Restrictions.lt(columnHeading.getNameText(),
                            columnHeading.getFilterCriteria().getValue2()));
                    break;
                }
                default:
                }
            }
            break;
        }
        case 6: {// date
            if (columnHeading.filterHasValue()) {
                Object value = columnHeading.getFilterCriteria().getValue();
                switch (columnHeading.getFilterCriteria().getExpression()) {
                case EQ:
                    criteria.add(Restrictions.eq(columnHeading.getNameText(), value));
                    break;
                case NOT_EQ:
                    criteria.add(Restrictions.not(Restrictions.eq(columnHeading.getNameText(), value)));
                    break;
                case GT:
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    break;
                case LT:
                    criteria.add(Restrictions.lt(columnHeading.getNameText(), value));
                    break;
                case BETWEEN:
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    criteria.add(Restrictions.lt(columnHeading.getNameText(),
                            columnHeading.getFilterCriteria().getValue2()));
                    break;
                default:
                }
            }
            break;
        }
        case 5: {// free text
            if (columnHeading.filterHasValue()) {
                criteria.add(Restrictions.ilike(columnHeading.getNameText(),
                        (String) columnHeading.getFilterCriteria().getValue(), MatchMode.ANYWHERE));
            }
            break;
        }
        default:
            throw new RuntimeException("Unknown Column Heading " + columnHeading.getName());
        }
    } else { // this is not a custom field but one of the "built-in" columns
        switch (columnHeading.getName()) {
        case ID: {
            if (columnHeading.filterHasValue()) {
                // should never come here for criteria: see ItemSearch#getRefId()
                throw new RuntimeException("should not come here for 'id'");
            }
            break;
        }
        case SUMMARY: {
            if (columnHeading.filterHasValue()) {
                criteria.add(Restrictions.ilike(columnHeading.getNameText(),
                        (String) columnHeading.getFilterCriteria().getValue(), MatchMode.ANYWHERE));
            }
            break;
        }
        case DETAIL: {
            // do nothing, 'detail' already processed, see: ItemSearch#getSearchText()
            break;
        }
        case STATUS: {
            if (columnHeading.filterHasValueList()) {
                criteria.add(Restrictions.in(columnHeading.getNameText(),
                        columnHeading.getFilterCriteria().getValues()));
            }
            break;
        }
        case ASSIGNED_TO:
        case LOGGED_BY: {
            if (columnHeading.filterHasValueList()) {
                criteria.add(Restrictions.in(columnHeading.getNameText(),
                        columnHeading.getFilterCriteria().getValues()));
            }
            break;
        }
        case TIME_STAMP: {
            if (columnHeading.filterHasValue()) {
                Object value = columnHeading.getFilterCriteria().getValue();
                switch (columnHeading.getFilterCriteria().getExpression()) {
                case GT:
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    break;
                case LT:
                    criteria.add(Restrictions.lt(columnHeading.getNameText(), value));
                    break;
                case BETWEEN:
                    criteria.add(Restrictions.gt(columnHeading.getNameText(), value));
                    criteria.add(Restrictions.lt(columnHeading.getNameText(),
                            columnHeading.getFilterCriteria().getValue2()));
                    break;
                default:
                }
            }
            break;
        }
        case SPACE: {
            // already handled space as special case, see ItemSearch#getSelectedSpaces()
            break;
        }
        default:
            throw new RuntimeException("Unknown Column Heading " + columnHeading.getName());
        }
    }

}