00001 #include "stdafx.h"
00002
00003 #include "BON.h"
00004 #include "BONImpl.h"
00005
00006 #include "RoleRep.h"
00007 #include "FCO.h"
00008
00009 #include "fstream"
00010
00011
00012
00013
00014
00015 std::string get_name( const std::string& line, const std::string & token = "name")
00016 {
00017 std::string::size_type start_of_token = line.find(token);
00018 if (start_of_token == std::string::npos) return "";
00019
00020 std::string::size_type first_quote = line.substr( start_of_token).find( "\"");
00021 if (first_quote == std::string::npos) return "";
00022
00023 std::string::size_type len_of_name = line.substr(start_of_token + first_quote + 1).find("\"");
00024 if ( len_of_name == std::string::npos) return "";
00025
00026 std::string pp = line.substr( start_of_token + first_quote + 1, len_of_name);
00027 return line.substr( start_of_token + first_quote + 1, len_of_name);
00028 }
00029
00030
00031 bool PartStringLex::operator()( const std::string& peer1, const std::string& peer2) const
00032 {
00033 std::string part1_name = ::get_name( peer1, "role");
00034 std::string part2_name = ::get_name( peer2, "role");
00035 int k = part1_name.compare( part2_name);
00036
00037 return (k < 0);
00038 }
00039
00040
00041 bool StringLex::operator()( const std::string& peer1, const std::string& peer2) const
00042 {
00043 int k = peer1.compare(peer2);
00044
00045 return (k < 0);
00046 }
00047
00048
00049 bool RoleStringLex::operator()( const RoleRep& peer1, const RoleRep& peer2) const
00050 {
00051 std::string n1 = peer1.getSmartRoleName();
00052 std::string n2 = peer2.getSmartRoleName();
00053 int k = n1.compare( n2);
00054
00055 return ( k < 0);
00056 }
00057
00058
00059 RoleRep::RoleRep(
00060 const std::string &role_name,
00061 FCO* ptr,
00062 ModelRep * model_ptr,
00063 bool is_port,
00064 const std::string &cardinality,
00065 bool inh_role,
00066 bool long_form)
00067 : m_roleName( role_name),
00068 m_ptr( ptr),
00069 m_model( model_ptr),
00070 m_isPort( is_port),
00071 m_cardinality( cardinality),
00072 m_inheritedRole( inh_role),
00073 m_longForm( long_form)
00074 {
00075 }
00076
00077 RoleRep::RoleRep( const RoleRep & peer)
00078 :
00079 m_roleName( peer.m_roleName),
00080 m_ptr( peer.m_ptr),
00081 m_model( peer.m_model),
00082 m_isPort( peer.m_isPort),
00083 m_cardinality( peer.m_cardinality),
00084 m_inheritedRole( peer.m_inheritedRole),
00085 m_longForm( peer.m_longForm)
00086 {
00087 }
00088
00089
00090 const RoleRep& RoleRep::operator=( const RoleRep & peer)
00091 {
00092 if (this == &peer) return *this;
00093 m_roleName = peer.m_roleName;
00094 m_ptr = peer.m_ptr;
00095 m_model = peer.m_model;
00096 m_isPort = peer.m_isPort;
00097 m_cardinality = peer.m_cardinality;
00098 m_inheritedRole = peer.m_inheritedRole;
00099 m_longForm = peer.m_longForm;
00100 return *this;
00101 }
00102
00103
00104 bool RoleRep::operator==( const RoleRep& peer) const
00105 {
00106 return
00107 m_roleName == peer.m_roleName &&
00108 m_ptr == peer.m_ptr &&
00109 m_model == peer.m_model &&
00110 m_isPort == peer.m_isPort &&
00111 m_cardinality == peer.m_cardinality &&
00112 m_inheritedRole == peer.m_inheritedRole &&
00113 m_longForm == peer.m_longForm;
00114 }
00115
00116
00117 bool RoleRep::operator!=( const RoleRep& peer) const
00118 {
00119 return !(*this == peer);
00120 }
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132 const std::string& RoleRep::getOnlyRoleName() const
00133 {
00134 return m_roleName;
00135 }
00136
00137
00138 std::string RoleRep::getSmartRoleName() const
00139 {
00140 if ( m_longForm) return m_ptr->getName() + m_roleName;
00141 else if (m_roleName != "") return (m_ptr->getNamespace().empty() ? "" : ( m_ptr->getNamespace() + Any::NamespaceDelimiter_str)) + m_roleName;
00142 else return m_ptr->getName();
00143 }
00144
00145
00146 FCO * RoleRep::getFCOPtr() const
00147 { return m_ptr; }
00148
00149
00150 ModelRep * RoleRep::getModelRepPtr() const
00151 { return m_model; }
00152
00153
00154 bool RoleRep::isPort() const
00155 {
00156 return m_isPort;
00157 }
00158
00159
00160 const std::string& RoleRep::getCardinality() const
00161 {
00162 return m_cardinality;
00163 }
00164
00165
00166 void RoleRep::setInheritedRole( bool val)
00167 {
00168 m_inheritedRole = val;
00169 }
00170
00171
00172 bool RoleRep::isInheritedRole() const
00173 {
00174 return m_inheritedRole;
00175 }
00176
00177
00178 void RoleRep::setLongForm( bool val)
00179 {
00180 m_longForm = val;
00181 }
00182
00183
00184 bool RoleRep::isLongForm() const
00185 {
00186 return m_longForm;
00187 }