From ca32aba4df1b021b1acaa8f0650fa6a0cd7b9d80 Mon Sep 17 00:00:00 2001 From: deva Date: Mon, 6 Jul 2009 13:50:56 +0000 Subject: Rewrite of parameter handler. A new fieldnames module... currently does nothing useful. --- server/src/Makefile.am | 3 ++ server/src/macrotool.cc | 23 ++++++----- server/src/macrotool_dump.cc | 30 +++++++++++--- server/src/macrotool_dump.h | 3 +- server/src/macrotool_fieldnames.cc | 80 ++++++++++++++++++++++++++++++++++++++ server/src/macrotool_fieldnames.h | 36 +++++++++++++++++ 6 files changed, 158 insertions(+), 17 deletions(-) create mode 100644 server/src/macrotool_fieldnames.cc create mode 100644 server/src/macrotool_fieldnames.h diff --git a/server/src/Makefile.am b/server/src/Makefile.am index 768f563..c1ba9e4 100644 --- a/server/src/Makefile.am +++ b/server/src/Makefile.am @@ -47,6 +47,7 @@ macrotool_SOURCES = \ log.cc \ macroparser.cc \ macrotool_dump.cc \ + macrotool_fieldnames.cc \ pracrodao.cc \ pracrodaopgsql.cc \ saxparser.cc \ @@ -69,6 +70,8 @@ EXTRA_DIST = \ luaquerymapper.h \ luaresume.h \ macroparser.h \ + macrotool_dump.h \ + macrotool_fieldnames.h \ pracrodao.h \ pracrodaopgsql.h \ resumeparser.h \ diff --git a/server/src/macrotool.cc b/server/src/macrotool.cc index 46fbc24..44beeef 100644 --- a/server/src/macrotool.cc +++ b/server/src/macrotool.cc @@ -31,12 +31,16 @@ // For getopt_long and friends #include +#include +#include + #include "configurationparser.h" #include "configuration.h" #include "debug.h" #include "macrotool_dump.h" +#include "macrotool_fieldnames.h" static const char version_str[] = "Pracro server v" VERSION "\n" @@ -62,6 +66,8 @@ static const char usage_str[] = "\n" "Commands:\n" " dump entity Dumps 'entity' to screen ('dump help' to see list of entities).\n" +" fieldnames entity Add/delete/update entries in the fieldnames database\n" +" ('fieldnames help' to see list of entities).\n" ; ConfigurationParser *configparser = NULL; @@ -125,8 +131,6 @@ int main(int argc, char *argv[]) printf(usage_str, argv[0]); exit(EXIT_FAILURE); } - - std::string command = argv[optind]; if(debugstr) { pracro_debug_parse(debugstr); @@ -140,16 +144,15 @@ int main(int argc, char *argv[]) Conf::xml_basedir = xml_basedir; } - if(command == "dump") { - optind++; - if(optind >= argc) { - fprintf(stderr, "Missing command parameter\n"); - printf(usage_str, argv[0]); - exit(EXIT_FAILURE); - } - macrotool_dump(argv[optind]); + std::string command = argv[optind++]; + std::vector params; + while(optind < argc) { + params.push_back(argv[optind++]); } + if(command == "dump") macrotool_dump(params); + if(command == "fieldnames") macrotool_fieldnames(params); + // Clean up if(configfile) free(configfile); diff --git a/server/src/macrotool_dump.cc b/server/src/macrotool_dump.cc index 93a96a3..9248d03 100644 --- a/server/src/macrotool_dump.cc +++ b/server/src/macrotool_dump.cc @@ -264,23 +264,41 @@ static void dump_templates() } } -void macrotool_dump(std::string param) +void macrotool_dump(std::vector params) { - PRACRO_DEBUG(dump, "dump: %s\n", param.c_str()); - - if(param == "help") { + if(params.size() < 1) { printf(usage_str); return; } - if(param == "macros") { + PRACRO_DEBUG(fieldnames, "dump: %s\n", params[0].c_str()); + + if(params[0] == "macros") { + if(params.size() != 1) { + printf("The command 'macro' doen't take any parameters.\n"); + printf(usage_str); + return; + } dump_macros(); return; } - if(param == "templates") { + if(params[0] == "templates") { + if(params.size() != 1) { + printf("The command 'templates' doen't take any parameters.\n"); + printf(usage_str); + return; + } dump_templates(); return; } + if(params[0] == "help") { + printf(usage_str); + return; + } + + printf("Unknown command '%s'\n", params[0].c_str()); + printf(usage_str); + return; } diff --git a/server/src/macrotool_dump.h b/server/src/macrotool_dump.h index cc5adff..1f2101d 100644 --- a/server/src/macrotool_dump.h +++ b/server/src/macrotool_dump.h @@ -28,8 +28,9 @@ #ifndef __PRACRO_MACROTOOL_DUMP_H__ #define __PRACRO_MACROTOOL_DUMP_H__ +#include #include -void macrotool_dump(std::string param); +void macrotool_dump(std::vector params); #endif/*__PRACRO_MACROTOOL_DUMP_H__*/ diff --git a/server/src/macrotool_fieldnames.cc b/server/src/macrotool_fieldnames.cc new file mode 100644 index 0000000..f2475f2 --- /dev/null +++ b/server/src/macrotool_fieldnames.cc @@ -0,0 +1,80 @@ +/* -*- 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 "debug.h" + +#include "pracrodaopgsql.h" +#include "configuration.h" + +static const char usage_str[] = +" help Prints this helptext.\n" +" set name desc Add a field (or update) called 'name', described as 'desc'\n" +; + +static void add(std::string name, std::string desc) +{ +#ifndef WITHOUT_DB + PRACRO_DEBUG("SET (name: %s - desc: %s)\n", name.c_str(), desc.c_str()); + PracroDAOPgsql sql(Conf::database_addr, "", + Conf::database_user, + Conf::database_passwd, ""); +#else /*WITHOUT_DB*/ + printf("Project not compiled with db spport.") +#endif/*WITHOUT_DB*/ + +} + +void macrotool_fieldnames(std::vector params) +{ + if(params.size() < 1) { + printf(usage_str); + return; + } + + PRACRO_DEBUG(fieldnames, "fieldnames: %s\n", params[0].c_str()); + + if(params[0] == "set") { + if(params.size() != 3) { + printf("The command 'set' needs 2 parameters.\n"); + printf(usage_str); + return; + } + add(params[1], params[2]); + return; + } + + if(params[0] == "help") { + printf(usage_str); + return; + } + + printf("Unknown command '%s'\n", params[0].c_str()); + printf(usage_str); + return; +} diff --git a/server/src/macrotool_fieldnames.h b/server/src/macrotool_fieldnames.h new file mode 100644 index 0000000..0ac2759 --- /dev/null +++ b/server/src/macrotool_fieldnames.h @@ -0,0 +1,36 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set et sw=2 ts=2: */ +/*************************************************************************** + * macrotool_fieldnames.h + * + * 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. + */ +#ifndef __PRACRO_MACROTOOL_FIELDNAMES_H__ +#define __PRACRO_MACROTOOL_FIELDNAMES_H__ + +#include +#include + +void macrotool_fieldnames(std::vector params); + +#endif/*__PRACRO_MACROTOOL_FIELDNAMES_H__*/ -- cgit v1.2.3