TDB2::get

- Implemented high-level accessors for tasks, by ID and UUID.  This
  permits full DOM implementation.
This commit is contained in:
Paul Beckingham 2011-08-25 22:13:47 -04:00
parent dab06f8672
commit 60ca284e3a
2 changed files with 77 additions and 0 deletions

View file

@ -555,6 +555,78 @@ int TDB2::next_id ()
return _id++;
}
////////////////////////////////////////////////////////////////////////////////
// Locate task by ID.
bool TDB2::get (int id, Task& task)
{
// First load and scan pending.
if (! pending._loaded_tasks)
pending.load_tasks ();
std::vector <Task>::iterator i;
for (i = pending._tasks.begin (); i != pending._tasks.end (); ++i)
{
if (i->id == id)
{
task = *i;
return true;
}
}
// Next load and scan completed.
// Note that this is harmless, because it is only performed if the above
// load and search fails.
if (! completed._loaded_tasks)
completed.load_tasks ();
for (i = completed._tasks.begin (); i != completed._tasks.end (); ++i)
{
if (i->id == id)
{
task = *i;
return true;
}
}
return false;
}
////////////////////////////////////////////////////////////////////////////////
// Locate task by UUID.
bool TDB2::get (const std::string& uuid, Task& task)
{
// First load and scan pending.
if (! pending._loaded_tasks)
pending.load_tasks ();
std::vector <Task>::iterator i;
for (i = pending._tasks.begin (); i != pending._tasks.end (); ++i)
{
if (i->get ("uuid") == uuid)
{
task = *i;
return true;
}
}
// Next load and scan completed.
// Note that this is harmless, because it is only performed if the above
// load and search fails.
if (! completed._loaded_tasks)
completed.load_tasks ();
for (i = completed._tasks.begin (); i != completed._tasks.end (); ++i)
{
if (i->get ("uuid") == uuid)
{
task = *i;
return true;
}
}
return false;
}
////////////////////////////////////////////////////////////////////////////////
bool TDB2::verifyUniqueUUID (const std::string& uuid)
{

View file

@ -59,6 +59,7 @@ public:
void load_lines ();
void load_contents ();
// ID <--> UUID mapping.
std::string uuid (int);
int id (const std::string&);
@ -98,6 +99,10 @@ public:
int gc ();
int next_id ();
// Generalized task accessors.
bool get (int, Task&);
bool get (const std::string&, Task&);
void dump ();
private: