#include "Task.h" #include "Util.h" #include "Manager.h" #include "Error.h" using err::Error; using util::Util; using util::Manager; namespace models { Task::Task(const int& id, const string& name, const string& description, const vector& children): id(id), name(name), description(description), children(children) { } Task::Task(): id(0), name(""), description(""), children({}) { } ostream& Task::write(ostream& stream) const { stream << *this; return stream; } int Task::get_id() const { return this->id; } string Task::get_name() const { return this->name; } string Task::get_description() const { return this->description; } vector Task::get_children() const { return this->children; } AddTask::AddTask(): Task() { } AddTask::AddTask(Task& t): Task(t) { } ostream& operator<<(ostream& os, const Task& t) { os << t.get_id() << " %" << t.get_name() << "% %" << t.get_description(); // Fügt Childen Task mit passenden Lehrzeichen hinzu if (!t.children.empty()) os << " "; for (size_t i = 0; i < t.children.size(); ++i) { os << t.children[i]; if (i < t.children.size() - 1) { os << " "; } } os << "\n"; return os; } istream& operator>>(istream& is, Task& t) { int id; is >> id; if (!is) throw Error(602, "Datei hat ein unbekanntes Format."); try { string name = Util::read_string_between_percent(is); if (name == "") throw Error(102, "Ein Parameter eines Befehls konnte nicht gelesen werden"); string description = Util::read_string_between_percent(is); vector children = Util::read_numbers(is); t = {id, name, description, children}; return is; } catch (Error& _) { throw Error(602, "Datei hat ein unbekanntes Format."); } } ostream& operator<<(ostream& os, const AddTask& t) { os << t.get_name() << " " << t.get_description() << "\n"; return os; } istream& operator>>(istream& is, AddTask& t) { Manager& mgr = Manager::get_instance(); int id = mgr.get_task_id(); try { const string name = Util::read_string_between_percent(is); if (name == "") throw Error(102, "Ein Parameter eines Befehls konnte nicht gelesen werden"); const string description = Util::read_string_between_percent(is); const vector children = Util::read_numbers(is); Task ft = {id, name, description, children}; t = {ft}; return is; } catch (Error& _) { throw Error(102, "Ein Parameter eines Befehls konnte nicht gelesen werden"); } } } // models