Search in sources :

Example 16 with NumberAttribute

use of com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute in project entando-core by entando.

the class UserFilterOptionBean method extractFilter.

public SearchEngineFilter extractFilter() {
    if (null == this.getFormFieldValues()) {
        return null;
    }
    SearchEngineFilter filter = null;
    String value0 = this.getFormValue(0);
    String value1 = this.getFormValue(1);
    if (!this.isAttributeFilter()) {
        if (this.getKey().equals(KEY_FULLTEXT) && !StringUtils.isEmpty(value0)) {
            // String[] fieldsSuffix = {"", "_option"};
            filter = new SearchEngineFilter(this.getCurrentLang().getCode(), value0, this.getOption(value1));
            String attachOption = this.getFormValue(2);
            try {
                filter.setIncludeAttachments(Boolean.parseBoolean(attachOption));
            } catch (Exception e) {
            }
        } else if (this.getKey().equals(KEY_CATEGORY) && !StringUtils.isEmpty(value0)) {
            filter = new SearchEngineFilter(IIndexerDAO.CONTENT_CATEGORY_FIELD_NAME, value0, SearchEngineFilter.TextSearchOption.EXACT);
        }
    } else {
        AttributeInterface attribute = this.getAttribute();
        if (attribute instanceof ITextAttribute && !StringUtils.isEmpty(value0)) {
            filter = new SearchEngineFilter(this.getIndexFieldName(), value0, SearchEngineFilter.TextSearchOption.EXACT);
        // String[] fieldsSuffix = {"_textFieldName"};
        } else if (attribute instanceof DateAttribute && (!StringUtils.isEmpty(value0) || !StringUtils.isEmpty(value1))) {
            Date big0 = null;
            try {
                big0 = DateConverter.parseDate(value0, this.getDateFormat());
            } catch (Exception e) {
            }
            Date big1 = null;
            try {
                big1 = DateConverter.parseDate(value1, this.getDateFormat());
            } catch (Exception e) {
            }
            // String[] fieldsSuffix = {"_dateStartFieldName", "_dateEndFieldName"};
            filter = new SearchEngineFilter(this.getIndexFieldName(), big0, big1);
        } else if (attribute instanceof BooleanAttribute && (!StringUtils.isEmpty(value0) && !StringUtils.isEmpty(value1))) {
            filter = new SearchEngineFilter(this.getIndexFieldName(), value0, SearchEngineFilter.TextSearchOption.EXACT);
        // String[] fieldsSuffix = {"_booleanFieldName", "_booleanFieldName_ignore", "_booleanFieldName_control"};
        } else if (attribute instanceof NumberAttribute && (!StringUtils.isEmpty(value0) || !StringUtils.isEmpty(value1))) {
            // String[] fieldsSuffix = {"_numberStartFieldName", "_numberEndFieldName"};
            BigDecimal big0 = null;
            try {
                big0 = new BigDecimal(value0);
            } catch (Exception e) {
            }
            BigDecimal big1 = null;
            try {
                big1 = new BigDecimal(value1);
            } catch (Exception e) {
            }
            filter = new SearchEngineFilter(this.getIndexFieldName(), big0, big1);
        }
    }
    return filter;
}
Also used : SearchEngineFilter(org.entando.entando.aps.system.services.searchengine.SearchEngineFilter) ITextAttribute(com.agiletec.aps.system.common.entity.model.attribute.ITextAttribute) BooleanAttribute(com.agiletec.aps.system.common.entity.model.attribute.BooleanAttribute) NumberAttribute(com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute) ApsSystemException(com.agiletec.aps.system.exception.ApsSystemException) AttributeInterface(com.agiletec.aps.system.common.entity.model.attribute.AttributeInterface) Date(java.util.Date) BigDecimal(java.math.BigDecimal) DateAttribute(com.agiletec.aps.system.common.entity.model.attribute.DateAttribute)

Example 17 with NumberAttribute

use of com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute in project entando-core by entando.

the class UserFilterOptionBean method getEntityFilter.

public EntitySearchFilter getEntityFilter() throws ApsSystemException {
    EntitySearchFilter filter = null;
    try {
        if (!this.isAttributeFilter() || null == this.getFormFieldValues()) {
            return null;
        }
        AttributeInterface attribute = this.getAttribute();
        if (attribute instanceof ITextAttribute) {
            String text = this.getFormFieldValues().get(this.getFormFieldNames()[0]);
            filter = new EntitySearchFilter(attribute.getName(), true, text, true);
            if (attribute.isMultilingual()) {
                filter.setLangCode(this.getCurrentLang().getCode());
            }
        } else if (attribute instanceof DateAttribute) {
            String start = this.getFormFieldValues().get(this.getFormFieldNames()[0]);
            String end = this.getFormFieldValues().get(this.getFormFieldNames()[1]);
            Date startDate = DateConverter.parseDate(start, this.getDateFormat());
            Date endDate = DateConverter.parseDate(end, this.getDateFormat());
            filter = new EntitySearchFilter(attribute.getName(), true, startDate, endDate);
        } else if (attribute instanceof BooleanAttribute) {
            String value = this.getFormFieldValues().get(this.getFormFieldNames()[0]);
            String ignore = this.getFormFieldValues().get(this.getFormFieldNames()[1]);
            if (null != ignore) {
                return null;
            } else if (null == value || value.equals("both")) {
                // special option for three state Attribute
                filter = new EntitySearchFilter(attribute.getName(), true);
                filter.setNullOption(true);
            } else {
                filter = new EntitySearchFilter(attribute.getName(), true, value, false);
            }
        } else if (attribute instanceof NumberAttribute) {
            String start = this.getFormFieldValues().get(this.getFormFieldNames()[0]);
            String end = this.getFormFieldValues().get(this.getFormFieldNames()[1]);
            BigDecimal startNumber = null;
            try {
                Integer startNumberInt = Integer.parseInt(start);
                startNumber = new BigDecimal(startNumberInt);
            } catch (Throwable t) {
            }
            BigDecimal endNumber = null;
            try {
                Integer endNumberInt = Integer.parseInt(end);
                endNumber = new BigDecimal(endNumberInt);
            } catch (Throwable t) {
            }
            filter = new EntitySearchFilter(attribute.getName(), true, startNumber, endNumber);
        }
    } catch (Throwable t) {
        _logger.error("Error extracting entity search filters", t);
        throw new ApsSystemException("Error extracting entity search filters", t);
    }
    return filter;
}
Also used : ITextAttribute(com.agiletec.aps.system.common.entity.model.attribute.ITextAttribute) BooleanAttribute(com.agiletec.aps.system.common.entity.model.attribute.BooleanAttribute) NumberAttribute(com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute) ApsSystemException(com.agiletec.aps.system.exception.ApsSystemException) EntitySearchFilter(com.agiletec.aps.system.common.entity.model.EntitySearchFilter) AttributeInterface(com.agiletec.aps.system.common.entity.model.attribute.AttributeInterface) Date(java.util.Date) BigDecimal(java.math.BigDecimal) DateAttribute(com.agiletec.aps.system.common.entity.model.attribute.DateAttribute)

Example 18 with NumberAttribute

use of com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute in project entando-core by entando.

the class UserFilterOptionBean method checkRange.

private void checkRange(String[] formFieldNames) {
    if (!this.isAttributeFilter() || null != this.getFormFieldErrors() || null == this.getFormFieldValues() || this.getFormFieldValues().size() < 2)
        return;
    boolean check = false;
    if (this.getAttribute() instanceof DateAttribute) {
        Date start = DateConverter.parseDate(this.getFormFieldValues().get(formFieldNames[0]), this.getDateFormat());
        Date end = DateConverter.parseDate(this.getFormFieldValues().get(formFieldNames[1]), this.getDateFormat());
        check = (!start.equals(end) && start.after(end));
    } else if (this.getAttribute() instanceof NumberAttribute) {
        Integer start = Integer.parseInt(this.getFormFieldValues().get(formFieldNames[0]));
        Integer end = Integer.parseInt(this.getFormFieldValues().get(formFieldNames[1]));
        check = (!start.equals(end) && start.intValue() > end.intValue());
    }
    if (check) {
        this.setFormFieldErrors(new HashMap<String, AttributeFormFieldError>(2));
        AttributeFormFieldError error = new AttributeFormFieldError(this.getAttribute().getName(), formFieldNames[1], AttributeFormFieldError.INVALID_RANGE_KEY, null);
        this.getFormFieldErrors().put(formFieldNames[1], error);
    }
}
Also used : NumberAttribute(com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute) Date(java.util.Date) DateAttribute(com.agiletec.aps.system.common.entity.model.attribute.DateAttribute)

Example 19 with NumberAttribute

use of com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute in project entando-core by entando.

the class NumberAttributeHandler method endNumber.

private void endNumber(StringBuffer textBuffer) {
    if (null != textBuffer && null != this.getCurrentAttr()) {
        String bigDecimalString = textBuffer.toString();
        BigDecimal number = new BigDecimal(bigDecimalString);
        ((NumberAttribute) this.getCurrentAttr()).setValue(number);
    }
}
Also used : NumberAttribute(com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute) BigDecimal(java.math.BigDecimal)

Example 20 with NumberAttribute

use of com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute in project entando-core by entando.

the class EntitySearchFilter method getInstance.

public static EntitySearchFilter getInstance(IApsEntity prototype, Properties props) {
    EntitySearchFilter filter = null;
    try {
        String key = props.getProperty(KEY_PARAM);
        String roleName = props.getProperty(ROLE_PARAM);
        if (null == key && null == roleName) {
            return null;
        }
        boolean isAttributeFilter = Boolean.parseBoolean(props.getProperty(FILTER_TYPE_PARAM));
        filter = new EntitySearchFilter();
        boolean isDateAttribute = false;
        if (!isAttributeFilter) {
            filter.setKey(key);
            String dataType = props.getProperty(DATA_TYPE_PARAM);
            if (null == dataType) {
                dataType = DATA_TYPE_STRING;
            }
            setValues(filter, props, dataType);
        } else {
            AttributeInterface attr = null;
            if (null != key) {
                attr = (AttributeInterface) prototype.getAttribute(key);
                filter.setKey(key);
            } else {
                attr = (AttributeInterface) prototype.getAttributeByRole(roleName);
                filter.setRoleName(roleName);
            }
            filter.setAttributeFilter(true);
            if (null != attr) {
                String dataType = null;
                if (attr instanceof DateAttribute) {
                    dataType = DATA_TYPE_DATE;
                    isDateAttribute = true;
                } else if (attr instanceof ITextAttribute || attr instanceof BooleanAttribute) {
                    dataType = DATA_TYPE_STRING;
                } else if (attr instanceof NumberAttribute) {
                    dataType = DATA_TYPE_NUMBER;
                }
                setValues(filter, props, dataType);
            } else
                throw new ApsSystemException("ERROR: Entity type '" + prototype.getTypeCode() + "' and attribute '" + key + "' not recognized");
        }
        if (isDateAttribute) {
            String valueDateDelay = props.getProperty(EntitySearchFilter.VALUE_DATE_DELAY_PARAM);
            filter.setValueDateDelay(null != valueDateDelay ? Integer.valueOf(valueDateDelay) : null);
            String endDateDelay = props.getProperty(EntitySearchFilter.END_DATE_DELAY_PARAM);
            filter.setEndDateDelay(null != endDateDelay ? Integer.valueOf(endDateDelay) : null);
            String startDateDelay = props.getProperty(EntitySearchFilter.START_DATE_DELAY_PARAM);
            filter.setStartDateDelay(null != startDateDelay ? Integer.valueOf(startDateDelay) : null);
        }
        String order = props.getProperty(EntitySearchFilter.ORDER_PARAM);
        filter.setOrder(order);
    } catch (ApsSystemException | NumberFormatException t) {
        _logger.error("Error on creation of filter instance", t);
        throw new RuntimeException("Error on creation of filter instance", t);
    }
    return filter;
}
Also used : ITextAttribute(com.agiletec.aps.system.common.entity.model.attribute.ITextAttribute) BooleanAttribute(com.agiletec.aps.system.common.entity.model.attribute.BooleanAttribute) NumberAttribute(com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute) ApsSystemException(com.agiletec.aps.system.exception.ApsSystemException) AttributeInterface(com.agiletec.aps.system.common.entity.model.attribute.AttributeInterface) DateAttribute(com.agiletec.aps.system.common.entity.model.attribute.DateAttribute)

Aggregations

NumberAttribute (com.agiletec.aps.system.common.entity.model.attribute.NumberAttribute)20 DateAttribute (com.agiletec.aps.system.common.entity.model.attribute.DateAttribute)17 AttributeInterface (com.agiletec.aps.system.common.entity.model.attribute.AttributeInterface)12 BooleanAttribute (com.agiletec.aps.system.common.entity.model.attribute.BooleanAttribute)10 ITextAttribute (com.agiletec.aps.system.common.entity.model.attribute.ITextAttribute)10 ApsSystemException (com.agiletec.aps.system.exception.ApsSystemException)7 BigDecimal (java.math.BigDecimal)7 Date (java.util.Date)7 EnumeratorAttribute (com.agiletec.aps.system.common.entity.model.attribute.EnumeratorAttribute)4 EntitySearchFilter (com.agiletec.aps.system.common.entity.model.EntitySearchFilter)3 DateAttributeValidationRules (com.agiletec.aps.system.common.entity.model.attribute.util.DateAttributeValidationRules)3 IAttributeValidationRules (com.agiletec.aps.system.common.entity.model.attribute.util.IAttributeValidationRules)3 NumberAttributeValidationRules (com.agiletec.aps.system.common.entity.model.attribute.util.NumberAttributeValidationRules)3 TextAttributeValidationRules (com.agiletec.aps.system.common.entity.model.attribute.util.TextAttributeValidationRules)3 CheckBoxAttribute (com.agiletec.aps.system.common.entity.model.attribute.CheckBoxAttribute)2 CompositeAttribute (com.agiletec.aps.system.common.entity.model.attribute.CompositeAttribute)2 HypertextAttribute (com.agiletec.aps.system.common.entity.model.attribute.HypertextAttribute)2 ListAttribute (com.agiletec.aps.system.common.entity.model.attribute.ListAttribute)2 MonoListAttribute (com.agiletec.aps.system.common.entity.model.attribute.MonoListAttribute)2 MonoTextAttribute (com.agiletec.aps.system.common.entity.model.attribute.MonoTextAttribute)2