sage_reader.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:6k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: sage_reader.cpp,v $
  4.  * PRODUCTION Revision 1000.4  2004/06/01 20:58:42  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: sage_reader.cpp,v 1000.4 2004/06/01 20:58:42 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <corelib/ncbifile.hpp>
  41. #include <gui/core/doc_exception.hpp>
  42. #include <gui/core/doc_manager.hpp>
  43. #include <gui/core/idocument.hpp>
  44. #include <gui/core/plugin_utils.hpp>
  45. #include <gui/utils/system_path.hpp>
  46. #include <gui/core/version.hpp>
  47. #include <gui/plugin/PluginCommandSet.hpp>
  48. #include <gui/plugin/PluginInfo.hpp>
  49. #include <gui/plugin/PluginValue.hpp>
  50. #include <gui/utils/message_box.hpp>
  51. #include <objmgr/object_manager.hpp>
  52. #include <objects/seqset/Seq_entry.hpp>
  53. #include <serial/iterator.hpp>
  54. #include <serial/objostrasn.hpp>
  55. #include <serial/serial.hpp>
  56. #include "sage_reader.hpp"
  57. #include <objtools/data_loaders/table/sage_dload.hpp>
  58. #include <sqlite/sqlite.hpp>
  59. BEGIN_NCBI_SCOPE
  60. USING_SCOPE(objects);
  61. CSageReader::CSageReader()
  62. {
  63. }
  64. CSageReader::~CSageReader()
  65. {
  66. }
  67. void CSageReader::GetInfo(CPluginInfo& info)
  68. {
  69.     info.Reset();
  70.     // version info macro
  71.     info.SetInfo(CPluginVersion::eMajor, CPluginVersion::eMinor, 0,
  72.                  string(__DATE__) + " " + string(__TIME__),
  73.                  "CSageReader",
  74.                  "Import SAGE Data",
  75.                  "Import SAGE data from a table",
  76.                  "");
  77.     // command info
  78.     CPluginCommandSet& cmds     = info.SetCommands();
  79.     CPluginCommand& import_args = cmds.AddDataCommand(eDataCommand_import);
  80.     import_args.AddArgument("document", "Document", CPluginArg::eDocument);
  81.     import_args.AddArgument("fname", "File to load", CPluginArg::eFile);
  82. }
  83. void CSageReader::Import(CPluginMessage& msg)
  84. {
  85.     const CPluginCommand& args = msg.GetRequest().GetCommand();
  86.     CPluginReply& reply = msg.SetReply();
  87.     IDocument* doc = const_cast<IDocument*> (&args["document"].AsDocument());
  88.     if ( !doc ) {
  89.         reply.SetStatus(eMessageStatus_ignored);
  90.         return;
  91.     }
  92.     const string& fname = args["fname"].AsString();
  93.     CSageDataLoader* loader = NULL;
  94.     TLoaders::iterator iter = m_Loaders.find(fname);
  95.     if (iter != m_Loaders.end()) {
  96.         loader = iter->second;
  97.     }
  98.     string import_name;
  99.     bool delete_file = true;
  100.     if ( !CSQLite::IsValidDB(fname) ) {
  101.         if (NcbiMessageBox("Do you want to import the file for future use?",
  102.                            eDialog_YesNo, eIcon_Question,
  103.                            "Import Permanently?") == eYes) {
  104.             import_name = fname;
  105.             import_name += ".db";
  106.             delete_file = false;
  107.         }
  108.     } else {
  109.         import_name = fname;
  110.         delete_file = false;
  111.     }
  112.     if (import_name.empty()) {
  113.         import_name = CSystemPath::ResolvePath("<home>", "tmp");
  114.         CDir dir(import_name);
  115.         if ( !dir.Exists() ) {
  116.             dir.Create();
  117.         }
  118.         import_name = CFile::GetTmpNameEx(import_name, "tdb_");
  119.     }
  120.     if ( !loader ) {
  121.         loader = new CSageDataLoader(fname, import_name, delete_file);
  122.         CDocManager::GetObjectManager().RegisterDataLoader(*loader);
  123.         m_Loaders[loader->GetName()] = loader;
  124.     }
  125.     // create our data loader
  126.     CScope& scope = doc->GetScope();
  127.     scope.AddDataLoader(loader->GetName(), 80);
  128.     doc->PostDocumentChanged();
  129.     reply.SetStatus(eMessageStatus_success);
  130. }
  131. END_NCBI_SCOPE
  132. /*
  133.  * ===========================================================================
  134.  * $Log: sage_reader.cpp,v $
  135.  * Revision 1000.4  2004/06/01 20:58:42  gouriano
  136.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.8
  137.  *
  138.  * Revision 1.8  2004/05/21 22:27:48  gorelenk
  139.  * Added PCH ncbi_pch.hpp
  140.  *
  141.  * Revision 1.7  2004/02/17 20:35:27  rsmith
  142.  * moved core/settings.[ch]pp and core/system_path.[ch]pp to config and utils, respectively.
  143.  *
  144.  * Revision 1.6  2004/02/11 21:01:52  jcherry
  145.  * Use file argument rather than manually launching file chooser
  146.  *
  147.  * Revision 1.5  2003/12/22 19:30:11  dicuccio
  148.  * Updated to match change in IDocument - UpdateAllViews() goes away
  149.  *
  150.  * Revision 1.4  2003/11/24 15:45:41  dicuccio
  151.  * Renamed CVersion to CPluginVersion
  152.  *
  153.  * Revision 1.3  2003/11/04 17:49:25  dicuccio
  154.  * Changed calling parameters for plugins - pass CPluginMessage instead of paired
  155.  * CPluginCommand/CPluginReply
  156.  *
  157.  * Revision 1.2  2003/10/10 17:19:33  dicuccio
  158.  * Added Import() interface.  Removed dead Save() interfaces
  159.  *
  160.  * Revision 1.1  2003/10/07 13:42:10  dicuccio
  161.  * Added SAGE import plugin
  162.  *
  163.  * ===========================================================================
  164.  */