package gov.nist.registry.ws.configurations.ebxmlrr21;
import gov.nist.registry.common2.exception.MetadataValidationException;
import gov.nist.registry.common2.exception.XDSRegistryOutOfResourcesException;
import gov.nist.registry.common2.exception.XdsException;
import gov.nist.registry.common2.registry.Metadata;
import gov.nist.registry.common2.registry.MetadataSupport;
import gov.nist.registry.common2.registry.Response;
import gov.nist.registry.common2.registry.storedquery.SqParams;
import gov.nist.registry.common2.registry.storedquery.StoredQuerySupport;
import gov.nist.registry.ws.sq.StoredQueryFactory;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21FindDocuments;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21FindDocumentsForMultiplePatients;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21FindFolders;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21FindFoldersForMultiplePatients;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21FindSubmissionSets;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetAssociations;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetDocuments;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetDocumentsAndAssociations;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetFolderAndContents;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetFolders;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetFoldersForDocument;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetRelatedDocuments;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetSubmissionSetAndContents;
import gov.nist.registry.ws.sq.ebxmlrr21.EbXML21GetSubmissionSets;
import org.apache.axiom.om.OMElement;
import org.openhealthtools.openxds.log.LogMessage;
import org.openhealthtools.openxds.log.LoggerException;
/**
* Factory class for Stored Queries going to the ebxmlrr2.1-final1 registry implementation.
* This specific factory is coded/selected in the class gov.nist.registry.ws.config.Registry. The
* key method is buildStoredQueryHandler which returns an object of generic type StoredQuery. This
* object implements a single stored query type implemented against a specific registry implementation.
* @author bill
*
*/
public class Ebxmlrr21StoredQueryFactory extends StoredQueryFactory {
/**
*
* @param ahqr
* @throws XdsException
* @throws LoggerException
*/
public Ebxmlrr21StoredQueryFactory(OMElement ahqr) throws XdsException,
LoggerException {
super(ahqr);
}
/**
*
* @param ahqr
* @param log_message
* @throws XdsException
* @throws LoggerException
*/
public Ebxmlrr21StoredQueryFactory(OMElement ahqr, Response response, LogMessage log_message) throws XdsException,
LoggerException {
super(ahqr, response, log_message);
}
/**
*
* @param params
* @throws XdsException
* @throws LoggerException
*/
public Ebxmlrr21StoredQueryFactory(SqParams params) throws XdsException,
LoggerException {
super(params);
}
/**
*
* @param ahqr
* @param log_message
* @throws XdsException
* @throws LoggerException
*/
public Ebxmlrr21StoredQueryFactory(SqParams params, Response response, LogMessage log_message) throws XdsException,
LoggerException {
super(params, response, log_message);
}
/**
* Returns an object of generic type StoredQuery which implements a single stored query
* type implemented against the ebxmlrr21-final-1 registry implementation.
* @throws LoggerException
*/
public StoredQueryFactory buildStoredQueryHandler(StoredQuerySupport sqs)
throws MetadataValidationException, LoggerException {
if (query_id == null) {
throw new MetadataValidationException("Null Query ID");
}
if (query_id.equals(MetadataSupport.SQ_FindDocuments)) {
setTestMessage("FindDocuments");
storedQueryImpl = new EbXML21FindDocuments(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_FindSubmissionSets)) {
setTestMessage("FindSubmissionSets");
storedQueryImpl = new EbXML21FindSubmissionSets(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_FindFolders)) {
setTestMessage("FindFolders");
storedQueryImpl = new EbXML21FindFolders(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetAll)) {
setTestMessage("GetAll");
response.add_error("XDSRegistryError", "UnImplemented Stored Query query id = " + query_id, "AdhocQueryRequest.java", log_message);
}
else if (query_id.equals(MetadataSupport.SQ_GetDocuments)) {
setTestMessage("GetDocuments");
storedQueryImpl = new EbXML21GetDocuments(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetFolders)) {
setTestMessage("GetFolders");
storedQueryImpl = new EbXML21GetFolders(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetAssociations)) {
setTestMessage("GetAssociations");
storedQueryImpl = new EbXML21GetAssociations(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetDocumentsAndAssociations)) {
setTestMessage("GetDocumentsAndAssociations");
storedQueryImpl = new EbXML21GetDocumentsAndAssociations(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetSubmissionSets)) {
setTestMessage("GetSubmissionSets");
storedQueryImpl = new EbXML21GetSubmissionSets(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetSubmissionSetAndContents)) {
setTestMessage("GetSubmissionSetAndContents");
storedQueryImpl = new EbXML21GetSubmissionSetAndContents(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetFolderAndContents)) {
setTestMessage("GetFolderAndContents");
storedQueryImpl = new EbXML21GetFolderAndContents(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetFoldersForDocument)) {
setTestMessage("GetFoldersForDocument");
storedQueryImpl = new EbXML21GetFoldersForDocument(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_GetRelatedDocuments)) {
setTestMessage("GetRelatedDocuments");
storedQueryImpl = new EbXML21GetRelatedDocuments(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_FindDocumentsForMultiplePatients)) {
setTestMessage("FindDocumentsForMulitplePatients");
storedQueryImpl = new EbXML21FindDocumentsForMultiplePatients(sqs);
}
else if (query_id.equals(MetadataSupport.SQ_FindFoldersForMultiplePatients)) {
setTestMessage("FindFoldersForMulitplePatients");
storedQueryImpl = new EbXML21FindFoldersForMultiplePatients(sqs);
}
else {
setTestMessage(query_id);
response.add_error("XDSRegistryError", "Unknown Stored Query query id = " + query_id, "AdhocQueryRequest.java", log_message);
}
if (log_message != null) {
if (storedQueryImpl == null)
log_message.addOtherParam("storedQueryImpl not defined for query id = ", query_id);
else
log_message.addOtherParam("storedQueryImpl", storedQueryImpl.getClass().getName());
}
return this;
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
* @throws XDSRegistryOutOfResourcesException
*/
public Metadata FindDocuments(StoredQuerySupport sqs) throws XdsException, LoggerException, XDSRegistryOutOfResourcesException {
return new EbXML21FindDocuments(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata FindFolders(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21FindFolders(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata FindSubmissionSets(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21FindSubmissionSets(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetAssociations(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetAssociations(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetDocuments(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetDocuments(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetDocumentsAndAssociations(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetDocumentsAndAssociations(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetFolderAndContents(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetFolderAndContents(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetFolders(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetFolders(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetFoldersForDocument(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetFoldersForDocument(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetRelatedDocuments(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetRelatedDocuments(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetSubmissionSetAndContents(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetSubmissionSetAndContents(sqs).runSpecific();
}
/**
* Stored Query API call.
* @param sqs
* @return Metadata object
* @throws XdsException
* @throws LoggerException
*/
public Metadata GetSubmissionSets(StoredQuerySupport sqs) throws XdsException, LoggerException {
return new EbXML21GetSubmissionSets(sqs).runSpecific();
}
}