package org.cagrid.mms.soapclient; import gov.nih.nci.cagrid.metadata.ServiceMetadata; import gov.nih.nci.cagrid.metadata.dataservice.DomainModel; import java.net.URI; import java.rmi.RemoteException; import java.util.Arrays; import java.util.Collection; import java.util.Map; import org.cagrid.mms.model.ModelSourceMetadata; import org.cagrid.mms.model.NamespaceToProjectMapping; import org.cagrid.mms.model.UMLAssociationExclude; import org.cagrid.mms.model.UMLProjectIdentifer; import org.cagrid.mms.service.InvalidUMLProjectIndentifier; import org.cagrid.mms.service.MMS; import org.cagrid.mms.service.MMSGeneralException; import org.cagrid.mms.wsrf.stubs.AnnotateServiceMetadataRequest; import org.cagrid.mms.wsrf.stubs.AnnotateServiceMetadataResponse; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForClassesRequest; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForClassesResponse; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForClassesWithExcludesRequest; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForClassesWithExcludesResponse; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForPackagesRequest; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForPackagesResponse; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForProjectRequest; import org.cagrid.mms.wsrf.stubs.GenerateDomainModelForProjectResponse; import org.cagrid.mms.wsrf.stubs.GetModelSourceMetadataRequest; import org.cagrid.mms.wsrf.stubs.GetModelSourceMetadataResponse; import org.cagrid.mms.wsrf.stubs.InvalidUMLProjectIndentifierFaultMessage; import org.cagrid.mms.wsrf.stubs.MetadataModelServicePortType; public class MMSSoapClient implements MMS { MetadataModelServicePortType port; public MMSSoapClient(MetadataModelServicePortType port){ this.port = port; } @Override public DomainModel generateDomainModelForProject( UMLProjectIdentifer umlProjectIdentifer) throws InvalidUMLProjectIndentifier { GenerateDomainModelForProjectRequest request = new GenerateDomainModelForProjectRequest(); GenerateDomainModelForProjectRequest.UmlProjectIdentifer pid = new GenerateDomainModelForProjectRequest.UmlProjectIdentifer(); pid.setUMLProjectIdentifer(umlProjectIdentifer); request.setUmlProjectIdentifer(pid); GenerateDomainModelForProjectResponse response = null; try { response = port.generateDomainModelForProject(request); } catch (InvalidUMLProjectIndentifierFaultMessage e) { throw new InvalidUMLProjectIndentifier(); } return response.getDomainModel(); } @Override public ModelSourceMetadata getModelSourceMetadata() { GetModelSourceMetadataRequest request = new GetModelSourceMetadataRequest(); GetModelSourceMetadataResponse response = port.getModelSourceMetadata(request); return response.getModelSourceMetadata(); } @Override public DomainModel generateDomainModelForPackages( UMLProjectIdentifer umlProjectIdentifer, Collection<String> packageNames) throws MMSGeneralException, InvalidUMLProjectIndentifier { GenerateDomainModelForPackagesRequest request = new GenerateDomainModelForPackagesRequest(); GenerateDomainModelForPackagesRequest.UmlProjectIdentifer pid = new GenerateDomainModelForPackagesRequest.UmlProjectIdentifer(); pid.setUMLProjectIdentifer(umlProjectIdentifer); request.setUmlProjectIdentifer(pid); request.getPackageNames().addAll(packageNames); GenerateDomainModelForPackagesResponse response = null; try { response = port.generateDomainModelForPackages(request); } catch (InvalidUMLProjectIndentifierFaultMessage e) { throw new InvalidUMLProjectIndentifier(); } return response.getDomainModel(); } @Override public DomainModel generateDomainModelForClasses( UMLProjectIdentifer umlProjectIdentifer, Collection<String> fullyQualifiedClassNames) throws MMSGeneralException, InvalidUMLProjectIndentifier { GenerateDomainModelForClassesRequest request = new GenerateDomainModelForClassesRequest(); GenerateDomainModelForClassesRequest.UmlProjectIdentifer pid = new GenerateDomainModelForClassesRequest.UmlProjectIdentifer(); pid.setUMLProjectIdentifer(umlProjectIdentifer); request.setUmlProjectIdentifer(pid); request.getFullyQualifiedClassNames().addAll(fullyQualifiedClassNames); GenerateDomainModelForClassesResponse response = null; try { response = port.generateDomainModelForClasses(request); } catch (InvalidUMLProjectIndentifierFaultMessage e) { throw new InvalidUMLProjectIndentifier(); } return response.getDomainModel(); } @Override public DomainModel generateDomainModelForClassesWithExcludes( UMLProjectIdentifer umlProjectIdentifer, Collection<String> fullyQualifiiedClassNames, Collection<UMLAssociationExclude> umlAssociationExclude) throws MMSGeneralException, InvalidUMLProjectIndentifier { GenerateDomainModelForClassesWithExcludesRequest request = new GenerateDomainModelForClassesWithExcludesRequest(); GenerateDomainModelForClassesWithExcludesRequest.UmlProjectIdentifer pid = new GenerateDomainModelForClassesWithExcludesRequest.UmlProjectIdentifer(); pid.setUMLProjectIdentifer(umlProjectIdentifer); request.setUmlProjectIdentifer(pid); request.getFullyQualifiedClassNames().addAll(fullyQualifiiedClassNames); GenerateDomainModelForClassesWithExcludesRequest.UmlAssociationExclude excludes = new GenerateDomainModelForClassesWithExcludesRequest.UmlAssociationExclude(); excludes.getUMLAssociationExclude().addAll(umlAssociationExclude); request.setUmlAssociationExclude(excludes); GenerateDomainModelForClassesWithExcludesResponse response = null; try { response = port.generateDomainModelForClassesWithExcludes(request); } catch (InvalidUMLProjectIndentifierFaultMessage e) { throw new InvalidUMLProjectIndentifier(); } return response.getDomainModel(); } @Override public ServiceMetadata annotateServiceMetadata( ServiceMetadata serviceMetadata, Map<URI, UMLProjectIdentifer> namespaceToProjectMappings) throws MMSGeneralException, InvalidUMLProjectIndentifier { AnnotateServiceMetadataRequest request = new AnnotateServiceMetadataRequest(); AnnotateServiceMetadataRequest.NamespaceToProjectMappings mappings = new AnnotateServiceMetadataRequest.NamespaceToProjectMappings(); //TODO: //mappings.getNamespaceToProjectMapping().addAll(namespaceToProjectMappings); request.setNamespaceToProjectMappings(mappings); AnnotateServiceMetadataRequest.ServiceMetadata metadata = new AnnotateServiceMetadataRequest.ServiceMetadata(); metadata.setServiceMetadata(serviceMetadata); request.setServiceMetadata(metadata); AnnotateServiceMetadataResponse response = null; try { response = port.annotateServiceMetadata(request); } catch (InvalidUMLProjectIndentifierFaultMessage e) { throw new InvalidUMLProjectIndentifier(); } return response.getServiceMetadata(); } }