#pragma once /////////////////////////////////////////////////////////////////////// // Edit.h - Edit metadata values // // ver 1.0 // // Jim Fawcett, CSE687 - Object Oriented Design, Spring 2018 // /////////////////////////////////////////////////////////////////////// /* * Package Operations: * ------------------- * This package defines a single Edit class that: * - accepts a DbElement

instance when constructed * - provides facilities to edit it's metadata * * Required Files: * --------------- * Edit.h, Edit.cpp * DbCore.h, DbCore.cpp * Query.h, Query.cpp * * Maintenance History: * -------------------- * ver 1.0 : 17 Feb 2018 * - first release */ #include "../DbCore/DbCore.h" #include "../Query/Query.h" #include "../DateTime/DateTime.h" #include #include namespace NoSqlDb { template class Edit { public: Edit(DbElement

& elem) : elem_(elem) {} static void identify(std::ostream& = std::cout); void name(const std::string& name); void description(const std::string& descrip); DateTime& dateTime(); void dateTime(const DateTime& dt); void clearChildKeys(); bool addChildKey(const Key& key); bool removeChildKey(const Key& key); P& payLoad(); void payLoad(const P& p); DbElement

DbElement() { return elem_; } private: NoSqlDb::DbElement

& elem_; }; //----< show file name >--------------------------------------------- template void Edit

::identify(std::ostream& out) { out << "\n \"" << __FILE__ << "\""; } template void Edit

::name(const std::string& name) { elem_.name(name); } template void Edit

::description(const std::string& descrip) { elem_.descrip(descrip); } template DateTime& Edit

::dateTime() { return elem_.dateTime(); } template void Edit

::dateTime(const DateTime& dt) { elem_.dateTime(dt); } template void Edit

::clearChildKeys() { elem_.children().clear(); } template bool Edit

::addChildKey(const Key& key) { return elem_.addChildKey(key); } template bool Edit

::removeChildKey(const Key& key) { return elem_.removeChildKey(key); } template P& Edit

::payLoad() { return elem_.payLoad(); } template void Edit

::payLoad(const P& p) { elem_.payLoad(p); } }