List of usage examples for com.liferay.portal.kernel.search Field getValue
public String getValue()
From source file:com.liferay.alloy.mvc.BaseAlloyControllerImpl.java
License:Open Source License
protected JSONObject toJSONObject(Document document) { JSONObject jsonObject = JSONFactoryUtil.createJSONObject(); Map<String, Field> fields = document.getFields(); for (String key : fields.keySet()) { Field field = fields.get(key); jsonObject.put(field.getName(), field.getValue()); }/*from w ww . j a va 2 s . com*/ return jsonObject; }
From source file:com.liferay.journal.test.util.FieldValuesAssert.java
License:Open Source License
private static Map<String, String> _getFieldValues(String prefix, Document document) { Map<String, Field> fieldsMap = document.getFields(); Set<Entry<String, Field>> entrySet = fieldsMap.entrySet(); Stream<Entry<String, Field>> entries = entrySet.stream(); Stream<Entry<String, Field>> prefixedEntries = entries.filter(entry -> { String name = entry.getKey(); return name.startsWith(prefix); });/* w w w. j a va 2 s . c o m*/ return prefixedEntries.collect(Collectors.toMap(Map.Entry::getKey, entry -> { Field field = entry.getValue(); return field.getValue(); })); }
From source file:com.rivetlogic.portal.search.elasticsearch.indexer.document.ElasticsearchDocumentJSONBuilder.java
License:Open Source License
/** * Convert to json./* www.j ava2 s .c om*/ * * @param document * the document * @return the string */ public ElasticserachJSONDocument convertToJSON(final Document document) { Map<String, Field> fields = document.getFields(); ElasticserachJSONDocument elasticserachJSONDocument = new ElasticserachJSONDocument(); try { XContentBuilder contentBuilder = XContentFactory.jsonBuilder().startObject(); Field classnameField = document.getField(ElasticsearchIndexerConstants.ENTRY_CLASSNAME); String entryClassName = (classnameField == null) ? "" : classnameField.getValue(); /** * Handle all error scenarios prior to conversion */ if (isDocumentHidden(document)) { elasticserachJSONDocument.setError(true); elasticserachJSONDocument .setErrorMessage(ElasticserachJSONDocument.DocumentError.HIDDEN_DOCUMENT.toString()); return elasticserachJSONDocument; } if (entryClassName.isEmpty()) { elasticserachJSONDocument.setError(true); elasticserachJSONDocument .setErrorMessage(ElasticserachJSONDocument.DocumentError.MISSING_ENTRYCLASSNAME.toString()); return elasticserachJSONDocument; } if (isExcludedType(entryClassName)) { elasticserachJSONDocument.setError(true); elasticserachJSONDocument.setErrorMessage("Index Type:" + entryClassName + StringPool.COMMA + ElasticserachJSONDocument.DocumentError.EXCLUDED_TYPE.toString()); return elasticserachJSONDocument; } /** * To avoid multiple documents for versioned assets such as Journal articles, DL entry etc * the primary Id will be Indextype + Entry class PK. The primary Id is to maintain uniqueness * in ES server database and nothing to do with UID or is not used for any other purpose. */ Field classPKField = document.getField(ElasticsearchIndexerConstants.ENTRY_CLASSPK); String entryClassPK = (classPKField == null) ? "" : classPKField.getValue(); if (entryClassPK.isEmpty()) { elasticserachJSONDocument.setError(true); elasticserachJSONDocument .setErrorMessage(ElasticserachJSONDocument.DocumentError.MISSING_CLASSPK.toString()); return elasticserachJSONDocument; } /** Replace '.' by '_' in Entry class name,since '.' is not recommended by Elasticsearch in Index type */ String indexType = entryClassName.replace(StringPool.PERIOD, StringPool.UNDERLINE); elasticserachJSONDocument.setIndexType(indexType); elasticserachJSONDocument.setId(indexType + entryClassPK); /** Create a JSON string for remaining fields of document */ for (Iterator<Map.Entry<String, Field>> it = fields.entrySet().iterator(); it.hasNext();) { Map.Entry<String, Field> entry = it.next(); Field field = entry.getValue(); contentBuilder.field(entry.getKey(), field.getValue()); } contentBuilder.endObject(); elasticserachJSONDocument.setJsonDocument(contentBuilder.string()); if (_log.isDebugEnabled()) { _log.debug("Liferay Document converted to ESJSON document successfully:" + contentBuilder.string()); } } catch (IOException e) { _log.error("IO Error during converstion of Liferay Document to JSON format" + e.getMessage()); } return elasticserachJSONDocument; }
From source file:com.rivetlogic.portal.search.elasticsearch.indexer.document.ElasticsearchDocumentJSONBuilder.java
License:Open Source License
/** * Check if liferay Document is of type hidden. * * @param document the document/*from w w w .j ava2 s .c o m*/ * @return true, if is document hidden */ private boolean isDocumentHidden(Document document) { Field hiddenField = document.getField(ElasticsearchIndexerConstants.HIDDEN); String hiddenFlag = (hiddenField == null) ? "" : hiddenField.getValue(); if (StringPool.TRUE.equalsIgnoreCase(hiddenFlag)) { return true; } return false; }
From source file:com.rknowsys.portal.search.elastic.ElasticsearchIndexWriter.java
License:Open Source License
private String getElasticsearchDocument(Document document) throws IOException { XContentBuilder xContentBuilder = XContentFactory.jsonBuilder(); xContentBuilder.startObject();/*ww w. ja va 2 s . co m*/ Map<String, Field> fields = document.getFields(); for (Field field : fields.values()) { String name = field.getName(); if (!field.isLocalized()) { if (field.isNumeric()) { Class clazz = field.getNumericClass(); if (clazz.equals(Double.class)) { double[] values = GetterUtil.getDoubleValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else if (clazz.equals(Float.class)) { float[] values = GetterUtil.getFloatValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else if (clazz.equals(Integer.class)) { int[] values = GetterUtil.getIntegerValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } else { long[] values = GetterUtil.getLongValues(field.getValues()); if (values.length > 1) { xContentBuilder.field(name, values); } else { xContentBuilder.field(name, values[0]); } } } else { if (field.getValues().length > 1) { xContentBuilder.field(name, field.getValues()); } else { xContentBuilder.field(name, field.getValue()); } } } else { Map<Locale, String> localizedValues = field.getLocalizedValues(); for (Map.Entry<Locale, String> entry : localizedValues.entrySet()) { String value = entry.getValue(); if (Validator.isNull(value)) { continue; } Locale locale = entry.getKey(); String languageId = LocaleUtil.toLanguageId(locale); String defaultLanguageId = LocaleUtil.toLanguageId(LocaleUtil.getDefault()); if (languageId.equals(defaultLanguageId)) { xContentBuilder.field(name, value.trim()); } String localizedName = DocumentImpl.getLocalizedName(LocaleUtil.fromLanguageId(languageId), name); xContentBuilder.field(localizedName, value.trim()); } } } xContentBuilder.endObject(); return xContentBuilder.string(); }