Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @ExtDirectMethod(value = ExtDirectMethodType.STORE_READ, group = "igvt")
- public List<DomainElement> getDomain(List<Long> attributeID, List<Long> cqlLayers, List<MetaFilter> cqlFilters, Long layerTreeId, boolean currentLayerTree)
- {
- if (layerTreeId != null && !currentLayerTree) {
- cqlLayers.clear();
- cqlFilters.clear();
- List<LayerTreeItem> layerTreeItems = getLayerTreeItemLeafs(layerTreeItemService.getLayerTreeItems(layerTreeId, false), new ArrayList<LayerTreeItem>());
- for (LayerTreeItem lti : layerTreeItems) {
- String filter = lti.getFilter();
- if (filter != null && filter != "") {
- if (filter.contains("=") || filter.contains("LIKE")) {
- List<MetaFilterElement> metaFilters = FilterConverter.parseFilterStringToMetaFilterElement(filter);
- MetaFilter mf = new MetaFilter();
- String logOperator = filter.contains("AND") ? "AND" : filter.contains("OR") ? "OR" : "";
- mf.setLogOperator(logOperator);
- mf.setElements(metaFilters);
- cqlFilters.add(mf);
- cqlLayers.add(lti.getFeatureClass().getId());
- }
- }
- }
- }
- Map<Long, List<MetaFilter>> cqlMetaFilter = FilterConverter.createFilterMap(cqlLayers, cqlFilters);
- List<DomainElement> outputDomain = new ArrayList<DomainElement>();
- if (attributeID!=null && attributeID.size()>0)
- {
- Set<Object> domain = new HashSet<Object>();
- //Set<Object> domain = customSearchService.getFeatureClassAttributeDomainByID(attributeID);
- //fallback in case this attribute is not listed in the fast table
- if(domain.size()==0)
- {
- for(long id : attributeID)
- {
- FeatureClassAttribute fca = featureClassAttributeService.getFeatureClassAttributeBasicInfo(id);
- FeatureClass fc = fca.getFeatureClass();
- //[1.CQL]prepare CQL MetaFilter map for all layers
- StringBuilder nf = new StringBuilder();
- nf = FilterConverter.parseFilterMap(fc, cqlMetaFilter, nf);
- List<Object> attributeDomain = featureClassAttributeDomainService.getAttributeDomainValues(fca, nf.toString());
- domain.addAll(attributeDomain);
- }
- }
- int i=0;
- for(Object value: domain)
- {
- outputDomain.add(new DomainElement(value, i));
- i++;
- }
- }
- return outputDomain;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement