package edu.mayo.cts2.framework.webapp.soap.endpoint.statement;
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.core.FormatReference;
import edu.mayo.cts2.framework.model.service.core.types.ImplementationProfile;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetDefaultFormat;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetDefaultFormatResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetImplementationType;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetImplementationTypeResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetKnownNamespace;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetKnownNamespaceResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceDescription;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceDescriptionResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceName;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceNameResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceProvider;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceProviderResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceVersion;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetServiceVersionResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetSupportedFormat;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetSupportedFormatResponse;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetSupportedProfile;
import edu.mayo.cts2.framework.model.wsdl.baseservice.GetSupportedProfileResponse;
import edu.mayo.cts2.framework.model.wsdl.statementread.Exists;
import edu.mayo.cts2.framework.model.wsdl.statementread.ExistsResponse;
import edu.mayo.cts2.framework.model.wsdl.statementread.Read;
import edu.mayo.cts2.framework.model.wsdl.statementread.ReadResponse;
import edu.mayo.cts2.framework.service.profile.statement.StatementReadService;
import edu.mayo.cts2.framework.webapp.soap.endpoint.AbstractReadServiceEndpoint;
@Endpoint("StatementReadServicesEndpoint")
public class StatementReadServicesEndpoint extends AbstractReadServiceEndpoint {
@Cts2Service
private StatementReadService statementReadService;
/* TODO: implement read */
@PayloadRoot(localPart = "read", namespace = CTS2_NAMESPACE_ROOT + "StatementReadServices")
@ResponsePayload
public ReadResponse read(@RequestPayload Read request) {
throw new UnsupportedOperationException("Method not implemented");
// Statement statement = this.doRead(
// this.statementReadService,
// request.getStatementURI(),
// request.getQueryControl(),
// request.getContext());
//
// ReadResponse response = new ReadResponse();
// response.setReturn(statement);
// return response;
}
/* TODO: implement exists */
@PayloadRoot(localPart = "exists", namespace = CTS2_NAMESPACE_ROOT + "StatementReadServices")
@ResponsePayload
public ExistsResponse exists(@RequestPayload Exists request) {
throw new UnsupportedOperationException("Method not implemented");
// boolean exists = this.statementReadService.exists(request.getStatementID(), request.getContext());
//
// ExistsResponse response = new ExistsResponse();
// response.setReturn(exists);
// return response;
}
/*******************************************************/
/* BaseServices */
/*******************************************************/
@PayloadRoot(localPart = "getDefaultFormat", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetDefaultFormatResponse getDefaultFormat(@RequestPayload GetDefaultFormat request) {
FormatReference format = new FormatReference("SOAP");
GetDefaultFormatResponse response = new GetDefaultFormatResponse();
response.setReturn(format);
return response;
}
@PayloadRoot(localPart = "getImplementationType", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetImplementationTypeResponse getImplementationType(@RequestPayload GetImplementationType request) {
ImplementationProfile implementations[] = new ImplementationProfile[1];
implementations[0] = ImplementationProfile.IP_SOAP;
GetImplementationTypeResponse response = new GetImplementationTypeResponse();
response.setReturn(implementations);
return response;
}
@PayloadRoot(localPart = "getKnownNamespace", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetKnownNamespaceResponse getKnownNamespace(@RequestPayload GetKnownNamespace request) {
GetKnownNamespaceResponse response = new GetKnownNamespaceResponse();
response.setReturn(this.statementReadService.getKnownNamespaceList());
return response;
}
@PayloadRoot(localPart = "getServiceDescription", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetServiceDescriptionResponse getServiceDescription(@RequestPayload GetServiceDescription request) {
GetServiceDescriptionResponse response = new GetServiceDescriptionResponse();
response.setReturn(this.statementReadService.getServiceDescription());
return response;
}
@PayloadRoot(localPart = "getServiceName", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetServiceNameResponse getServiceName(@RequestPayload GetServiceName request) {
GetServiceNameResponse response = new GetServiceNameResponse();
response.setReturn(this.statementReadService.getServiceName());
return response;
}
@PayloadRoot(localPart = "getServiceProvider", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetServiceProviderResponse getServiceProvider(@RequestPayload GetServiceProvider request) {
GetServiceProviderResponse response = new GetServiceProviderResponse();
response.setReturn(this.statementReadService.getServiceProvider());
return response;
}
@PayloadRoot(localPart = "getServiceVersion", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetServiceVersionResponse getServiceVersion(@RequestPayload GetServiceVersion request) {
GetServiceVersionResponse response = new GetServiceVersionResponse();
response.setReturn(this.statementReadService.getServiceVersion());
return response;
}
@PayloadRoot(localPart = "getSupportedFormat", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetSupportedFormatResponse getSupportedFormat(@RequestPayload GetSupportedFormat request) {
FormatReference format[] = new FormatReference[1];
format[0] = new FormatReference("SOAP");
GetSupportedFormatResponse response = new GetSupportedFormatResponse();
response.setReturn(format);
return response;
}
/* TODO: implement getSupportedProfile */
@PayloadRoot(localPart = "getSupportedProfile", namespace = CTS2_NAMESPACE_ROOT + "BaseServiceTypes")
@ResponsePayload
public GetSupportedProfileResponse getSupportedProfile(@RequestPayload GetSupportedProfile request) {
throw new UnsupportedOperationException("Method not implemented");
// ProfileElement profile = new ProfileElement();
// profile.setStructuralProfile(StructuralProfile.SP_STATEMENT);
//
// FunctionalProfile functionalProfiles[] = new FunctionalProfile[1];
// functionalProfiles[0] = FunctionalProfile.FP_READ;
// profile.setFunctionalProfile(functionalProfiles);
//
// ProfileElement profiles[] = new ProfileElement[1];
// profiles[0] = profile;
//
// GetSupportedProfileResponse response = new GetSupportedProfileResponse();
// response.setReturn(profiles);
//
// return response;
}
}