\r
package eu.etaxonomy.cdm.remote.controller;\r
\r
+import java.awt.Color;\r
import java.io.IOException;\r
import java.util.Arrays;\r
import java.util.Collection;\r
import java.util.EnumSet;\r
import java.util.HashSet;\r
import java.util.List;\r
+import java.util.Map;\r
import java.util.Set;\r
import java.util.UUID;\r
\r
import javax.servlet.http.HttpServletRequest;\r
import javax.servlet.http.HttpServletResponse;\r
\r
+import org.codehaus.jackson.JsonParseException;\r
+import org.codehaus.jackson.map.JsonMappingException;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.stereotype.Controller;\r
import org.springframework.transaction.annotation.Transactional;\r
import org.springframework.web.bind.annotation.RequestParam;\r
import org.springframework.web.servlet.ModelAndView;\r
\r
+import com.wordnik.swagger.annotations.Api;\r
+\r
import eu.etaxonomy.cdm.api.service.DistributionTree;\r
import eu.etaxonomy.cdm.api.service.IDescriptionService;\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
import eu.etaxonomy.cdm.api.service.dto.DistributionInfoDTO.InfoPart;\r
import eu.etaxonomy.cdm.api.service.pager.Pager;\r
import eu.etaxonomy.cdm.api.utility.DescriptionUtility;\r
+import eu.etaxonomy.cdm.ext.geo.CondensedDistributionRecipe;\r
+import eu.etaxonomy.cdm.ext.geo.EditGeoServiceUtilities;\r
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;\r
import eu.etaxonomy.cdm.model.common.Annotation;\r
import eu.etaxonomy.cdm.model.common.Marker;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
import eu.etaxonomy.cdm.model.description.DescriptionBase;\r
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;\r
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;\r
import eu.etaxonomy.cdm.model.description.TaxonDescription;\r
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
import eu.etaxonomy.cdm.remote.editor.DefinedTermBaseList;\r
*\r
*/\r
@Controller\r
+@Api("portal_description")\r
@Transactional(readOnly=true)\r
@RequestMapping(value = {\r
"/portal/description/{uuid}",\r
"elements.$",\r
"elements.multilanguageText.*",\r
"elements.annotations",\r
- "elements.sources.citation.authorTeam.$",\r
+ "elements.sources.citation.authorship.$",\r
"elements.sources.nameUsedInSource",\r
"elements.area.level",\r
"elements.modifyingText",\r
"elements.stateData.*",\r
+ "elements.statisticalValues.*",\r
+ "elements.unit",\r
"elements.media",\r
+ "elements.kindOfUnit"\r
+\r
});\r
\r
protected static final List<String> ORDERED_DISTRIBUTION_INIT_STRATEGY = Arrays.asList(new String []{\r
"elements.$",\r
"elements.annotations",\r
"elements.markers",\r
- "elements.sources.citation.authorTeam.$",\r
+ "elements.sources.citation.authorship.$",\r
"elements.sources.nameUsedInSource",\r
"elements.area.level",\r
});\r
\r
protected static final List<String> DISTRIBUTION_INFO_INIT_STRATEGY = Arrays.asList(new String []{\r
- "sources.citation.authorTeam.$",\r
- "sources.nameUsedInSource"\r
+ "sources.citation.authorship.$",\r
+ "sources.nameUsedInSource",\r
+ "annotations"\r
});\r
\r
@Autowired\r
this.service = service;\r
}\r
\r
- @RequestMapping(value = "/portal/descriptionElement/{descriptionelement_uuid}/annotation", method = RequestMethod.GET)\r
+ @RequestMapping(value = "//portal/descriptionElement/{descriptionelement_uuid}/annotation", method = RequestMethod.GET) // mapped as absolute path, see CdmAntPathMatcher\r
public Pager<Annotation> getAnnotations(\r
@PathVariable("descriptionelement_uuid") UUID uuid,\r
HttpServletRequest request,\r
* @param response\r
* @return\r
*/\r
- @RequestMapping(value = "/portal/description/{uuid_list}/DistributionTree", method = RequestMethod.GET)\r
+ @RequestMapping(value = "//portal/description/{uuid_list}/DistributionTree", method = RequestMethod.GET) // mapped as absolute path, see CdmAntPathMatcher\r
public DistributionTree doGetOrderedDistributionsB(\r
@PathVariable("uuid_list") UuidList descriptionUuidList,\r
@RequestParam(value = "subAreaPreference", required = false) boolean subAreaPreference,\r
/**\r
* @param taxonUuid\r
* @param parts\r
- * possible values: condensedStatusString, tree, mapUriParams,\r
+ * possible values: condensedStatus, tree, mapUriParams,\r
* elements,\r
* @param subAreaPreference\r
* @param statusOrderPreference\r
* @param hideMarkedAreasList\r
+ * @param recipe\r
+ * The recipe for creating the condensed distribution status\r
* @param omitLevels\r
* @param request\r
* @param response\r
* @return\r
+ * @throws IOException\r
+ * @throws JsonMappingException\r
+ * @throws JsonParseException\r
*/\r
- @RequestMapping(value = "/portal/description/distributionInfoFor/{uuid}", method = RequestMethod.GET)\r
+ @RequestMapping(value = "//portal/description/distributionInfoFor/{uuid}", method = RequestMethod.GET) // mapped as absolute path, see CdmAntPathMatcher\r
public ModelAndView doGetDistributionInfo(\r
@PathVariable("uuid") UUID taxonUuid,\r
@RequestParam("part") Set<InfoPart> partSet,\r
@RequestParam(value = "subAreaPreference", required = false) boolean subAreaPreference,\r
@RequestParam(value = "statusOrderPreference", required = false) boolean statusOrderPreference,\r
@RequestParam(value = "hideMarkedAreas", required = false) DefinedTermBaseList<MarkerType> hideMarkedAreasList,\r
+ @RequestParam(value = "fallbackAreaMarkerType", required = false) MarkerType fallbackAreaMarkerType,\r
@RequestParam(value = "omitLevels", required = false) Set<NamedAreaLevel> omitLevels,\r
+ @RequestParam(value = "statusColors", required = false) String statusColorsString,\r
+ @RequestParam(value = "recipe", required = false, defaultValue="EuroPlusMed") CondensedDistributionRecipe recipe,\r
+\r
HttpServletRequest request,\r
- HttpServletResponse response) {\r
+ HttpServletResponse response) throws JsonParseException, JsonMappingException, IOException {\r
\r
- logger.debug("doGetDistributionInfo() - " + requestPathAndQuery(request));\r
+ logger.info("doGetDistributionInfo() - " + requestPathAndQuery(request));\r
\r
ModelAndView mv = new ModelAndView();\r
\r
\r
EnumSet<InfoPart> parts = EnumSet.copyOf(partSet);\r
\r
+ Map<PresenceAbsenceTerm, Color> presenceAbsenceTermColors = EditGeoServiceUtilities.buildStatusColorMap(statusColorsString, termService);\r
+\r
DistributionInfoDTO dto = geoService.composeDistributionInfoFor(parts, taxonUuid, subAreaPreference, statusOrderPreference,\r
- hideMarkedAreas, omitLevels, LocaleContext.getLanguages(), DISTRIBUTION_INFO_INIT_STRATEGY);\r
+ hideMarkedAreas, fallbackAreaMarkerType, omitLevels, presenceAbsenceTermColors, LocaleContext.getLanguages(), DISTRIBUTION_INFO_INIT_STRATEGY, recipe);\r
\r
mv.addObject(dto);\r
\r