package gov.nist.registry.ws.sq.ebxmlrr21; import gov.nist.registry.common2.exception.MetadataException; import gov.nist.registry.common2.exception.MetadataValidationException; import gov.nist.registry.common2.exception.XdsException; import gov.nist.registry.common2.registry.Metadata; import gov.nist.registry.common2.registry.MetadataParser; import gov.nist.registry.common2.registry.storedquery.StoredQuerySupport; import gov.nist.registry.ws.sq.GetDocumentsAndAssociations; import java.util.List; import org.apache.axiom.om.OMElement; import org.openhealthtools.openxds.log.LoggerException; /** * Implementation specific class for GetDocumentsAndAssociations stored query. * All the logic is in the runImplementation() method. * @author bill * */ public class EbXML21GetDocumentsAndAssociations extends GetDocumentsAndAssociations { EbXML21QuerySupport eb; /** * Constructor * @param sqs * @throws MetadataValidationException */ public EbXML21GetDocumentsAndAssociations(StoredQuerySupport sqs) { super(sqs); eb = new EbXML21QuerySupport(sqs); } /** * Main method, runs query logic * @return Metadata * @throws MetadataException * @throws XdsException */ public Metadata runImplementation() throws XdsException, LoggerException, MetadataException, MetadataValidationException { Metadata metadata; OMElement doc_ele; if (uids != null) { doc_ele = eb.getDocByUid(uids); } else { doc_ele = eb.getDocById(uuids); } metadata = MetadataParser.parseNonSubmission(doc_ele); List<String> doc_ids; if (sqs.return_leaf_class) { doc_ids = metadata.getExtrinsicObjectIds(); } else { doc_ids = metadata.getObjectRefIds(); } // for documents, get associations sqs.log_message.addOtherParam("Doc count", Integer.toString(doc_ids.size())); if (doc_ids.size() == 0) return metadata; OMElement ele = eb.getAssociations(doc_ids, null, null); metadata.addMetadata(ele, true); return metadata; } }