Project

General

Profile

« Previous | Next » 

Revision 65b68496

Added by Andreas Müller over 7 years ago

fix #6072 Implement findIdentifiableEntityByMarkers

View differences:

cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/IdentifiableListController.java
26 26
import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
27 27
import eu.etaxonomy.cdm.api.service.ITermService;
28 28
import eu.etaxonomy.cdm.api.service.dto.FindByIdentifierDTO;
29
import eu.etaxonomy.cdm.api.service.dto.FindByMarkerDTO;
29 30
import eu.etaxonomy.cdm.api.service.pager.Pager;
30 31
import eu.etaxonomy.cdm.model.common.CdmBase;
31 32
import eu.etaxonomy.cdm.model.common.DefinedTerm;
33
import eu.etaxonomy.cdm.model.common.DefinedTermBase;
32 34
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
35
import eu.etaxonomy.cdm.model.common.MarkerType;
33 36
import eu.etaxonomy.cdm.persistence.query.MatchMode;
34 37
import eu.etaxonomy.cdm.remote.controller.util.PagerParameters;
35 38
import eu.etaxonomy.cdm.remote.editor.MatchModePropertyEditor;
......
41 44
 */
42 45
public abstract class IdentifiableListController <T extends IdentifiableEntity, SERVICE extends IIdentifiableEntityService<T>> extends BaseListController<T,SERVICE>  {
43 46

  
44
	
47

  
45 48
    @InitBinder
46 49
    @Override
47 50
    public void initBinder(WebDataBinder binder) {
48 51
        super.initBinder(binder);
49 52
        binder.registerCustomEditor(MatchMode.class, new MatchModePropertyEditor());
50 53
    }
51
	
54

  
52 55
	@Autowired
53
	private ITermService termservice;
56
	private ITermService termService;
54 57

  
55 58
    /**
56 59
     * Find IdentifiableEntity objects by name
......
98 101

  
99 102
    /**
100 103
     * list IdentifiableEntity objects by identifiers
101
     * 
104
     *
102 105
     * @param type
103 106
     * @param identifierType
104 107
     * @param identifier
......
129 132
    	if(StringUtils.isNotBlank(identifierType)){
130 133
    		identifierType = StringUtils.trim(identifierType);
131 134
    		UUID identifierTypeUUID = UUID.fromString(identifierType);
132
    		definedTerm = CdmBase.deproxy(termservice.find(identifierTypeUUID), DefinedTerm.class);
135
    		definedTerm = CdmBase.deproxy(termService.find(identifierTypeUUID), DefinedTerm.class);
133 136
    	}
134
    	
137

  
135 138
        logger.info("doFind : " + request.getRequestURI() + "?" + request.getQueryString() );
136 139

  
137 140
        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber).normalizeAndValidate(response);
......
140 143
        boolean includeCdmEntity = includeEntity == null ||  includeEntity == true ? true : false;
141 144
        return service.findByIdentifier(type, identifier, definedTerm , matchMode, includeCdmEntity, pagerParams.getPageSize(), pagerParams.getPageIndex(), initializationStrategy);
142 145
    }
143
    
144
    
146

  
147
    /**
148
     * List identifiable entities by markers
149
     *
150
     * @param type
151
     * @param markerType
152
     * @param value
153
     * @param pageNumber
154
     * @param pageSize
155
     * @param request
156
     * @param response
157
     * @return
158
     * @see IdentifiableListController#doFindByIdentifier(Class, String, String, Integer, Integer, MatchMode, Boolean, HttpServletRequest, HttpServletResponse)
159
     * @throws IOException
160
     */
161
    @RequestMapping(method = RequestMethod.GET, value={"findByMarker"}, params={"subtree"})
162
    public Pager<FindByMarkerDTO<T>> doFindByMarker(
163
            @RequestParam(value = "class", required = false) Class<T> type,
164
            @RequestParam(value = "markerType", required = true) UUID markerTypeUuid,
165
            @RequestParam(value = "value", required = false) Boolean value,
166
            @RequestParam(value = "pageNumber", required = false) Integer pageNumber,
167
            @RequestParam(value = "pageSize", required = false) Integer pageSize,
168
            @RequestParam(value = "includeEntity", required = false, defaultValue="true") Boolean includeEntity, //TODO true only for debuging
169
            HttpServletRequest request,
170
            HttpServletResponse response
171
            )
172
            throws IOException {
173

  
174
        MarkerType markerType = null;
175
        if(markerTypeUuid != null){
176
            DefinedTermBase<?> term = CdmBase.deproxy(termService.find(markerTypeUuid), MarkerType.class);
177
            if (term != null && term.isInstanceOf(MarkerType.class)){
178
                markerType = CdmBase.deproxy(term, MarkerType.class);
179
            }
180
        }
181

  
182
        if (logger.isDebugEnabled()){logger.info("doFindByMarker [subtreeUuid]  : " + request.getRequestURI() + "?" + request.getQueryString() );}
183

  
184
        PagerParameters pagerParams = new PagerParameters(pageSize, pageNumber).normalizeAndValidate(response);
185

  
186
        return service.findByMarker(type, markerType, value, includeEntity, pagerParams.getPageSize(), pagerParams.getPageIndex(), initializationStrategy);
187
    }
188

  
189

  
145 190
}

Also available in: Unified diff