user_feat_table_reader.cpp

来自「ncbi源码」· C++ 代码 · 共 238 行

CPP
238
字号
/* * =========================================================================== * PRODUCTION $Log: user_feat_table_reader.cpp,v $ * PRODUCTION Revision 1000.3  2004/06/01 20:58:44  gouriano * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * PRODUCTION * =========================================================================== *//*  $Id: user_feat_table_reader.cpp,v 1000.3 2004/06/01 20:58:44 gouriano Exp $ * =========================================================================== * *                            PUBLIC DOMAIN NOTICE *               National Center for Biotechnology Information * *  This software/database is a "United States Government Work" under the *  terms of the United States Copyright Act.  It was written as part of *  the author's official duties as a United States Government employee and *  thus cannot be copyrighted.  This software/database is freely available *  to the public for use. The National Library of Medicine and the U.S. *  Government have not placed any restriction on its use or reproduction. * *  Although all reasonable efforts have been taken to ensure the accuracy *  and reliability of the software and data, the NLM and the U.S. *  Government do not and cannot warrant the performance or results that *  may be obtained by using this software or data. The NLM and the U.S. *  Government disclaim all warranties, express or implied, including *  warranties of performance, merchantability or fitness for any particular *  purpose. * *  Please cite the author in any work or product based on this material. * * =========================================================================== * * Authors:  Josh Cherry * * File Description: * */#include <ncbi_pch.hpp>#include <corelib/ncbifile.hpp>#include <gui/core/doc_exception.hpp>#include <gui/core/doc_manager.hpp>#include <gui/core/idocument.hpp>#include <gui/core/plugin_utils.hpp>#include <gui/utils/system_path.hpp>#include <gui/core/version.hpp>#include <gui/plugin/PluginCommandSet.hpp>#include <gui/plugin/PluginInfo.hpp>#include <gui/plugin/PluginValueConstraint.hpp>#include <gui/utils/message_box.hpp>#include <objmgr/object_manager.hpp>#include <objects/seqset/Seq_entry.hpp>#include <serial/iterator.hpp>#include <serial/objostrasn.hpp>#include <serial/serial.hpp>#include "user_feat_table_reader.hpp"#include <objtools/data_loaders/table/user_feature_dload.hpp>#include <sqlite/sqlite.hpp>BEGIN_NCBI_SCOPEUSING_SCOPE(objects);void CUsrFeatTableReader::GetInfo(CPluginInfo& info){    info.Reset();    // version info macro    info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0,                 string(__DATE__) + " " + string(__TIME__),                 "CUsrFeatTableReader",                 "Tabular user features",                 "Load the contents of a table of user features",                 "");    // command info    CPluginCommandSet& cmds     = info.SetCommands();    CPluginCommand& import_args = cmds.AddDataCommand(eDataCommand_import);    import_args.AddArgument("id", "ID",                            CSeq_id::GetTypeInfo(),                            CPluginArg::TData::e_Single);        import_args.AddArgument("fname", "File to load", CPluginArg::eFile);    import_args.AddDefaultArgument("offset", "Numbering convention in file",                                   CPluginArg::eString,                                    "Start of sequence is 1");    import_args.SetConstraint("offset", (*CPluginValueConstraint::CreateSet(),                                          "Start of sequence is 1",                                          "Start of sequence is 0"));    import_args.AddDefaultArgument("mode", "Accession to use",                                   CPluginArg::eString,                                   "Get accession from file");    import_args.SetConstraint("mode", (*CPluginValueConstraint::CreateSet(),                                       "Get accession from file",                                       "Use this ID"));    import_args.AddOptionalArgument("type",                      "\"type\" of user feature (overrides any in file)",                       CPluginArg::eString);}void CUsrFeatTableReader::Import(CPluginMessage& msg){    const CPluginCommand& args = msg.GetRequest().GetCommand();    CPluginReply& reply = msg.SetReply();    const CPluginArg& arg = args["id"];    IDocument* doc = const_cast<IDocument*>(arg.GetDocument());    const CSeq_id* id = dynamic_cast<const CSeq_id*>(arg.GetObject());    const string& fname = args["fname"].AsString();    CUsrFeatDataLoader* loader = NULL;    TLoaders::iterator iter = m_Loaders.find(fname);    if (iter != m_Loaders.end()) {        loader = iter->second;    }    string import_name;    bool delete_file = true;    if ( !CSQLite::IsValidDB(fname) ) {        if (NcbiMessageBox("Do you want to save the generated SQL file "                           "for future use?",                           eDialog_YesNo, eIcon_Question,                           "Save SQL File?") == eYes) {            import_name = fname;            import_name += ".db";            delete_file = false;        }    } else {        import_name = fname;        delete_file = false;    }    if (import_name.empty()) {        import_name = CSystemPath::ResolvePath("<home>", "tmp");        CDir dir(import_name);        if ( !dir.Exists() ) {            dir.Create();        }        import_name = CFile::GetTmpNameEx(import_name, "tdb_");    }    // figure out parameters    string offset_string = args["offset"].AsString();    CUsrFeatDataLoader::EOffset offset;    if (offset_string == "Start of sequence is 0") {        offset = CUsrFeatDataLoader::eBeginIsZero;    } else {        offset = CUsrFeatDataLoader::eBeginIsOne;    }    const CSeq_id* id_to_use = 0;    if (args["mode"].AsString() == "Use this ID") {        id_to_use = id;    }    string type_string;    if (args.HasArgument("type")  &&        CPluginUtils::IsValid(args["type"])) {        type_string = args["type"].AsString();    }    if ( !loader ) {        try {            loader = new CUsrFeatDataLoader(fname, import_name,                                            delete_file, offset,                                            type_string, id_to_use);        }        catch (exception& e) {            NcbiMessageBox(e.what(), eDialog_Ok, eIcon_Exclamation);            reply.SetStatus(eMessageStatus_failed);            return;        }        CDocManager::GetObjectManager().RegisterDataLoader(*loader);        m_Loaders[loader->GetName()] = loader;    }    // create our data loader    CScope& scope = doc->GetScope();    scope.AddDataLoader(loader->GetName(), 80);    doc->PostDocumentChanged();    reply.SetStatus(eMessageStatus_success);}END_NCBI_SCOPE/* * =========================================================================== * $Log: user_feat_table_reader.cpp,v $ * Revision 1000.3  2004/06/01 20:58:44  gouriano * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.9 * * Revision 1.9  2004/05/21 22:27:48  gorelenk * Added PCH ncbi_pch.hpp * * Revision 1.8  2004/02/17 20:35:28  rsmith * moved core/settings.[ch]pp and core/system_path.[ch]pp to config and utils, respectively. * * Revision 1.7  2004/02/17 15:17:31  jcherry * Removed help url in favor of new help system * * Revision 1.6  2004/02/11 21:01:52  jcherry * Use file argument rather than manually launching file chooser * * Revision 1.5  2004/01/27 18:45:34  dicuccio * Added missing header files * * Revision 1.4  2003/12/22 19:30:11  dicuccio * Updated to match change in IDocument - UpdateAllViews() goes away * * Revision 1.3  2003/11/24 15:45:41  dicuccio * Renamed CVersion to CPluginVersion * * Revision 1.2  2003/11/14 21:30:15  jcherry * Added url for help * * Revision 1.1  2003/11/14 19:09:19  jcherry * Initial version * * =========================================================================== */

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?