package org.exist.mongodb.xquery; import java.util.List; import java.util.Map; import org.exist.dom.QName; import org.exist.mongodb.xquery.mongodb.client.Close; import org.exist.mongodb.xquery.mongodb.client.Connect; import org.exist.mongodb.xquery.mongodb.client.ListDatabases; import org.exist.mongodb.xquery.mongodb.client.ListMongdbClientIds; import org.exist.mongodb.xquery.mongodb.collection.Aggregate; import org.exist.mongodb.xquery.mongodb.collection.Count; import org.exist.mongodb.xquery.mongodb.collection.Drop; import org.exist.mongodb.xquery.mongodb.collection.Find; import org.exist.mongodb.xquery.mongodb.collection.FindAndModify; import org.exist.mongodb.xquery.mongodb.collection.FindAndRemove; import org.exist.mongodb.xquery.mongodb.collection.FindOne; import org.exist.mongodb.xquery.mongodb.collection.Group; import org.exist.mongodb.xquery.mongodb.collection.Insert; import org.exist.mongodb.xquery.mongodb.collection.MapReduce; import org.exist.mongodb.xquery.mongodb.collection.Remove; import org.exist.mongodb.xquery.mongodb.collection.Save; import org.exist.mongodb.xquery.mongodb.collection.Update; import org.exist.mongodb.xquery.mongodb.db.EvalCommand; import org.exist.mongodb.xquery.mongodb.db.ListCollections; import org.exist.xquery.AbstractInternalModule; import org.exist.xquery.ErrorCodes.ErrorCode; import org.exist.xquery.FunctionDef; import org.exist.xquery.XPathException; public class MongodbModule extends AbstractInternalModule { public final static String NAMESPACE_URI = "http://exist-db.org/mongrel/mongodb"; public final static String PREFIX = "mongodb"; public final static String INCLUSION_DATE = "2014-08-01"; public final static String RELEASED_IN_VERSION = "eXist-2.2"; public final static FunctionDef[] functions = { new FunctionDef(Aggregate.signatures[0], Aggregate.class), new FunctionDef(Close.signatures[0], Close.class), new FunctionDef(Connect.signatures[0], Connect.class), new FunctionDef(Count.signatures[0], Count.class), new FunctionDef(Count.signatures[1], Count.class), new FunctionDef(Drop.signatures[0], Drop.class), new FunctionDef(EvalCommand.signatures[0], EvalCommand.class), new FunctionDef(EvalCommand.signatures[1], EvalCommand.class), new FunctionDef(EvalCommand.signatures[2], EvalCommand.class), new FunctionDef(Find.signatures[0], Find.class), new FunctionDef(Find.signatures[1], Find.class), new FunctionDef(Find.signatures[2], Find.class), new FunctionDef(FindAndModify.signatures[0], FindAndModify.class), new FunctionDef(FindAndModify.signatures[1], FindAndModify.class), new FunctionDef(FindAndRemove.signatures[0], FindAndRemove.class), new FunctionDef(FindOne.signatures[0], FindOne.class), new FunctionDef(FindOne.signatures[1], FindOne.class), new FunctionDef(FindOne.signatures[2], FindOne.class), new FunctionDef(FindOne.signatures[3], FindOne.class), new FunctionDef(Group.signatures[0], Group.class), new FunctionDef(Insert.signatures[0], Insert.class), new FunctionDef(ListCollections.signatures[0], ListCollections.class), new FunctionDef(ListDatabases.signatures[0], ListDatabases.class), new FunctionDef(ListMongdbClientIds.signatures[0], ListMongdbClientIds.class), new FunctionDef(MapReduce.signatures[0], MapReduce.class), new FunctionDef(Remove.signatures[0], Remove.class), new FunctionDef(Save.signatures[0], Save.class), new FunctionDef(Update.signatures[0], Update.class), new FunctionDef(Update.signatures[1], Update.class), }; public final static ErrorCode MONG0001 = new MongodbErrorCode("MONG0001", "Forbidden"); public final static ErrorCode MONG0002 = new MongodbErrorCode("MONG0002", "Mongodb exception"); public final static ErrorCode MONG0003 = new MongodbErrorCode("MONG0003", "Generic exception"); public final static ErrorCode MONG0004 = new MongodbErrorCode("MONG0004", "JSON Syntax exception"); public final static ErrorCode MONG0005 = new MongodbErrorCode("MONG0005", "Command exception"); public final static QName EXCEPTION_QNAME = new QName("exception", MongodbModule.NAMESPACE_URI, MongodbModule.PREFIX); public final static QName EXCEPTION_MESSAGE_QNAME = new QName("exception-message", MongodbModule.NAMESPACE_URI, MongodbModule.PREFIX); public MongodbModule(Map<String, List<? extends Object>> parameters) throws XPathException { super(functions, parameters); } @Override public String getNamespaceURI() { return NAMESPACE_URI; } @Override public String getDefaultPrefix() { return PREFIX; } @Override public String getDescription() { return "MongoDB module"; } @Override public String getReleaseVersion() { return RELEASED_IN_VERSION; } protected final static class MongodbErrorCode extends ErrorCode { public MongodbErrorCode(String code, String description) { super(new QName(code, NAMESPACE_URI, PREFIX), description); } } }