package eu.etaxonomy.cdm.remote.controller;
+import java.awt.Color;
import java.io.IOException;
import java.util.Arrays;
import java.util.EnumSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
import java.util.UUID;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.codehaus.jackson.JsonParseException;
+import org.codehaus.jackson.map.JsonMappingException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
+import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.dto.DistributionInfoDTO;
import eu.etaxonomy.cdm.api.service.dto.DistributionInfoDTO.InfoPart;
import eu.etaxonomy.cdm.api.service.pager.Pager;
+import eu.etaxonomy.cdm.ext.geo.EditGeoServiceUtilities;
import eu.etaxonomy.cdm.ext.geo.IEditGeoService;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.PresenceAbsenceTermBase;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TextData;
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
import eu.etaxonomy.cdm.remote.editor.DefinedTermBaseList;
import eu.etaxonomy.cdm.remote.editor.NamedAreaLevelPropertyEditor;
+import eu.etaxonomy.cdm.remote.editor.TermBaseListPropertyEditor;
import eu.etaxonomy.cdm.remote.editor.UUIDListPropertyEditor;
import eu.etaxonomy.cdm.remote.editor.UuidList;
import eu.etaxonomy.cdm.remote.l10n.LocaleContext;
@Autowired
private IFeatureTreeService featureTreeService;
+ @Autowired
+ private ITermService termService;
+
+
@Autowired
private IEditGeoService geoService;
super.initBinder(binder);
binder.registerCustomEditor(UuidList.class, new UUIDListPropertyEditor());
binder.registerCustomEditor(NamedAreaLevel.class, new NamedAreaLevelPropertyEditor());
+ binder.registerCustomEditor(DefinedTermBaseList.class, new TermBaseListPropertyEditor<MarkerType>(termService));
}
/* (non-Javadoc)
* @param request
* @param response
* @return
+ * @throws IOException
+ * @throws JsonMappingException
+ * @throws JsonParseException
*/
@RequestMapping(value = "/description/distributionInfoFor/{uuid}", method = RequestMethod.GET)
public ModelAndView doGetDistributionInfo(
@RequestParam(value = "statusOrderPreference", required = false) boolean statusOrderPreference,
@RequestParam(value = "hideMarkedAreas", required = false) DefinedTermBaseList<MarkerType> hideMarkedAreasList,
@RequestParam(value = "omitLevels", required = false) Set<NamedAreaLevel> omitLevels,
+ @RequestParam(value = "statusColors", required = false) String statusColorsString,
HttpServletRequest request,
- HttpServletResponse response) {
+ HttpServletResponse response) throws JsonParseException, JsonMappingException, IOException {
logger.debug("doGetDistributionInfo() - " + requestPathAndQuery(request));
EnumSet<InfoPart> parts = EnumSet.copyOf(partSet);
+ Map<PresenceAbsenceTermBase<?>, Color> presenceAbsenceTermColors = EditGeoServiceUtilities.buildStatusColorMap(statusColorsString, termService);
+
DistributionInfoDTO dto = geoService.composeDistributionInfoFor(parts, taxonUuid, subAreaPreference, statusOrderPreference,
- hideMarkedAreas, omitLevels, LocaleContext.getLanguages());
+ hideMarkedAreas, omitLevels, presenceAbsenceTermColors, LocaleContext.getLanguages(), getInitializationStrategy());
mv.addObject(dto);
return mv;
}
+
}
\ No newline at end of file