Nut/doc/html/tablemodel_8h_source.html

175 lines
18 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>Nut: src/tablemodel.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td style="padding-left: 0.5em;">
<div id="projectname">Nut
&#160;<span id="projectnumber">0.1</span>
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<div id="navrow1" class="tabs">
<ul class="tablist">
<li><a href="index.html"><span>Main&#160;Page</span></a></li>
<li><a href="annotated.html"><span>Classes</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<div id="navrow2" class="tabs2">
<ul class="tablist">
<li><a href="files.html"><span>File&#160;List</span></a></li>
</ul>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="headertitle">
<div class="title">tablemodel.h</div> </div>
</div><!--header-->
<div class="contents">
<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span>&#160;<span class="comment">/**************************************************************************</span></div>
<div class="line"><a name="l00002"></a><span class="lineno"> 2</span>&#160;<span class="comment">**</span></div>
<div class="line"><a name="l00003"></a><span class="lineno"> 3</span>&#160;<span class="comment">** This file is part of Nut project.</span></div>
<div class="line"><a name="l00004"></a><span class="lineno"> 4</span>&#160;<span class="comment">** https://github.com/HamedMasafi/Nut</span></div>
<div class="line"><a name="l00005"></a><span class="lineno"> 5</span>&#160;<span class="comment">**</span></div>
<div class="line"><a name="l00006"></a><span class="lineno"> 6</span>&#160;<span class="comment">** Nut is free software: you can redistribute it and/or modify</span></div>
<div class="line"><a name="l00007"></a><span class="lineno"> 7</span>&#160;<span class="comment">** it under the terms of the GNU Lesser General Public License as published by</span></div>
<div class="line"><a name="l00008"></a><span class="lineno"> 8</span>&#160;<span class="comment">** the Free Software Foundation, either version 3 of the License, or</span></div>
<div class="line"><a name="l00009"></a><span class="lineno"> 9</span>&#160;<span class="comment">** (at your option) any later version.</span></div>
<div class="line"><a name="l00010"></a><span class="lineno"> 10</span>&#160;<span class="comment">**</span></div>
<div class="line"><a name="l00011"></a><span class="lineno"> 11</span>&#160;<span class="comment">** Nut is distributed in the hope that it will be useful,</span></div>
<div class="line"><a name="l00012"></a><span class="lineno"> 12</span>&#160;<span class="comment">** but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div>
<div class="line"><a name="l00013"></a><span class="lineno"> 13</span>&#160;<span class="comment">** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div>
<div class="line"><a name="l00014"></a><span class="lineno"> 14</span>&#160;<span class="comment">** GNU Lesser General Public License for more details.</span></div>
<div class="line"><a name="l00015"></a><span class="lineno"> 15</span>&#160;<span class="comment">**</span></div>
<div class="line"><a name="l00016"></a><span class="lineno"> 16</span>&#160;<span class="comment">** You should have received a copy of the GNU Lesser General Public License</span></div>
<div class="line"><a name="l00017"></a><span class="lineno"> 17</span>&#160;<span class="comment">** along with Nut. If not, see &lt;http://www.gnu.org/licenses/&gt;.</span></div>
<div class="line"><a name="l00018"></a><span class="lineno"> 18</span>&#160;<span class="comment">**</span></div>
<div class="line"><a name="l00019"></a><span class="lineno"> 19</span>&#160;<span class="comment">**************************************************************************/</span></div>
<div class="line"><a name="l00020"></a><span class="lineno"> 20</span>&#160;</div>
<div class="line"><a name="l00021"></a><span class="lineno"> 21</span>&#160;<span class="preprocessor">#ifndef TABLESCHEEMA_H</span></div>
<div class="line"><a name="l00022"></a><span class="lineno"> 22</span>&#160;<span class="preprocessor"></span><span class="preprocessor">#define TABLESCHEEMA_H</span></div>
<div class="line"><a name="l00023"></a><span class="lineno"> 23</span>&#160;<span class="preprocessor"></span></div>
<div class="line"><a name="l00024"></a><span class="lineno"> 24</span>&#160;<span class="preprocessor">#include &lt;QtCore/QVariant&gt;</span></div>
<div class="line"><a name="l00025"></a><span class="lineno"> 25</span>&#160;<span class="preprocessor">#include &lt;QDebug&gt;</span></div>
<div class="line"><a name="l00026"></a><span class="lineno"> 26</span>&#160;<span class="keyword">class </span>QJsonObject;</div>
<div class="line"><a name="l00027"></a><span class="lineno"> 27</span>&#160;<span class="keyword">class </span><a class="code" href="class_table_model.html">TableModel</a>;</div>
<div class="line"><a name="l00028"></a><span class="lineno"> 28</span>&#160;</div>
<div class="line"><a name="l00029"></a><span class="lineno"><a class="code" href="struct_field_model.html"> 29</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_field_model.html">FieldModel</a>{</div>
<div class="line"><a name="l00030"></a><span class="lineno"> 30</span>&#160; <a class="code" href="struct_field_model.html">FieldModel</a>() : name(QString::null), length(0), defaultValue(QString::null),</div>
<div class="line"><a name="l00031"></a><span class="lineno"> 31</span>&#160; notNull(<span class="keyword">false</span>), isPrimaryKey(<span class="keyword">false</span>), isAutoIncrement(<span class="keyword">false</span>), isUnique(<span class="keyword">false</span>)</div>
<div class="line"><a name="l00032"></a><span class="lineno"> 32</span>&#160; {</div>
<div class="line"><a name="l00033"></a><span class="lineno"> 33</span>&#160;</div>
<div class="line"><a name="l00034"></a><span class="lineno"> 34</span>&#160; }</div>
<div class="line"><a name="l00035"></a><span class="lineno"> 35</span>&#160;</div>
<div class="line"><a name="l00036"></a><span class="lineno"> 36</span>&#160; QString name;</div>
<div class="line"><a name="l00037"></a><span class="lineno"> 37</span>&#160; QVariant::Type type;</div>
<div class="line"><a name="l00038"></a><span class="lineno"> 38</span>&#160; <span class="keywordtype">int</span> length;</div>
<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>&#160; QString defaultValue;</div>
<div class="line"><a name="l00040"></a><span class="lineno"> 40</span>&#160; <span class="keywordtype">bool</span> notNull;</div>
<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>&#160; <span class="keywordtype">bool</span> isPrimaryKey;</div>
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>&#160; <span class="keywordtype">bool</span> isAutoIncrement;</div>
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>&#160; <span class="keywordtype">bool</span> isUnique;</div>
<div class="line"><a name="l00044"></a><span class="lineno"> 44</span>&#160;</div>
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>&#160; <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="struct_field_model.html">FieldModel</a> &amp;f)<span class="keyword"> const</span>{</div>
<div class="line"><a name="l00046"></a><span class="lineno"> 46</span>&#160;</div>
<div class="line"><a name="l00047"></a><span class="lineno"> 47</span>&#160; <span class="keywordtype">bool</span> b = name == f.name</div>
<div class="line"><a name="l00048"></a><span class="lineno"> 48</span>&#160; &amp;&amp; type == f.type</div>
<div class="line"><a name="l00049"></a><span class="lineno"> 49</span>&#160; &amp;&amp; length == f.length</div>
<div class="line"><a name="l00050"></a><span class="lineno"> 50</span>&#160; &amp;&amp; defaultValue == f.defaultValue</div>
<div class="line"><a name="l00051"></a><span class="lineno"> 51</span>&#160; &amp;&amp; notNull == f.notNull;</div>
<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>&#160;</div>
<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>&#160; <span class="keywordflow">return</span> b;</div>
<div class="line"><a name="l00054"></a><span class="lineno"> 54</span>&#160; }</div>
<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>&#160;</div>
<div class="line"><a name="l00056"></a><span class="lineno"> 56</span>&#160; <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="struct_field_model.html">FieldModel</a> &amp;f)<span class="keyword"> const</span>{</div>
<div class="line"><a name="l00057"></a><span class="lineno"> 57</span>&#160; <span class="keywordflow">return</span> !(*<span class="keyword">this</span> == f);</div>
<div class="line"><a name="l00058"></a><span class="lineno"> 58</span>&#160; }</div>
<div class="line"><a name="l00059"></a><span class="lineno"> 59</span>&#160;};</div>
<div class="line"><a name="l00060"></a><span class="lineno"> 60</span>&#160;</div>
<div class="line"><a name="l00061"></a><span class="lineno"><a class="code" href="struct_relation_model.html"> 61</a></span>&#160;<span class="keyword">struct </span><a class="code" href="struct_relation_model.html">RelationModel</a>{</div>
<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>&#160; QString className;</div>
<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>&#160; QString localColumn;</div>
<div class="line"><a name="l00064"></a><span class="lineno"> 64</span>&#160; <a class="code" href="class_table_model.html">TableModel</a> *table;</div>
<div class="line"><a name="l00065"></a><span class="lineno"> 65</span>&#160; QString foregionColumn;</div>
<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>&#160;};</div>
<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="class_table_model.html"> 67</a></span>&#160;<span class="keyword">class </span><a class="code" href="class_table_model.html">TableModel</a></div>
<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>&#160;{</div>
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>&#160;<span class="keyword">public</span>:</div>
<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>&#160;</div>
<div class="line"><a name="l00071"></a><span class="lineno"> 71</span>&#160; <a class="code" href="class_table_model.html">TableModel</a>(<span class="keywordtype">int</span> typeId, QString tableName);</div>
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>&#160; <a class="code" href="class_table_model.html">TableModel</a>(QJsonObject json, QString tableName);</div>
<div class="line"><a name="l00073"></a><span class="lineno"> 73</span>&#160;</div>
<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>&#160; QJsonObject toJson() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00075"></a><span class="lineno"> 75</span>&#160;</div>
<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>&#160;<span class="comment">// static TableScheema *registerTable(int typeId, QString tableName);</span></div>
<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>&#160;<span class="comment">// static void createForegionKeys();</span></div>
<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>&#160; <span class="keyword">static</span> <a class="code" href="class_table_model.html">TableModel</a>* model(QString className);</div>
<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>&#160;</div>
<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>&#160; <a class="code" href="struct_field_model.html">FieldModel</a> *field(QString name) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>&#160; <a class="code" href="struct_relation_model.html">RelationModel</a> *foregionKey(QString otherTable) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>&#160;</div>
<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>&#160; QString toString() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>&#160;</div>
<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>&#160; QString primaryKey() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>&#160;</div>
<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>&#160; QString name() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>&#160; <span class="keywordtype">void</span> setName(<span class="keyword">const</span> QString &amp;name);</div>
<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>&#160;</div>
<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>&#160; QString className() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>&#160; <span class="keywordtype">void</span> setClassName(<span class="keyword">const</span> QString &amp;className);</div>
<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>&#160;</div>
<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>&#160; <span class="keywordtype">int</span> typeId() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>&#160; <span class="keywordtype">void</span> setTypeId(<span class="keyword">const</span> <span class="keywordtype">int</span> &amp;typeId);</div>
<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>&#160; QList&lt;FieldModel *&gt; fields() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>&#160; QList&lt;RelationModel *&gt; foregionKeys() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>&#160; QStringList fieldsNames() <span class="keyword">const</span>;</div>
<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>&#160;</div>
<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>&#160; <span class="keyword">static</span> <a class="code" href="class_table_model.html">TableModel</a> *findByTypeId(<span class="keywordtype">int</span> typeId);</div>
<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>&#160; <span class="keyword">static</span> <a class="code" href="class_table_model.html">TableModel</a> *findByName(QString name);</div>
<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>&#160; <span class="keyword">static</span> <a class="code" href="class_table_model.html">TableModel</a> *findByClassName(QString className);</div>
<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>&#160;</div>
<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>&#160; <span class="keywordtype">bool</span> operator ==(<span class="keyword">const</span> <a class="code" href="class_table_model.html">TableModel</a> &amp;t) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>&#160; <span class="keywordtype">bool</span> operator !=(<span class="keyword">const</span> <a class="code" href="class_table_model.html">TableModel</a> &amp;t) <span class="keyword">const</span>;</div>
<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>&#160;</div>
<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>&#160;<span class="keyword">private</span>:</div>
<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>&#160; QString _name;</div>
<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>&#160; QString _className;</div>
<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>&#160; <span class="keywordtype">int</span> _typeId;</div>
<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>&#160; QList&lt;FieldModel*&gt; _fields;</div>
<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>&#160; QList&lt;RelationModel*&gt; _foregionKeys;</div>
<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>&#160; <span class="keyword">static</span> QSet&lt;TableModel*&gt;_allModels;</div>
<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>&#160;};</div>
<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>&#160;</div>
<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>&#160;<span class="preprocessor">#endif // TABLESCHEEMA_H</span></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Jun 5 2016 17:37:29 for Nut by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.2
</small></address>
</body>
</html>