From 1ae51ff94d0f1f27a4e4cc657371578db13c3ca1 Mon Sep 17 00:00:00 2001 From: Bent Bisballe Nyeng Date: Fri, 8 Feb 2019 20:26:14 +0100 Subject: Make code compile again (fix bitrot dating back from 2013). --- src/taskmanager.cc | 546 +++++++++++++++++++++++++++++------------------------ 1 file changed, 297 insertions(+), 249 deletions(-) (limited to 'src/taskmanager.cc') diff --git a/src/taskmanager.cc b/src/taskmanager.cc index 38d7893..3fafb4e 100644 --- a/src/taskmanager.cc +++ b/src/taskmanager.cc @@ -43,317 +43,365 @@ TaskManager task_manager; static bool isProtected(taskid_t id) { - return id < FIRST_TASK_ID; + return id < FIRST_TASK_ID; } -TaskManager::TaskManager() { - idCount = FIRST_TASK_ID; +TaskManager::TaskManager() +{ + idCount = FIRST_TASK_ID; } -TaskManager::~TaskManager() { +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(); + 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); +task_t TaskManager::task(taskid_t t) +{ + return tree.data(t); } -taskid_t TaskManager::createId() { - return tree.createId(); +taskid_t TaskManager::createId() +{ + return tree.createId(); } -TaskIdListPair TaskManager::moveTask(taskid_t id, taskid_t to) - throw (std::exception) { - - if(isProtected(id)) return TaskIdListPair(); +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. + if(id == to) + { + throw std::exception(); // Node and new parent are the same node. + } - //task_t t = tree.data(id); + //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); + // Make sure the new parent exists. This will throw an exception if it doesn't + //task_t t_ = tree.data(to); - // t.parentid = 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 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()); + // 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); + tree.move(id, to); - TaskIdListPair tilpair; - tilpair.first = tilremove; - tilpair.second = tilcreate; + TaskIdListPair tilpair; + tilpair.first = tilremove; + tilpair.second = tilcreate; - flushTasks(); + flushTasks(); - return tilpair; + 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::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(); + const std::string &value) + throw (std::exception) +{ + if(isProtected(id)) + { + return TaskIdList(); + } - TaskIdList affectedTasks; + TaskIdList affectedTasks; - try { - affectedTasks = tree.updateData(id, name, value); - } - catch (std::exception& e) { - throw e; - } + try + { + affectedTasks = tree.updateData(id, name, value); + } + catch(std::exception& e) + { + throw e; + } - flushTasks(); + flushTasks(); - return affectedTasks; + 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; + 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; + 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; -} -*/ +//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); + 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. +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 list; + return t; } -bool save_tasklist_to_file(TaskList list, std::string file) { - - FILE* fp; - - if(! (fp = fopen(file.c_str(), "w"))) { - return false; - } - - if(!fprintf(fp, "\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, " \n", t.id, t.parent_id); - r |= fprintf(fp, " %s\n", xml_encode(t.attributes["title"]).c_str()); - r |= fprintf(fp, " %s\n", xml_encode(t.attributes["description"]).c_str()); - r |= fprintf(fp, " )\n"); +TaskList load_tasklist_from_file(std::string file) +{ + TaskList list; - if(!r) { - fclose(fp); - return false; - } - } + // create MuniaDb class which handles tasks, db-flush and db-init. - if(!fprintf(fp, "\n")) { - fclose(fp); - return false; - } + return list; +} - fclose(fp); - return true; +bool save_tasklist_to_file(TaskList list, std::string file) +{ + FILE* fp; + + if(! (fp = fopen(file.c_str(), "w"))) + { + return false; + } + + if(!fprintf(fp, "\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, " \n", t.id, t.parent_id); + r |= fprintf(fp, " %s\n", xml_encode(t.attributes["title"]).c_str()); + r |= fprintf(fp, " %s\n", xml_encode(t.attributes["description"]).c_str()); + r |= fprintf(fp, " )\n"); + + if(!r) + { + fclose(fp); + return false; + } + } + + if(!fprintf(fp, "\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_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); - } - +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; - } - } - } +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 -- cgit v1.2.3