From da6bfc301203b0181dcf70a9798a7d840d514126 Mon Sep 17 00:00:00 2001 From: deva Date: Mon, 5 Jul 2010 06:57:54 +0000 Subject: Partial commit: Move macrotool to subfolder. --- server/src/macrotool_dump.cc | 339 ------------------------------------------- 1 file changed, 339 deletions(-) delete mode 100644 server/src/macrotool_dump.cc (limited to 'server/src/macrotool_dump.cc') diff --git a/server/src/macrotool_dump.cc b/server/src/macrotool_dump.cc deleted file mode 100644 index f3f7e42..0000000 --- a/server/src/macrotool_dump.cc +++ /dev/null @@ -1,339 +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 "macrotool_util.h" - -#include "debug.h" - -#include "macroparser.h" -#include "templateparser.h" - -#include -#include -#include - -#include - -#include "configuration.h" - -#include "exception.h" - -#include "database.h" - -struct _macro { - std::string name; - std::string title; - std::set templates; - std::vector fields; - std::string file; - std::string version; -}; - -struct _template { - std::string name; - std::string title; - std::vector 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 getFields(Widget &widget) -{ - std::vector fields; - - std::vector< Widget >::iterator w = widget.widgets.begin(); - while(w != widget.widgets.end()) { - std::vector 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 macroList() -{ - std::map macros; - - std::vector macrofiles = getMacros(); - std::vector::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 templatefiles = getTemplates(); - std::vector::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::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 fieldnames = db.getFieldnames(); - - std::map macros = macroList(); - std::map::iterator ms = macros.begin(); - while(ms != macros.end()) { - printf("Macro: %s\n", ms->second.name.c_str()); - - std::vector::iterator ts = ms->second.fields.begin(); - while(ts != ms->second.fields.end()) { - bool reg = false; - - std::vector::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 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::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::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 templateList() -{ - std::map templates; - - std::vector templatefiles = getTemplates(); - std::vector::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::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 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::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::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 params) -{ - if(params.size() < 1) { - printf("%s", usage_str); - return; - } - - PRACRO_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; -} -- cgit v1.2.3