
com.hp.autonomy.searchcomponents.hod.search.fields.HodSearchResultDeserializer Maven / Gradle / Ivy
/*
* Copyright 2015 Hewlett-Packard Development Company, L.P.
* Licensed under the MIT License (the "License"); you may not use this file except in compliance with the License.
*/
package com.hp.autonomy.searchcomponents.hod.search.fields;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.hp.autonomy.frontend.configuration.ConfigService;
import com.hp.autonomy.hod.client.api.textindex.query.search.PromotionType;
import com.hp.autonomy.searchcomponents.core.config.FieldInfo;
import com.hp.autonomy.searchcomponents.core.config.FieldType;
import com.hp.autonomy.searchcomponents.core.config.FieldsInfo;
import com.hp.autonomy.searchcomponents.core.search.PromotionCategory;
import com.hp.autonomy.searchcomponents.hod.configuration.HodSearchCapable;
import com.hp.autonomy.searchcomponents.hod.search.HodSearchResult;
import org.apache.commons.lang.ArrayUtils;
import org.joda.time.DateTime;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.jackson.JsonComponent;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@JsonComponent
public class HodSearchResultDeserializer extends JsonDeserializer {
private final ConfigService extends HodSearchCapable> configService;
private final ObjectMapper objectMapper = new ObjectMapper();
@Autowired
public HodSearchResultDeserializer(final ConfigService extends HodSearchCapable> configService) {
this.configService = configService;
}
@Override
public HodSearchResult deserialize(final JsonParser jsonParser, final DeserializationContext deserializationContext) throws IOException {
final FieldsInfo fieldsInfo = configService.getConfig().getFieldsInfo();
final Map> fieldConfig = fieldsInfo.getFieldConfig();
final JsonNode node = jsonParser.getCodec().readTree(jsonParser);
final Map> fieldMap = new HashMap<>(fieldConfig.size());
for (final FieldInfo> fieldInfo : fieldConfig.values()) {
for (final String name : fieldInfo.getNames()) {
final String[] stringValues = parseAsStringArray(node, name);
if (ArrayUtils.isNotEmpty(stringValues)) {
final Collection
© 2015 - 2025 Weber Informatics LLC | Privacy Policy