diff options
author | deva <deva> | 2010-07-06 08:27:54 +0000 |
---|---|---|
committer | deva <deva> | 2010-07-06 08:27:54 +0000 |
commit | 79ac4d97bc05b5d85f41957f53cfc1fe01ae8a7c (patch) | |
tree | 6bc145a7e5a83dc2d7572f760b81c0bbb33fa2c7 /server/src/macrotool/macrotool_dump.cc | |
parent | a45c86f146667ddc9b451cff348b3315842093c0 (diff) |
File renames
Diffstat (limited to 'server/src/macrotool/macrotool_dump.cc')
-rw-r--r-- | server/src/macrotool/macrotool_dump.cc | 341 |
1 files changed, 0 insertions, 341 deletions
diff --git a/server/src/macrotool/macrotool_dump.cc b/server/src/macrotool/macrotool_dump.cc deleted file mode 100644 index 30d0fd5..0000000 --- a/server/src/macrotool/macrotool_dump.cc +++ /dev/null @@ -1,341 +0,0 @@ -/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set et sw=2 ts=2: */ -/*************************************************************************** - * macrotool_dump.cc - * - * Mon Jul 6 08:37:22 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_dump.h" - -#include <vector> -#include <map> -#include <set> - -#include <config.h> - -#include <stdio.h> - -#include "macrotool_util.h" - -#include "debug.h" - -#include "macroparser.h" -#include "templateparser.h" - -#include "configuration.h" - -#include "exception.h" - -#include "database.h" - -struct _macro { - std::string name; - std::string title; - std::set<std::string> templates; - std::vector<std::string> fields; - std::string file; - std::string version; -}; - -struct _template { - std::string name; - std::string title; - std::vector<std::string> macros; - std::string file; - std::string version; -}; - -static const char usage_str[] = -" help Prints this helptext.\n" -" macros Writes macro names, versions, filenames, titles and template references to stdout.\n" -" templates Writes template names, versions, filenames, titles and macro references to stdout.\n" -" fields Outputs all fields sorted by macro, with indication of those in the fieldnames table.\n" -; - -static std::vector<std::string> getFields(Widget &widget) -{ - std::vector<std::string> fields; - - std::vector< Widget >::iterator w = widget.widgets.begin(); - while(w != widget.widgets.end()) { - std::vector<std::string> fs = getFields(*w); - fields.insert(fields.end(), fs.begin(), fs.end()); - w++; - } - - if(widget.attributes.find("name") != widget.attributes.end()) - fields.push_back(widget.attributes["name"]); - - return fields; -} - -static std::map<std::string, struct _macro> macroList() -{ - std::map<std::string, struct _macro> macros; - - 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); - try { - parser.parse(); - Macro *macro = parser.getMacro(); - - std::string key = macro->attributes["name"];// + "-" + macro->attributes["version"]; - macros[key].name = macro->attributes["name"]; - macros[key].file = *mfs; - macros[key].title = macro->widgets.attributes["caption"]; - macros[key].fields = getFields(macro->widgets); - macros[key].version = macro->attributes["version"]; - } catch( Exception &e ) { - printf("Skipping: %s: %s\n", mfs->c_str(), e.what()); - } - - mfs++; - } - - std::vector<std::string> templatefiles = getTemplates(); - std::vector<std::string>::iterator tfs = templatefiles.begin(); - while(tfs != templatefiles.end()) { - std::string templ = tfs->substr(0, tfs->length() - 4); - TemplateParser parser(Conf::xml_basedir + "/templates/" + *tfs); - try { - parser.parse(); - Template *t = parser.getTemplate(); - std::vector<Macro>::iterator ms = t->macros.begin(); - while(ms != t->macros.end()) { - if(ms->attributes.find("header") == ms->attributes.end()) - macros[ms->attributes["name"]].templates.insert(templ); - ms++; - } - } catch( Exception &e ) { - printf("Skipping: %s: %s\n", tfs->c_str(), e.what()); - } - - tfs++; - } - - return macros; -} - -static void dump_fields() -{ - Database db("pgsql", Conf::database_addr, "", Conf::database_user, Conf::database_passwd, ""); - std::vector<Fieldname> fieldnames = db.getFieldnames(); - - std::map<std::string, struct _macro> macros = macroList(); - std::map<std::string, struct _macro>::iterator ms = macros.begin(); - while(ms != macros.end()) { - printf("Macro: %s\n", ms->second.name.c_str()); - - std::vector<std::string>::iterator ts = ms->second.fields.begin(); - while(ts != ms->second.fields.end()) { - bool reg = false; - - std::vector<Fieldname>::iterator fs = fieldnames.begin(); - while(fs != fieldnames.end()) { - if(*ts == fs->name) { - reg = true; - break; - } - fs++; - } - - printf("\t%s %s\n", reg?"(*)":" ", ts->c_str()); - ts++; - } - - printf("\n"); - ms++; - } - - printf("----\n(*) Indicates that the field is registered in the fieldnames table.\n"); -} - -static void dump_macros() -{ - std::map<std::string, struct _macro> macros = macroList(); - macros[""].title = "Title:"; - macros[""].file = "File:"; - macros[""].version = "Version:"; - macros[""].name = "Macro:"; - macros[""].templates.insert("Templates:"); - - size_t name_sz = 0; - size_t version_sz = 0; - size_t file_sz = 0; - size_t title_sz = 0; - - std::map<std::string, struct _macro>::iterator ms = macros.begin(); - while(ms != macros.end()) { - if(ms->second.name.length() > name_sz) name_sz = ms->second.name.length(); - if(ms->second.version.length() > version_sz) version_sz = ms->second.version.length(); - if(ms->second.file.length() > file_sz) file_sz = ms->second.file.length(); - if(ms->second.title.length() > title_sz) title_sz = ms->second.title.length(); - ms++; - } - - ms = macros.begin(); - while(ms != macros.end()) { - printcolumn(ms->second.name, name_sz); - printcolumn(ms->second.version, version_sz); - printcolumn(ms->second.file, file_sz); - printcolumn(ms->second.title, title_sz); - - std::set<std::string>::iterator ts = ms->second.templates.begin(); - while(ts != ms->second.templates.end()) { - if(ts != ms->second.templates.begin()) printf(", "); - printf("%s", ts->c_str() ); - ts++; - } - - printf("\n"); - ms++; - } -} - -static std::map<std::string, struct _template> templateList() -{ - std::map<std::string, struct _template> templates; - - std::vector<std::string> templatefiles = getTemplates(); - std::vector<std::string>::iterator tfs = templatefiles.begin(); - while(tfs != templatefiles.end()) { - TemplateParser parser(Conf::xml_basedir + "/templates/" + *tfs); - try { - parser.parse(); - Template *t = parser.getTemplate(); - - std::string key = t->attributes["name"]; - - templates[key].file = *tfs; - templates[key].name = t->attributes["name"]; - templates[key].title = t->attributes["title"]; - templates[key].version = t->attributes["version"]; - - std::vector<Macro>::iterator ms = t->macros.begin(); - while(ms != t->macros.end()) { - if(ms->attributes.find("header") == ms->attributes.end()) - templates[key].macros.push_back(ms->attributes["name"]); - ms++; - } - } catch( Exception &e ) { - printf("Skipping: %s: %s\n", tfs->c_str(), e.what()); - } - tfs++; - } - - return templates; -} - -static void dump_templates() -{ - std::map<std::string, struct _template> templates = templateList(); - templates[""].title = "Title:"; - templates[""].file = "File:"; - templates[""].version = "Version:"; - templates[""].name = "Template:"; - - size_t name_sz = 0; - size_t version_sz = 0; - size_t file_sz = 0; - size_t title_sz = 0; - - std::map<std::string, struct _template>::iterator ts = templates.begin(); - while(ts != templates.end()) { - if(ts->second.name.length() > name_sz) name_sz = ts->second.name.length(); - if(ts->second.version.length() > version_sz) version_sz = ts->second.version.length(); - if(ts->second.file.length() > file_sz) file_sz = ts->second.file.length(); - if(ts->second.title.length() > title_sz) title_sz = ts->second.title.length(); - ts++; - } - - ts = templates.begin(); - while(ts != templates.end()) { - printcolumn(ts->second.name, name_sz); - printcolumn(ts->second.version, version_sz); - printcolumn(ts->second.file, file_sz); - printcolumn(ts->second.title, title_sz); - - printf("\n"); - std::vector<std::string>::iterator ms = ts->second.macros.begin(); - while(ms != ts->second.macros.end()) { - printf("\t%s\n", ms->c_str() ); - ms++; - } - - printf("\n"); - ts++; - } -} - -void macrotool_dump(std::vector<std::string> params) -{ - if(params.size() < 1) { - printf("%s", usage_str); - return; - } - - DEBUG(fieldnames, "dump: %s\n", params[0].c_str()); - - if(params[0] == "fields") { - if(params.size() != 1) { - printf("The command 'fields' doen't take any parameters.\n"); - printf("%s", usage_str); - return; - } - dump_fields(); - return; - } - - if(params[0] == "macros") { - if(params.size() != 1) { - printf("The command 'macro' doen't take any parameters.\n"); - printf("%s", usage_str); - return; - } - dump_macros(); - return; - } - - if(params[0] == "templates") { - if(params.size() != 1) { - printf("The command 'templates' doen't take any parameters.\n"); - printf("%s", usage_str); - return; - } - dump_templates(); - return; - } - - if(params[0] == "help") { - printf("%s", usage_str); - return; - } - - printf("Unknown command '%s'\n", params[0].c_str()); - printf("%s", usage_str); - return; -} |