protected static String subClauseQueryElement(DocumentModel model, PredicateDefinition predicateDescriptor) { PredicateFieldDefinition[] values = predicateDescriptor.getValues(); if (values == null || values.length != 1) { throw new NuxeoException("subClause predicate needs exactly one field"); } PredicateFieldDefinition fieldDescriptor = values[0]; if (!getFieldType(model, fieldDescriptor).equals("string")) { if (fieldDescriptor.getXpath() != null) { throw new NuxeoException(String.format("type of field %s is not string", fieldDescriptor.getXpath())); } else { throw new NuxeoException(String.format("type of field %s.%s is not string", fieldDescriptor.getSchema(), fieldDescriptor.getName())); } } Object subclauseValue = getRawValue(model, fieldDescriptor); if (subclauseValue == null) { return ""; } return "(" + subclauseValue + ")"; }
/** * @since 5.6 */ @Override public PredicateDescriptor clone() { PredicateDescriptor clone = new PredicateDescriptor(); clone.parameter = parameter; clone.type = type; clone.operator = operator; clone.operatorField = operatorField; clone.operatorSchema = operatorSchema; clone.hint = hint; if (values != null) { clone.values = new PredicateFieldDefinition[values.length]; for (int i = 0; i < values.length; i++) { clone.values[i] = values[i].clone(); } } return clone; }
@SuppressWarnings("unchecked") @Override public List<String> getSelection() { if (selection == null) { PredicateFieldDefinition field = definition.getSearchField(); if (searchDocument != null) { // property must be nxs:stringList List<String> value = null; Object resolvedProperties = searchDocument.getProperty(field.getSchema(), field.getName()); if (resolvedProperties instanceof String[]) { value = Arrays.asList((String[]) resolvedProperties); } else if (resolvedProperties instanceof List<?>) { value = (List<String>) searchDocument.getProperty(field.getSchema(), field.getName()); } selection = value; } if (selection == null) { selection = Collections.<String> emptyList(); } } return selection; }
@SuppressWarnings("unchecked") public static Object getRawValue(DocumentModel model, PredicateFieldDefinition fieldDescriptor) { String xpath = fieldDescriptor.getXpath(); String schema = fieldDescriptor.getSchema(); String name = fieldDescriptor.getName(); try { if (xpath != null) { return model.getPropertyValue(xpath); } else if (schema == null) { return model.getPropertyValue(name); } else { return model.getProperty(schema, name); } } catch (PropertyNotFoundException e) { // fall back on named parameters if any Map<String, Object> params = (Map<String, Object>) model.getContextData( PageProviderService.NAMED_PARAMETERS); if (params != null) { if (xpath != null) { return params.get(xpath); } else { return params.get(name); } } } catch (PropertyException e) { return null; } return null; }
Object[] values = new Object[fieldDef.length]; for (int fidx = 0; fidx < fieldDef.length; fidx++) { if (fieldDef[fidx].getXpath() != null) { values[fidx] = model.getPropertyValue(fieldDef[fidx].getXpath()); } else { values[fidx] = model.getProperty(fieldDef[fidx].getSchema(), fieldDef[fidx].getName());
public static String getFieldType(DocumentModel model, PredicateFieldDefinition fieldDescriptor) { String xpath = fieldDescriptor.getXpath(); String schema = fieldDescriptor.getSchema(); String name = fieldDescriptor.getName(); try { SchemaManager typeManager = Framework.getService(SchemaManager.class);
Object[] val = new Object[fieldDef.length]; for (int fidx = 0; fidx < fieldDef.length; fidx++) { if (fieldDef[fidx].getXpath() != null) { val[fidx] = searchDocumentModel.getPropertyValue(fieldDef[fidx].getXpath()); } else { val[fidx] = searchDocumentModel.getProperty(fieldDef[fidx].getSchema(), fieldDef[fidx].getName());