Back to index

salome-kernel  6.5.0
SALOMEDSImpl_AttributeTarget.cxx
Go to the documentation of this file.
00001 // Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
00002 //
00003 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
00004 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
00005 //
00006 // This library is free software; you can redistribute it and/or
00007 // modify it under the terms of the GNU Lesser General Public
00008 // License as published by the Free Software Foundation; either
00009 // version 2.1 of the License.
00010 //
00011 // This library is distributed in the hope that it will be useful,
00012 // but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00014 // Lesser General Public License for more details.
00015 //
00016 // You should have received a copy of the GNU Lesser General Public
00017 // License along with this library; if not, write to the Free Software
00018 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
00019 //
00020 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
00021 //
00022 
00023 //  File   : SALOMEDSImpl_AttributeTarget.cxx
00024 //  Author : Sergey RUIN
00025 //  Module : SALOME
00026 //
00027 #include "SALOMEDSImpl_AttributeTarget.hxx"
00028 #include "SALOMEDSImpl_AttributeReference.hxx"
00029 #include "SALOMEDSImpl_Study.hxx"
00030 
00031 //=======================================================================
00032 //function : GetID
00033 //purpose  : 
00034 //=======================================================================
00035 
00036 const std::string& SALOMEDSImpl_AttributeTarget::GetID () 
00037 {
00038   static std::string SALOMEDSImpl_AttributeTargetID ("12837197-8F52-11d6-A8A3-0001021E8C7F");
00039   return SALOMEDSImpl_AttributeTargetID;
00040 }
00041 
00042 
00043 //=======================================================================
00044 //function : Set
00045 //purpose  : 
00046 //=======================================================================
00047 
00048 SALOMEDSImpl_AttributeTarget* SALOMEDSImpl_AttributeTarget::Set (const DF_Label& L) 
00049 {
00050   SALOMEDSImpl_AttributeTarget* A = NULL;
00051   if (!(A=(SALOMEDSImpl_AttributeTarget*)L.FindAttribute(SALOMEDSImpl_AttributeTarget::GetID()))) {
00052     A = new  SALOMEDSImpl_AttributeTarget(); 
00053     L.AddAttribute(A);
00054   }
00055   return A;
00056 }
00057 
00058 
00059 //=======================================================================
00060 //function : constructor
00061 //purpose  : 
00062 //=======================================================================
00063 SALOMEDSImpl_AttributeTarget::SALOMEDSImpl_AttributeTarget()
00064 :SALOMEDSImpl_GenericAttribute("AttributeTarget")
00065 {
00066 }
00067 
00068 void SALOMEDSImpl_AttributeTarget::SetRelation(const std::string& theRelation)
00069 {
00070   CheckLocked();
00071   if(myRelation == theRelation) return;
00072 
00073   Backup();
00074   myRelation = theRelation; 
00075   
00076   SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
00077 }
00078 
00079 //=======================================================================
00080 //function : Add
00081 //purpose  : 
00082 //=======================================================================
00083 void SALOMEDSImpl_AttributeTarget::Add(const SALOMEDSImpl_SObject& theSO) 
00084 {
00085   Backup();
00086   DF_Label aRefLabel = theSO.GetLabel();
00087   SALOMEDSImpl_AttributeReference* aReference;
00088   if ((aReference=(SALOMEDSImpl_AttributeReference*)aRefLabel.FindAttribute(SALOMEDSImpl_AttributeReference::GetID()))) {
00089     myVariables[aRefLabel.Entry()]=aReference;
00090   } 
00091   
00092   SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
00093 }
00094 
00095 //=======================================================================
00096 //function : Get
00097 //purpose  : 
00098 //=======================================================================
00099 std::vector<SALOMEDSImpl_SObject> SALOMEDSImpl_AttributeTarget::Get() 
00100 {
00101   std::vector<SALOMEDSImpl_SObject> aSeq;
00102   
00103   for (std::map< std::string , DF_Attribute* >::iterator iter = myVariables.begin(); iter != myVariables.end(); ++iter)
00104     aSeq.push_back( SALOMEDSImpl_Study::SObject(iter->second->Label()));
00105   
00106   return aSeq;
00107 }
00108 
00109 //=======================================================================
00110 //function : Remove
00111 //purpose  : 
00112 //=======================================================================
00113 void SALOMEDSImpl_AttributeTarget::Remove(const SALOMEDSImpl_SObject& theSO) 
00114 {
00115   Backup();
00116   DF_Label aRefLabel = theSO.GetLabel();
00117 
00118   myVariables.erase(aRefLabel.Entry());
00119   
00120   SetModifyFlag(); //SRN: Mark the study as being modified, so it could be saved 
00121 }
00122 
00123 //=======================================================================
00124 //function : ID
00125 //purpose  : 
00126 //=======================================================================
00127 const std::string& SALOMEDSImpl_AttributeTarget::ID () const { return GetID(); }
00128 
00129 //=======================================================================
00130 //function : Restore
00131 //purpose  :
00132 //=======================================================================
00133 void SALOMEDSImpl_AttributeTarget::Restore(DF_Attribute* With)
00134 {
00135   SALOMEDSImpl_AttributeTarget* REL = dynamic_cast<SALOMEDSImpl_AttributeTarget*>(With);
00136   myRelation = REL->GetRelation();
00137   myVariables.clear();
00138   for (std::map< std::string , DF_Attribute* >::iterator iter = REL->myVariables.begin(); iter != REL->myVariables.end(); ++iter){
00139     myVariables[iter->first]=iter->second;
00140   }
00141 }
00142 
00143 //=======================================================================
00144 //function : NewEmpty
00145 //purpose  :
00146 //=======================================================================
00147 DF_Attribute* SALOMEDSImpl_AttributeTarget::NewEmpty() const
00148 {
00149   return new SALOMEDSImpl_AttributeTarget();
00150 }
00151 
00152 //=======================================================================
00153 //function : Paste
00154 //purpose  :
00155 //=======================================================================
00156 void SALOMEDSImpl_AttributeTarget::Paste(DF_Attribute* into)
00157 {
00158   SALOMEDSImpl_AttributeTarget* REL = dynamic_cast<SALOMEDSImpl_AttributeTarget*>(into);
00159   REL->SetRelation(myRelation);
00160   REL->myVariables.clear();
00161   for (std::map< std::string , DF_Attribute* >::iterator iter = myVariables.begin(); iter != myVariables.end(); ++iter){
00162     REL->myVariables[iter->first]=iter->second;
00163   }  
00164 }