diff options
Diffstat (limited to 'server/src/macrotool/macrotool_fieldnames.cc')
-rw-r--r-- | server/src/macrotool/macrotool_fieldnames.cc | 208 |
1 files changed, 0 insertions, 208 deletions
diff --git a/server/src/macrotool/macrotool_fieldnames.cc b/server/src/macrotool/macrotool_fieldnames.cc deleted file mode 100644 index 8d90323..0000000 --- a/server/src/macrotool/macrotool_fieldnames.cc +++ /dev/null @@ -1,208 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set et sw=2 ts=2: */ -/*************************************************************************** - * macrotool_fieldnames.cc - * - * Mon Jul 6 14:15:05 CEST 2009 - * Copyright 2009 Bent Bisballe Nyeng - * deva@aasimon.org - ****************************************************************************/ - -/* - * This file is part of Pracro. - * - * Pracro 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. - * - * Pracro 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 Pracro; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ -#include "macrotool_fieldnames.h" - -#include <string.h> -#include <stdio.h> - -#include "macrotool_util.h" -#include "macroparser.h" - -#include "debug.h" - -#include "database.h" -#include "configuration.h" - -static const char usage_str[] = -" help Prints this helptext.\n" -" add name desc Add a field called 'name', described as 'desc'\n" -" del name Delete a field called 'name'\n" -" list List all fieldnames as well as their macro references.\n" -; - -static void add(std::string name, std::string desc) -{ - Database db("pgsql", Conf::database_addr, "", Conf::database_user, Conf::database_passwd, ""); - db.addFieldname(name, desc); -} - -static void del(std::string name) -{ - Database db("pgsql", Conf::database_addr, "", Conf::database_user, Conf::database_passwd, ""); - db.delFieldname(name); -} - -static std::vector<std::string> getWidgetNames(Widget &w) -{ - std::vector<std::string> v; - if(w.attributes.find("name") != w.attributes.end()) v.push_back(w.attributes["name"]); - - std::vector< Widget >::iterator i = w.widgets.begin(); - while(i != w.widgets.end()) { - std::vector<std::string> _v = getWidgetNames(*i); - v.insert(v.end(), _v.begin(), _v.end()); - i++; - } - - return v; -} - -static std::map<std::string, std::vector<std::string> > getMacroRefsList() -{ - std::map<std::string, std::vector<std::string> > reflist; - - std::vector<std::string> macrofiles = getMacros(); - std::vector<std::string>::iterator mfs = macrofiles.begin(); - while(mfs != macrofiles.end()) { - std::string name = mfs->substr(0, mfs->length() - 4); - - MacroParser parser(Conf::xml_basedir + "/macros/" + *mfs); - parser.parse(); - Macro *macro = parser.getMacro(); - - std::string key = name; - reflist[key] = getWidgetNames(macro->widgets); - - mfs++; - } - - return reflist; -} - -static std::vector<std::string> getMacroRefs(std::map<std::string, std::vector<std::string> > reflist, std::string name) -{ - std::vector<std::string> macros; - std::map<std::string, std::vector<std::string> >::iterator macro = reflist.begin(); - while(macro != reflist.end()) { - std::vector<std::string>::iterator field = macro->second.begin(); - while(field != macro->second.end()) { - if(*field == name) macros.push_back(macro->first); - field++; - } - macro++; - } - return macros; -} - -static void list() -{ - Database db("pgsql", Conf::database_addr, "", Conf::database_user, Conf::database_passwd, ""); - - std::vector<Fieldname> fieldnames = db.getFieldnames(); - - std::map<std::string, std::vector<std::string> > reflist = getMacroRefsList(); - - size_t name_sz = 0; - size_t desc_sz = 0; - size_t time_sz = 0; - - std::vector<Fieldname>::iterator i = fieldnames.begin(); - while(i != fieldnames.end()) { - if(i->name.length() > name_sz) name_sz = i->name.length(); - if(i->description.length() > desc_sz) desc_sz = i->description.length(); - char ts[32]; - sprintf(ts, "%u", (unsigned int)i->timestamp); - if(strlen(ts) > time_sz) time_sz = strlen(ts); - i++; - } - - printcolumn("Name:", name_sz); - printcolumn("Description:", desc_sz); - printcolumn("Timestamp:", time_sz); - printf("Macros:"); - printf("\n"); - - i = fieldnames.begin(); - while(i != fieldnames.end()) { - printcolumn(i->name, name_sz); - printcolumn(i->description, desc_sz); - char ts[32]; - sprintf(ts, "%u", (unsigned int)i->timestamp); - printcolumn(ts, time_sz); - - std::vector<std::string> macros = getMacroRefs(reflist, i->name); - std::vector<std::string>::iterator j = macros.begin(); - while(j != macros.end()) { - if(j != macros.begin()) printf(", "); - printf("%s", j->c_str()); - j++; - } - - printf("\n"); - i++; - } -} - -void macrotool_fieldnames(std::vector<std::string> params) -{ - if(params.size() < 1) { - printf("%s", usage_str); - return; - } - - DEBUG(fieldnames, "fieldnames: %s\n", params[0].c_str()); - - if(params[0] == "list") { - if(params.size() != 1) { - printf("The command 'list' does not need any parameters.\n"); - printf("%s", usage_str); - return; - } - list(); - return; - } - - if(params[0] == "add") { - if(params.size() != 3) { - printf("The command 'add' needs 2 parameters.\n"); - printf("%s", usage_str); - return; - } - add(params[1], params[2]); - return; - } - - if(params[0] == "del") { - if(params.size() != 2) { - printf("The command 'del' needs 1 parameter.\n"); - printf("%s", usage_str); - return; - } - del(params[1]); - return; - } - - if(params[0] == "help") { - printf("%s", usage_str); - return; - } - - printf("Unknown command '%s'\n", params[0].c_str()); - printf("%s", usage_str); - return; -} |