/* * 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.frontend.find.idol.fields; import com.autonomy.aci.client.services.AciErrorException; import com.hp.autonomy.frontend.configuration.ConfigService; import com.hp.autonomy.frontend.find.core.configuration.FindConfig; import com.hp.autonomy.frontend.find.core.fields.FieldAndValueDetails; import com.hp.autonomy.frontend.find.core.fields.FieldComparatorFactory; import com.hp.autonomy.frontend.find.core.fields.FieldsController; import com.hp.autonomy.searchcomponents.core.fields.TagNameFactory; import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsRequest; import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsRequestBuilder; import com.hp.autonomy.searchcomponents.idol.fields.IdolFieldsService; import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricRequest; import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricRequestBuilder; import com.hp.autonomy.searchcomponents.idol.parametricvalues.IdolParametricValuesService; import com.hp.autonomy.searchcomponents.idol.search.IdolQueryRestrictions; import com.hp.autonomy.searchcomponents.idol.search.IdolQueryRestrictionsBuilder; import com.hp.autonomy.types.requests.idol.actions.tags.params.FieldTypeParam; import org.springframework.beans.factory.ObjectFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import java.util.Collection; import java.util.List; @Controller class IdolFieldsController extends FieldsController<IdolFieldsRequest, AciErrorException, IdolQueryRestrictions, IdolParametricRequest> { private final ObjectFactory<IdolFieldsRequestBuilder> fieldsRequestBuilderFactory; private final ObjectFactory<IdolQueryRestrictionsBuilder> queryRestrictionsBuilderFactory; @SuppressWarnings({"TypeMayBeWeakened", "ConstructorWithTooManyParameters"}) @Autowired IdolFieldsController( final IdolFieldsService fieldsService, final IdolParametricValuesService parametricValuesService, final ObjectFactory<IdolParametricRequestBuilder> parametricRequestBuilderFactory, final FieldComparatorFactory fieldComparatorFactory, final TagNameFactory tagNameFactory, final ConfigService<? extends FindConfig<?, ?>> configService, final ObjectFactory<IdolFieldsRequestBuilder> fieldsRequestBuilderFactory, final ObjectFactory<IdolQueryRestrictionsBuilder> queryRestrictionsBuilderFactory) { super(fieldsService, parametricValuesService, parametricRequestBuilderFactory, fieldComparatorFactory, tagNameFactory, configService); this.fieldsRequestBuilderFactory = fieldsRequestBuilderFactory; this.queryRestrictionsBuilderFactory = queryRestrictionsBuilderFactory; } @RequestMapping(value = GET_PARAMETRIC_FIELDS_PATH, method = RequestMethod.GET) @ResponseBody public List<FieldAndValueDetails> getParametricFields(@RequestParam(FIELD_TYPES_PARAM) final Collection<FieldTypeParam> fieldTypes) throws AciErrorException { return getParametricFields(fieldsRequestBuilderFactory.getObject() .fieldTypes(fieldTypes) .build()); } @Override protected IdolQueryRestrictions createValueDetailsQueryRestrictions(final IdolFieldsRequest request) { return queryRestrictionsBuilderFactory.getObject() .queryText("*") .build(); } }