Revision 65b68496
Added by Andreas Müller over 7 years ago
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
fix #6072 Implement findIdentifiableEntityByMarkers