diff options
author | Ted Ross <tross@apache.org> | 2009-09-15 17:45:51 +0000 |
---|---|---|
committer | Ted Ross <tross@apache.org> | 2009-09-15 17:45:51 +0000 |
commit | 1e0e8ae7d1792f1deff8089d4c26075b9a142cdd (patch) | |
tree | 982fc02c3faaef6c7a361af531a39837c42c1884 /qpid/cpp/src/qmf/QueryImpl.cpp | |
parent | c9346545c9fa32a1e124d1842a91ad1b4588e29a (diff) | |
download | qpid-python-1e0e8ae7d1792f1deff8089d4c26075b9a142cdd.tar.gz |
QMF Console updated to the point where query (get_object) is supported.
The Ruby binding continues to track the c++ engine progress.
git-svn-id: https://svn.apache.org/repos/asf/qpid/trunk@815416 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp/src/qmf/QueryImpl.cpp')
-rw-r--r-- | qpid/cpp/src/qmf/QueryImpl.cpp | 85 |
1 files changed, 54 insertions, 31 deletions
diff --git a/qpid/cpp/src/qmf/QueryImpl.cpp b/qpid/cpp/src/qmf/QueryImpl.cpp index 7e827796bb..f75a9aa5d5 100644 --- a/qpid/cpp/src/qmf/QueryImpl.cpp +++ b/qpid/cpp/src/qmf/QueryImpl.cpp @@ -18,54 +18,77 @@ */ #include "qmf/QueryImpl.h" +#include "qmf/ObjectIdImpl.h" +#include "qpid/framing/Buffer.h" +#include "qpid/framing/FieldTable.h" using namespace std; using namespace qmf; +using namespace qpid::framing; -//================================================================== -// Wrappers -//================================================================== - -Query::Query() : impl(new QueryImpl(this)) {} -Query::Query(QueryImpl* i) : impl(i) {} - -Query::~Query() +bool QueryElementImpl::evaluate(const Object* /*object*/) const { - delete impl; + // TODO: Implement this + return false; } -const char* Query::getPackage() const +bool QueryExpressionImpl::evaluate(const Object* /*object*/) const { - return impl->getPackage(); + // TODO: Implement this + return false; } -const char* Query::getClass() const +QueryImpl::QueryImpl(Buffer& buffer) { - return impl->getClass(); + FieldTable ft; + ft.decode(buffer); + // TODO } -const ObjectId* Query::getObjectId() const +void QueryImpl::encode(Buffer& buffer) const { - return impl->getObjectId(); -} + FieldTable ft; -int Query::whereCount() const -{ - return impl->whereCount(); -} + if (oid.get() != 0) { + ft.setString("_objectid", oid->impl->asString()); + } else { + if (!packageName.empty()) + ft.setString("_package", packageName); + ft.setString("_class", className); + } -Query::Oper Query::whereOper() const -{ - return impl->whereOper(); + ft.encode(buffer); } -const char* Query::whereKey() const -{ - return impl->whereKey(); -} -const Value* Query::whereValue() const -{ - return impl->whereValue(); -} +//================================================================== +// Wrappers +//================================================================== + +QueryElement::QueryElement(const char* attrName, const Value* value, ValueOper oper) : impl(new QueryElementImpl(attrName, value, oper)) {} +QueryElement::QueryElement(QueryElementImpl* i) : impl(i) {} +QueryElement::~QueryElement() { delete impl; } +bool QueryElement::evaluate(const Object* object) const { return impl->evaluate(object); } +QueryExpression::QueryExpression(ExprOper oper, const QueryOperand* operand1, const QueryOperand* operand2) : impl(new QueryExpressionImpl(oper, operand1, operand2)) {} +QueryExpression::QueryExpression(QueryExpressionImpl* i) : impl(i) {} +QueryExpression::~QueryExpression() { delete impl; } +bool QueryExpression::evaluate(const Object* object) const { return impl->evaluate(object); } +Query::Query(const char* className, const char* packageName) : impl(new QueryImpl(className, packageName)) {} +Query::Query(const SchemaClassKey* key) : impl(new QueryImpl(key)) {} +Query::Query(const ObjectId* oid) : impl(new QueryImpl(oid)) {} +Query::Query(QueryImpl* i) : impl(i) {} +Query::~Query() { delete impl; } +void Query::setSelect(const QueryOperand* criterion) { impl->setSelect(criterion); } +void Query::setLimit(uint32_t maxResults) { impl->setLimit(maxResults); } +void Query::setOrderBy(const char* attrName, bool decreasing) { impl->setOrderBy(attrName, decreasing); } +const char* Query::getPackage() const { return impl->getPackage().c_str(); } +const char* Query::getClass() const { return impl->getClass().c_str(); } +const ObjectId* Query::getObjectId() const { return impl->getObjectId(); } +bool Query::haveSelect() const { return impl->haveSelect(); } +bool Query::haveLimit() const { return impl->haveLimit(); } +bool Query::haveOrderBy() const { return impl->haveOrderBy(); } +const QueryOperand* Query::getSelect() const { return impl->getSelect(); } +uint32_t Query::getLimit() const { return impl->getLimit(); } +const char* Query::getOrderBy() const { return impl->getOrderBy().c_str(); } +bool Query::getDecreasing() const { return impl->getDecreasing(); } |