package com.bagri.xquery.saxon.ext.doc; import static com.bagri.core.Constants.cmd_remove_cln_documents; import com.bagri.core.api.DocumentManagement; import com.bagri.core.api.BagriException; import net.sf.saxon.expr.XPathContext; import net.sf.saxon.lib.ExtensionFunctionCall; import net.sf.saxon.om.Sequence; import net.sf.saxon.trans.XPathException; import net.sf.saxon.value.EmptySequence; import net.sf.saxon.value.SequenceType; public class RemoveCollectionDocuments extends DocumentFunctionExtension { public RemoveCollectionDocuments(DocumentManagement xdm) { super(xdm); } @Override public String getFunctionName() { return cmd_remove_cln_documents; } @Override public SequenceType[] getArgumentTypes() { return new SequenceType[] {SequenceType.SINGLE_ANY_URI}; } @Override public int getMaximumNumberOfArguments() { return 1; } @Override public SequenceType getResultType(SequenceType[] suppliedArgumentTypes) { return SequenceType.EMPTY_SEQUENCE; //SINGLE_INT; } @Override public ExtensionFunctionCall makeCallExpression() { return new ExtensionFunctionCall() { @Override public Sequence call(XPathContext context, Sequence[] arguments) throws XPathException { String collection = arguments[0].head().getStringValue(); try { xdm.removeCollectionDocuments(collection); } catch (BagriException ex) { throw new XPathException(ex); } return EmptySequence.getInstance(); } }; } }