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

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: lds_object.hpp,v $
  4.  * PRODUCTION Revision 1000.0  2003/10/29 21:01:30  gouriano
  5.  * PRODUCTION PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.9
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef LDS_OBJECT_HPP__
  10. #define LDS_OBJECT_HPP__
  11. /*  $Id: lds_object.hpp,v 1000.0 2003/10/29 21:01:30 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author: Anatoliy Kuznetsov
  37.  *
  38.  * File Description: Different operations on LDS Object table
  39.  *
  40.  */
  41. #include <corelib/ncbistd.hpp>
  42. #include <util/format_guess.hpp>
  43. #include <objtools/lds/lds_db.hpp>
  44. #include <objtools/lds/lds_set.hpp>
  45. #include <objtools/lds/lds_expt.hpp>
  46. #include <objtools/lds/admin/lds_coreobjreader.hpp>
  47. BEGIN_NCBI_SCOPE
  48. BEGIN_SCOPE(objects)
  49. class CObjectManager;
  50. class CScope;
  51. //////////////////////////////////////////////////////////////////
  52. //
  53. // SLDS_ObjectDB and SLDS_AnnotDB related methods.
  54. //
  55. class NCBI_LDS_EXPORT CLDS_Object
  56. {
  57. public:
  58.     CLDS_Object(SLDS_TablesCollection& db, const map<string, int>& obj_map);
  59.     ~CLDS_Object();
  60.     // Delete all objects living in the specified set of files.
  61.     // All deleted ids are added to deleted set.
  62.     void DeleteCascadeFiles(const CLDS_Set& file_ids, 
  63.                             CLDS_Set* objects_deleted,
  64.                             CLDS_Set* annotations_deleted);
  65.     // Reload all objects in given set of files
  66.     void UpdateCascadeFiles(const CLDS_Set& file_ids);
  67.     void UpdateFileObjects(int file_id,
  68.                            const string& file_name,
  69.                            CFormatGuess::EFormat format);
  70.     // Return max record id in "object" and "annotation" tables. 
  71.     // Both tables share the same objects sequence numbering.
  72.     // Function returns 0 if no record were found.
  73.     int FindMaxObjRecId();
  74. protected:
  75.     // Checks if parsed object is a "bio object" (returns TRUE) 
  76.     // or an annotation. if applicable object_str_id parameter receives
  77.     // objject or annotation id. (fasta format).
  78.     // If possible function extracts objects' title and molecule type
  79.     // (0 - unknown, 1 - NA, 2 - protein)
  80.     bool IsObject(const CLDS_CoreObjectsReader::SObjectDetails& parse_info,
  81.                   string* object_str_id, 
  82.                   string* object_title);
  83.     // Save object to the database, return record id.
  84.     // NOTE: This function recursively finds all objects' parents and saves
  85.     // the whole genealogy tree (not only the immediate argument).
  86.     int SaveObject(int file_id, 
  87.                    CLDS_CoreObjectsReader* sniffer,
  88.                    CLDS_CoreObjectsReader::SObjectDetails* obj_info);
  89.     // Save object information, return record id. This function is specific 
  90.     // for fasta format.
  91.     int SaveObject(int file_id,
  92.                    const string& seq_id,
  93.                    const string& description,
  94.                    size_t offset,
  95.                    int type_id);
  96. private:
  97.     CLDS_Object(const CLDS_Object&);
  98.     CLDS_Object& operator=(const CLDS_Object&);
  99. private:
  100.     SLDS_TablesCollection&  m_db;
  101.     const map<string, int>& m_ObjTypeMap;
  102.     // Max. id in "object" and "annotation" table
  103.     int                     m_MaxObjRecId;
  104.     CRef<CObjectManager>    m_TSE_Manager;  // OM for top level seq entry
  105.     CRef<CScope>            m_Scope;        // OM Scope
  106. };
  107. END_SCOPE(objects)
  108. END_NCBI_SCOPE
  109. /*
  110.  * ===========================================================================
  111.  * $Log: lds_object.hpp,v $
  112.  * Revision 1000.0  2003/10/29 21:01:30  gouriano
  113.  * PRODUCTION: IMPORTED [ORIGINAL] Dev-tree R1.9
  114.  *
  115.  * Revision 1.9  2003/07/29 19:50:30  kuznets
  116.  * Replaced bare pointers with CRef<>
  117.  *
  118.  * Revision 1.8  2003/07/09 19:30:18  kuznets
  119.  * Implemented collection of sequence ids from alignments.
  120.  *
  121.  * Revision 1.7  2003/06/16 16:24:16  kuznets
  122.  * Fixed #include paths (lds <-> lds_admin separation)
  123.  *
  124.  * Revision 1.6  2003/06/04 16:34:42  kuznets
  125.  * Added forward declaration of "ObjectManager & Co".
  126.  *
  127.  * Revision 1.5  2003/06/03 19:14:02  kuznets
  128.  * Added lds dll export/import specifications
  129.  *
  130.  * Revision 1.4  2003/06/03 14:07:46  kuznets
  131.  * Include paths changed to reflect the new directory structure
  132.  *
  133.  * Revision 1.3  2003/05/30 20:29:39  kuznets
  134.  * Implemented annotations loading
  135.  *
  136.  * Revision 1.2  2003/05/23 20:33:33  kuznets
  137.  * Bulk changes in lds library, code reorganizations, implemented top level
  138.  * objects read, metainformation persistance implemented for top level objects...
  139.  *
  140.  * Revision 1.1  2003/05/22 21:01:02  kuznets
  141.  * Initial revision
  142.  *
  143.  * ===========================================================================
  144.  */
  145. #endif