package edu.mayo.cts2.framework.webapp.soap.endpoint.codesystem; import java.util.Collection; import java.util.HashSet; import java.util.Set; import org.apache.commons.collections.CollectionUtils; import org.springframework.ws.server.endpoint.annotation.Endpoint; import org.springframework.ws.server.endpoint.annotation.PayloadRoot; import org.springframework.ws.server.endpoint.annotation.RequestPayload; import org.springframework.ws.server.endpoint.annotation.ResponsePayload; import edu.mayo.cts2.framework.model.codesystem.CodeSystemCatalogEntryDirectory; import edu.mayo.cts2.framework.model.codesystem.CodeSystemCatalogEntrySummary; import edu.mayo.cts2.framework.model.command.Page; import edu.mayo.cts2.framework.model.command.ResolvedFilter; import edu.mayo.cts2.framework.model.command.ResolvedReadContext; import edu.mayo.cts2.framework.model.directory.DirectoryResult; import edu.mayo.cts2.framework.model.service.core.FilterComponent; import edu.mayo.cts2.framework.model.service.core.Query; import edu.mayo.cts2.framework.model.service.core.QueryControl; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetKnownProperty; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetKnownPropertyResponse; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetSupportedMatchAlgorithm; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetSupportedMatchAlgorithmResponse; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetSupportedModelAttribute; import edu.mayo.cts2.framework.model.wsdl.basequeryservice.GetSupportedModelAttributeResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Count; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.CountResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Difference; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.DifferenceResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.GetAllCodeSystems; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.GetAllCodeSystemsResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Intersect; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.IntersectResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Resolve; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.ResolveResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Restrict; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.RestrictResponse; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.Union; import edu.mayo.cts2.framework.model.wsdl.codesystemquery.UnionResponse; import edu.mayo.cts2.framework.service.profile.ResourceQuery; import edu.mayo.cts2.framework.service.profile.codesystem.CodeSystemQueryService; import edu.mayo.cts2.framework.webapp.soap.directoryuri.DirectoryUriUtils; import edu.mayo.cts2.framework.webapp.soap.directoryuri.SoapDirectoryUri; import edu.mayo.cts2.framework.webapp.soap.directoryuri.SoapDirectoryUriRequest; import edu.mayo.cts2.framework.webapp.soap.endpoint.AbstractQueryServiceEndpoint; import edu.mayo.cts2.framework.webapp.soap.resolver.FilterResolver; @Endpoint("CodeSystemCatalogQueryServicesEndpoint") public class CodeSystemCatalogQueryServicesEndpoint extends AbstractQueryServiceEndpoint { @Cts2Service private CodeSystemQueryService codeSystemQueryService; @PayloadRoot(localPart = "getAllCodeSystems", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public GetAllCodeSystemsResponse getAllCodeSystems(@RequestPayload final GetAllCodeSystems request) { GetAllCodeSystemsResponse response = new GetAllCodeSystemsResponse(); SoapDirectoryUriRequest<?> directoryUri = (SoapDirectoryUriRequest<?>) DirectoryUriUtils.buildSoapDirectoryUriRequest(0, null, null); response.setReturn(DirectoryUriUtils.serialize(directoryUri)); return response; } @PayloadRoot(localPart = "resolve", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public ResolveResponse resolve(@RequestPayload final Resolve request) { return this.doResolve(this.codeSystemQueryService, request, CodeSystemCatalogEntryDirectory.class, new ResponseBuilder<ResolveResponse, CodeSystemCatalogEntryDirectory>() { @Override public ResolveResponse buildResponse(CodeSystemCatalogEntryDirectory directory) { ResolveResponse response = new ResolveResponse(); response.setCodeSystemCatalogEntryDirectory(directory); return response; } }); } @PayloadRoot(localPart = "getSupportMatchAlgorithm", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public GetSupportedMatchAlgorithmResponse getSupportMatchAlgorithm(@RequestPayload GetSupportedMatchAlgorithm request) { GetSupportedMatchAlgorithmResponse response = new GetSupportedMatchAlgorithmResponse(); // response.setReturn(this.codeSystemQueryService.getSupportedMatchAlgorithms()); return response; } @PayloadRoot(localPart = "getSupportedModelAttribute", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public GetSupportedModelAttributeResponse getSupportedModelAttribute(@RequestPayload GetSupportedModelAttribute request) { GetSupportedModelAttributeResponse response = new GetSupportedModelAttributeResponse(); return response; } @PayloadRoot(localPart = "getKnownProperty", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public GetKnownPropertyResponse getKnownProperty(@RequestPayload GetKnownProperty request) { GetKnownPropertyResponse response = new GetKnownPropertyResponse(); return response; } @PayloadRoot(localPart = "count", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public CountResponse count(@RequestPayload Count request) { CountResponse response = new CountResponse(); return response; } @PayloadRoot(localPart = "difference", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public DifferenceResponse difference(@RequestPayload Difference request) { DifferenceResponse response = new DifferenceResponse(); return response; } @PayloadRoot(localPart = "intersect", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public IntersectResponse intersect(@RequestPayload Intersect request) { IntersectResponse response = new IntersectResponse(); return response; } @PayloadRoot(localPart = "restrict", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public RestrictResponse restrict(@RequestPayload Restrict request) { RestrictResponse response = new RestrictResponse(); return response; } @PayloadRoot(localPart = "union", namespace = CTS2_NAMESPACE_ROOT + "CodeSystemCatalogQueryServices") @ResponsePayload public UnionResponse union(@RequestPayload Union request) { UnionResponse response = new UnionResponse(); return response; } }