summaryrefslogtreecommitdiff
path: root/src/taskmanager.cc
diff options
context:
space:
mode:
authorBent Bisballe Nyeng <deva@aasimon.org>2020-06-06 18:32:11 +0200
committerBent Bisballe Nyeng <deva@aasimon.org>2020-06-06 18:32:11 +0200
commitfa5985ed620c3cd4c7b9712b6b80a2e2c1a8ba31 (patch)
tree39e1eff8ce28467536505d2ca58282492be5b1b5 /src/taskmanager.cc
parent9e81fcd4bdb089b8f8a05c6fbb586ec2a2a14924 (diff)
Rename task to node everywhere.
Diffstat (limited to 'src/taskmanager.cc')
-rw-r--r--src/taskmanager.cc407
1 files changed, 0 insertions, 407 deletions
diff --git a/src/taskmanager.cc b/src/taskmanager.cc
deleted file mode 100644
index 1b34dde..0000000
--- a/src/taskmanager.cc
+++ /dev/null
@@ -1,407 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set et sw=2 ts=2: */
-/***************************************************************************
- * task.cc
- *
- * Fri Feb 24 08:16:30 CET 2012
- * Copyright 2012 Bent Bisballe Nyeng
- * deva@aasimon.org
- ****************************************************************************/
-
-/*
- * This file is part of Munia.
- *
- * Munia is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * Munia is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Munia; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-#include "taskmanager.h"
-
-#include <stdio.h>
-
-#include "hugin.hpp"
-
-// Global TaskManager object.
-TaskManager task_manager;
-
-#define ROOT_ID 0
-#define FINISHED_ID 1
-#define BACKLOG_ID 2
-#define LOSTFOUND_ID 3
-#define PROJECTS_ID 4
-#define FIRST_TASK_ID 10
-
-static bool isProtected(taskid_t id)
-{
- return id < FIRST_TASK_ID;
-}
-
-TaskManager::TaskManager()
-{
- idCount = FIRST_TASK_ID;
-}
-
-TaskManager::~TaskManager()
-{
-}
-
-void TaskManager::init(std::string filename)
-{
- DEBUG(taskmgr, "Reading tasks from file: %s\n", filename.c_str());
- file = filename;
-
- FILE *fp = fopen(file.c_str(), "r");
- if(fp)
- {
- std::string xml;
- while(!feof(fp))
- {
- char buf[64];
- size_t sz = fread(buf, 1, sizeof(buf), fp);
- xml.append(buf, sz);
- }
- tree.fromXML(xml);
- fclose(fp);
- }
- else
- {
-
- // Create new basis config
- task_t t;
-
- t.attributes["title"] = "root";
- t.id = ROOT_ID;
- tree.insertAsChild(0, ROOT_ID, t);
-
- t.attributes["title"] = "Finished";
- t.id = FINISHED_ID;
- tree.insertAsChild(ROOT_ID, FINISHED_ID, t);
-
- t.attributes["title"] = "Backlog";
- t.id = BACKLOG_ID;
- tree.insertAsChild(ROOT_ID, BACKLOG_ID, t);
-
- t.attributes["title"] = "Lost+Found";
- t.id = LOSTFOUND_ID;
- tree.insertAsChild(ROOT_ID, LOSTFOUND_ID, t);
-
- t.attributes["title"] = "Projects";
- t.id = PROJECTS_ID;
- tree.insertAsChild(ROOT_ID, PROJECTS_ID, t);
- }
-
- tree.toStdOut();
-}
-
-task_t TaskManager::task(taskid_t t)
-{
- return tree.data(t);
-}
-
-taskid_t TaskManager::createId()
-{
- return tree.createId();
-}
-
-TaskIdListPair TaskManager::moveTask(taskid_t id, taskid_t to)
- throw (std::exception)
-{
- if(isProtected(id))
- {
- return TaskIdListPair();
- }
-
- if(id == to)
- {
- throw std::exception(); // Node and new parent are the same node.
- }
-
- //task_t t = tree.data(id);
-
- // Make sure the new parent exists. This will throw an exception if it doesn't
- //task_t t_ = tree.data(to);
-
- //t.parentid = to;
-
- //TaskIdList tilremove = tree.remove(id);
- TaskIdList tilremove;
- tilremove.push_back(id);
- TaskIdList ancestors = tree.ancestorList(id);
- tilremove.insert(tilremove.end(), ancestors.begin(), ancestors.end());
-
- // TaskIdList tilcreate = tree.insertAsChild(to, id, t);
- TaskIdList tilcreate;
- tilcreate.push_back(to);
- ancestors = tree.ancestorList(to);
- tilcreate.insert(tilcreate.end(), ancestors.begin(), ancestors.end());
-
- tree.move(id, to);
-
- TaskIdListPair tilpair;
- tilpair.first = tilremove;
- tilpair.second = tilcreate;
-
- flushTasks();
-
- return tilpair;
-}
-
-TaskIdList TaskManager::removeTask(taskid_t id)
- throw (std::exception)
-{
- if(isProtected(id))
- {
- return TaskIdList();
- }
-
- TaskIdList affectedTasks;
-
- if(tree.bfs(id).size() > 1)
- {
- throw std::exception();
- }
-
- try
- {
- affectedTasks = tree.remove(id);
- }
- catch(std::exception& e)
- {
- throw e;
- }
-
- flushTasks();
-
- return affectedTasks;
-}
-
-TaskIdList TaskManager::updateTask(taskid_t id, const std::string &name,
- const std::string &value)
- throw (std::exception)
-{
- if(isProtected(id))
- {
- return TaskIdList();
- }
-
- TaskIdList affectedTasks;
-
- try
- {
- affectedTasks = tree.updateData(id, name, value);
- }
- catch(std::exception& e)
- {
- throw e;
- }
-
- flushTasks();
-
- return affectedTasks;
-}
-
-TaskIdList TaskManager::createTask(taskid_t parentid, taskid_t *pid)
- throw (std::exception)
-{
- TaskIdList affectedTasks;
-
- task_t t;
- taskid_t id = *pid;//createId();
- t.attributes["title"] = "";
- t.id = id;
- if(pid)
- {
- *pid = id;
- }
-
- try
- {
- affectedTasks = tree.insertAsChild(parentid, id, t);
- }
- catch(std::exception& e)
- {
- throw e;
- }
-
- flushTasks();
-
- return affectedTasks;
-}
-
-TaskIdList TaskManager::subTasks(taskid_t t)
- throw (std::exception)
-{
- TaskIdList affectedTasks;
-
- try
- {
- affectedTasks = tree.bfs(t);
- }
- catch(std::exception& e)
- {
- throw e;
- }
-
- return affectedTasks;
-}
-
-//TaskIdList TaskManager::ancestorList(taskid_t id)
-// throw (std::exception)
-//{
-// TaskIdList ancestors;
-//
-// try
-// {
-// ancestors = tree.ancestorList(id);
-// goto finish;
-// }
-// catch(std::exception& e)
-// {
-// throw e;
-// }
-//
-//finish:
-// return ancestors;
-//}
-
-void TaskManager::flushTasks()
-{
- FILE *fp = fopen(file.c_str(), "w");
- if(!fp)
- {
- return;
- }
- std::string xml = tree.toXML();
- fwrite(xml.c_str(), xml.size(), 1, fp);
- fclose(fp);
-}
-
-#if 0
-TaskList tasklist;
-
-task_t create_task(std::string title, std::string desc)
-{
- task_t t;
- t.parent_id = current_id_count();
- t.attributes["title"] = title;
- t.desc = desc;
- t.id = id_count; id_count++;
-
- return t;
-}
-
-TaskList load_tasklist_from_file(std::string file)
-{
- TaskList list;
-
- // create MuniaDb class which handles tasks, db-flush and db-init.
-
- return list;
-}
-
-bool save_tasklist_to_file(TaskList list, std::string file)
-{
- FILE* fp;
-
- if(! (fp = fopen(file.c_str(), "w")))
- {
- return false;
- }
-
- if(!fprintf(fp, "<tasklist>\n"))
- {
- fclose(fp);
- return false;
- }
-
- TaskList::iterator it;
- for(it = tasklist.begin(); it != tasklist.end(); it++)
- {
- task_t t = *it;
- int r = 1;
-
- //printf("Flushing task %d\n", t.id);
- r |= fprintf(fp, " <task id=\"%d\" parent_id=\"%d\">\n", t.id, t.parent_id);
- r |= fprintf(fp, " <title>%s</title>\n", xml_encode(t.attributes["title"]).c_str());
- r |= fprintf(fp, " <desc>%s</desc>\n", xml_encode(t.attributes["description"]).c_str());
- r |= fprintf(fp, " </task>)\n");
-
- if(!r)
- {
- fclose(fp);
- return false;
- }
- }
-
- if(!fprintf(fp, "</tasklist>\n"))
- {
- fclose(fp);
- return false;
- }
-
- fclose(fp);
- return true;
-}
-
-static void delete_task(task_t t, TaskList& graveyard);
-
-static void delete_children(task_t t, TaskList& graveyard)
-{
- TaskList::iterator it;
- for(it = tasklist.begin(); it != tasklist.end(); it++)
- {
- if(it->parent_id == t.id) {
- delete_task(*it, graveyard);
- }
- }
-}
-
-static void delete_task(task_t t, TaskList& graveyard)
-{
- TaskList::iterator it;
- for(it = tasklist.begin(); it != tasklist.end(); it++)
- {
- if(it->id == t.id)
- {
- break;
- }
- }
-
- if(it != tasklist.end())
- {
- graveyard.push_back(*it);
- delete_children(*it, graveyard);
- }
-}
-
-void delete_task(int id, TaskList& graveyard)
-{
- task_t t;
- t.id = id;
- delete_task(t, graveyard);
-
- for(TaskList::iterator it = graveyard.begin();
- it != graveyard.end(); it++)
- {
- for(TaskList::iterator it_tl = tasklist.begin();
- it_tl != tasklist.end(); it_tl++)
- {
- if(it_tl->id == it->id)
- {
- tasklist.erase(it_tl);
- break;
- }
- }
- }
-}
-#endif