TDB2 & CmdCustom

- Converted CmdCustom to use TDB2, which means that for the first time,
  2.0 is now optimizing data load based on filter characteristics.  This
  means that "task list" and "task next" etc are now *fast*.
- Improved diagnostics for TDB2, for debugging.
This commit is contained in:
Paul Beckingham 2011-08-14 12:00:10 -04:00
parent 9a862bc75a
commit b1ad00313f
2 changed files with 12 additions and 19 deletions

View file

@ -60,7 +60,7 @@ void TF2::target (const std::string& f)
////////////////////////////////////////////////////////////////////////////////
const std::vector <Task>& TF2::get_tasks ()
{
// std::cout << "# TF2::get_tasks\n";
// std::cout << "# TF2::get_tasks " << _file.data << "\n";
if (! _loaded_tasks)
load_tasks ();
@ -71,7 +71,7 @@ const std::vector <Task>& TF2::get_tasks ()
////////////////////////////////////////////////////////////////////////////////
const std::vector <std::string>& TF2::get_lines ()
{
// std::cout << "# TF2::get_lines\n";
// std::cout << "# TF2::get_lines " << _file.data << "\n";
if (! _loaded_lines)
load_lines ();
@ -82,7 +82,7 @@ const std::vector <std::string>& TF2::get_lines ()
////////////////////////////////////////////////////////////////////////////////
const std::string& TF2::get_contents ()
{
// std::cout << "# TF2::get_contents\n";
// std::cout << "# TF2::get_contents " << _file.data << "\n";
if (! _loaded_contents)
load_contents ();
@ -93,7 +93,7 @@ const std::string& TF2::get_contents ()
////////////////////////////////////////////////////////////////////////////////
void TF2::add_task (const Task& task)
{
// std::cout << "# TF2::add_task\n";
// std::cout << "# TF2::add_task " << _file.data << "\n";
_tasks.push_back (task); // For subsequent queries
_added_tasks.push_back (task); // For commit/synch
@ -103,7 +103,7 @@ void TF2::add_task (const Task& task)
////////////////////////////////////////////////////////////////////////////////
void TF2::modify_task (const Task& task)
{
// std::cout << "# TF2::modify_task\n";
// std::cout << "# TF2::modify_task " << _file.data << "\n";
// Modify in-place.
std::vector <Task>::iterator i;
@ -123,7 +123,7 @@ void TF2::modify_task (const Task& task)
////////////////////////////////////////////////////////////////////////////////
void TF2::add_line (const std::string& line)
{
// std::cout << "# TF2::add_line\n";
// std::cout << "# TF2::add_line " << _file.data << "\n";
_added_lines.push_back (line);
_dirty = true;
@ -133,7 +133,7 @@ void TF2::add_line (const std::string& line)
// This is so that synch.key can just overwrite and not grow.
void TF2::clear_lines ()
{
// std::cout << "# TF2::clear_lines\n";
// std::cout << "# TF2::clear_lines " << _file.data << "\n";
_lines.clear ();
_dirty = true;
}
@ -239,7 +239,7 @@ void TF2::commit ()
////////////////////////////////////////////////////////////////////////////////
void TF2::load_tasks ()
{
// std::cout << "# TF2::load_tasks\n";
// std::cout << "# TF2::load_tasks " << _file.data << "\n";
if (! _loaded_lines)
load_lines ();
@ -283,7 +283,7 @@ void TF2::load_tasks ()
////////////////////////////////////////////////////////////////////////////////
void TF2::load_lines ()
{
// std::cout << "# TF2::load_lines\n";
// std::cout << "# TF2::load_lines " << _file.data << "\n";
if (! _loaded_contents)
load_contents ();
@ -295,7 +295,7 @@ void TF2::load_lines ()
////////////////////////////////////////////////////////////////////////////////
void TF2::load_contents ()
{
// std::cout << "# TF2::load_contents\n";
// std::cout << "# TF2::load_contents " << _file.data << "\n";
_contents = "";

View file

@ -92,17 +92,10 @@ int CmdCustom::execute (std::string& output)
context.a3.dump ("CmdCustom::execute");
// Load the data.
// TODO Replace with TDB2.
std::vector <Task> tasks;
context.tdb.lock (context.config.getBoolean ("locking"));
handleRecurrence ();
context.tdb.load (tasks);
context.tdb.commit ();
context.tdb.unlock ();
// Apply filter.
context.tdb2.commit ();
std::vector <Task> filtered;
filter (tasks, filtered);
filter (filtered);
// Sort the tasks.
std::vector <int> sequence;