diff --git a/UML/classdiagram.png b/UML/classdiagram.png index 1b154c1d40bac4fc580e7fe2d5649a248aaa2ba3..ed1df16bcbaf738c320de83b41060a9e627e4974 100644 Binary files a/UML/classdiagram.png and b/UML/classdiagram.png differ diff --git a/UML/classdiagram.uxf b/UML/classdiagram.uxf index 3168a8f535546cd3b5241eb6ef376d0312d0c6d5..59e57160992a98e87e4aacdc5b3e53a27d4d5f6d 100644 --- a/UML/classdiagram.uxf +++ b/UML/classdiagram.uxf @@ -1,4 +1,4 @@ -<diagram program="umletino" version="15.1"><zoom_level>4</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLClass</id><coordinates><x>40</x><y>243</y><w>260</w><h>116</h></coordinates><panel_attributes>ActivitiesService +<diagram program="umletino" version="15.1"><zoom_level>11</zoom_level><help_text>Space for diagram notes</help_text><element><id>UMLClass</id><coordinates><x>22</x><y>550</y><w>715</w><h>319</h></coordinates><panel_attributes>ActivitiesService -- -- + addNoteCreateActivity(userId: string, roomSession: RoomSession, note: Note): void @@ -16,15 +16,15 @@ + calculateVideoPoints(activities: Activity[]): int + calculateBrowserPoints(activities: Activity[]): int + calculateWhiteboardPoints(activities: Activity[]): int -+ calculateNotePoints(activities: Activity[]): int</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>460</x><y>439</y><w>180</w><h>32</h></coordinates><panel_attributes>RoleAssignmentService ++ calculateNotePoints(activities: Activity[]): int</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1177</x><y>1089</y><w>495</w><h>88</h></coordinates><panel_attributes>RoleAssignmentService -- -- + determineRole(sessionId:number, userId: string): void -+ assignRole(sessionId:number):Promise<RoleAssignmentDto[]></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>540</x><y>479</y><w>180</w><h>32</h></coordinates><panel_attributes>ModeAssignmentService ++ assignRole(sessionId:number):Promise<RoleAssignmentDto[]></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1397</x><y>1199</y><w>495</w><h>88</h></coordinates><panel_attributes>ModeAssignmentService -- -- + determineMode(sessionId:number): void -+ assignMode(sessionId:number): Promise<ModeAssignment[]></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>156</x><y>623</y><w>72</w><h>68</h></coordinates><panel_attributes>Activity ++ assignMode(sessionId:number): Promise<ModeAssignment[]></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>341</x><y>1595</y><w>198</w><h>187</h></coordinates><panel_attributes>Activity -- + id: number + user: string @@ -35,7 +35,7 @@ + noteId: number + timestamp: Date -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>208</x><y>739</y><w>92</w><h>56</h></coordinates><panel_attributes>RoomSession +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>484</x><y>1914</y><w>253</w><h>154</h></coordinates><panel_attributes>RoomSession -- + id: number + room: Room @@ -44,14 +44,14 @@ + users: Collection <RoomSessionUser> + activities: Collection <Activity> -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>276</x><y>631</y><w>76</w><h>44</h></coordinates><panel_attributes>RoomSessionUser +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>671</x><y>1617</y><w>209</w><h>121</h></coordinates><panel_attributes>RoomSessionUser -- + id: number + roomSession: RoomSession + userId: string + name: string -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>32</x><y>227</y><w>712</w><h>308</h></coordinates><panel_attributes>Services</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>136</x><y>587</y><w>488</w><h>344</h></coordinates><panel_attributes>Entities</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>408</x><y>635</y><w>92</w><h>60</h></coordinates><panel_attributes>SessionPoints +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>0</x><y>506</y><w>1958</w><h>847</h></coordinates><panel_attributes>Services</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>286</x><y>1496</y><w>1342</w><h>946</h></coordinates><panel_attributes>Entities</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1034</x><y>1628</y><w>253</w><h>165</h></coordinates><panel_attributes>SessionPoints -- + id: number + roomSessionUser: RoomSessionUser @@ -61,16 +61,16 @@ + whiteboardPoints: number + notePoints: number -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>212</x><y>687</y><w>40</w><h>60</h></coordinates><panel_attributes>lt=- +</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>495</x><y>1771</y><w>110</w><h>165</h></coordinates><panel_attributes>lt=- m1=1 m2=0...n -references ^</panel_attributes><additional_attributes>10;130;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>284</x><y>671</y><w>36</w><h>76</h></coordinates><panel_attributes>lt=- +references ^</panel_attributes><additional_attributes>10;130;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>693</x><y>1727</y><w>99</w><h>209</h></coordinates><panel_attributes>lt=- m1=1 m2=0...n -contains ^</panel_attributes><additional_attributes>10;170;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>348</x><y>643</y><w>68</w><h>20</h></coordinates><panel_attributes>lt=- +contains ^</panel_attributes><additional_attributes>10;170;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>869</x><y>1650</y><w>187</w><h>55</h></coordinates><panel_attributes>lt=- m1=1 m2=1 -has ></panel_attributes><additional_attributes>10;20;150;20</additional_attributes></element><element><id>UMLClass</id><coordinates><x>204</x><y>839</y><w>92</w><h>76</h></coordinates><panel_attributes>Room +has ></panel_attributes><additional_attributes>10;20;150;20</additional_attributes></element><element><id>UMLClass</id><coordinates><x>473</x><y>2189</y><w>253</w><h>209</h></coordinates><panel_attributes>Room -- + id: number + name: string @@ -82,44 +82,44 @@ has ></panel_attributes><additional_attributes>10;20;150;20</additional_attri + notes = new Collection<Note>(this) + whiteboardCanvas -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>248</x><y>791</y><w>24</w><h>56</h></coordinates><panel_attributes>lt=<<<<- +</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>594</x><y>2057</y><w>66</w><h>154</h></coordinates><panel_attributes>lt=<<<<- m1=1 m2=0...n -has ^</panel_attributes><additional_attributes>10;120;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>512</x><y>743</y><w>96</w><h>44</h></coordinates><panel_attributes>Roles +has ^</panel_attributes><additional_attributes>10;120;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1320</x><y>1925</y><w>264</w><h>121</h></coordinates><panel_attributes>Roles -- + id: number + roleName: string + userId: string + roomSession: RoomSession -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>520</x><y>835</y><w>96</w><h>40</h></coordinates><panel_attributes>Modes +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1342</x><y>2178</y><w>264</w><h>110</h></coordinates><panel_attributes>Modes -- + id: number + mode: string + roomSession: RoomSession -- -</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>332</x><y>671</y><w>188</w><h>96</h></coordinates><panel_attributes>lt=- +</panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>825</x><y>1727</y><w>517</w><h>264</h></coordinates><panel_attributes>lt=- m1=1 m2=1 -< assigned </panel_attributes><additional_attributes>10;10;10;210;450;210</additional_attributes></element><element><id>Relation</id><coordinates><x>296</x><y>763</y><w>232</w><h>104</h></coordinates><panel_attributes>lt=- +< assigned </panel_attributes><additional_attributes>10;10;10;210;450;210</additional_attributes></element><element><id>Relation</id><coordinates><x>726</x><y>1980</y><w>638</w><h>286</h></coordinates><panel_attributes>lt=- m1=1 m2=1 -< assigned </panel_attributes><additional_attributes>10;10;160;10;370;230;560;230</additional_attributes></element><element><id>UMLPackage</id><coordinates><x>368</x><y>43</y><w>580</w><h>180</h></coordinates><panel_attributes>Controller</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>496</x><y>95</y><w>268</w><h>24</h></coordinates><panel_attributes>RoomSessionUserPointsController +< assigned </panel_attributes><additional_attributes>10;10;160;10;370;230;560;230</additional_attributes></element><element><id>UMLPackage</id><coordinates><x>924</x><y>0</y><w>1595</w><h>495</h></coordinates><panel_attributes>Controller</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1276</x><y>143</y><w>737</w><h>66</h></coordinates><panel_attributes>RoomSessionUserPointsController -- -- -+ getPointsByRoomSessionUser(@Param('userId') userId: number): Promise<RoomSessionUserPointsResponseDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>384</x><y>63</y><w>268</w><h>28</h></coordinates><panel_attributes>RoomSessionPointsController ++ getPointsByRoomSessionUser(@Param('userId') userId: number): Promise<RoomSessionUserPointsResponseDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>968</x><y>55</y><w>737</w><h>77</h></coordinates><panel_attributes>RoomSessionPointsController -- -- -+ getPointsBySession(@Param('sessionId') sessionId: number): Promise<RoomSessionPointsRequestDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>584</x><y>131</y><w>268</w><h>32</h></coordinates><panel_attributes>RoleAssignmentController ++ getPointsBySession(@Param('sessionId') sessionId: number): Promise<RoomSessionPointsRequestDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1518</x><y>242</y><w>737</w><h>88</h></coordinates><panel_attributes>RoleAssignmentController -- -- + getRolesBySession(sessionId:number):Promise<RolesAssignmentDto[]> + getUserRoleForSession(userId: string, sessionId) -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>664</x><y>175</y><w>268</w><h>28</h></coordinates><panel_attributes>ModeAssignmentController +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1738</x><y>363</y><w>737</w><h>77</h></coordinates><panel_attributes>ModeAssignmentController -- -- + getModeForSession(sessionId:number): Promise<ModeAssignment[]> -</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>804</x><y>395</y><w>104</w><h>40</h></coordinates><panel_attributes>RoomSessionUserPointsResponseDto +</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2123</x><y>968</y><w>286</w><h>110</h></coordinates><panel_attributes>RoomSessionUserPointsResponseDto -- + allPoints: AllPoints + totalPoints: number @@ -127,14 +127,14 @@ m2=1 + userId: number -- -group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>804</x><y>351</y><w>92</w><h>36</h></coordinates><panel_attributes>RoomSessionPointsRequestDto +group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2123</x><y>847</y><w>253</w><h>99</h></coordinates><panel_attributes>RoomSessionPointsRequestDto -- + allPoints: AllPoints + totalPoints: number; + sessionId: number; -- -group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>804</x><y>443</y><w>92</w><h>44</h></coordinates><panel_attributes>RoleAssignmentDto +group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2123</x><y>1100</y><w>253</w><h>121</h></coordinates><panel_attributes>RoleAssignmentDto -- + userId: string + userName: string @@ -142,55 +142,67 @@ group=group-4</panel_attributes><additional_attributes></additional_attributes>< + pointsTotal: number -- -group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>804</x><y>495</y><w>92</w><h>28</h></coordinates><panel_attributes>ModeAssignmentDto +group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2123</x><y>1243</y><w>253</w><h>77</h></coordinates><panel_attributes>ModeAssignmentDto -- + sessionId: number + mode: string -- -group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>788</x><y>331</y><w>132</w><h>204</h></coordinates><panel_attributes>DTOs -group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>788</x><y>251</y><w>68</w><h>52</h></coordinates><panel_attributes><<dateType>> +group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLPackage</id><coordinates><x>2079</x><y>792</y><w>363</w><h>561</h></coordinates><panel_attributes>DTOs +group=group-4</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>2079</x><y>572</y><w>187</w><h>143</h></coordinates><panel_attributes><<dateType>> AllPoints -- audioPoints: number videoPoints: number browserPoints: number whiteboardPoints: number -notePoints: number</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>196</x><y>367</y><w>204</w><h>32</h></coordinates><panel_attributes>RoomSessionService +notePoints: number</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>451</x><y>891</y><w>561</w><h>88</h></coordinates><panel_attributes>RoomSessionService -- -- + beginSession(room: Room): Promise<RoomSession> + closeSession(roomSession: RoomSession): Promise<void> -+ getAllPointsBySession(sessionId: number): Promise<RoomSessionPointsRequestDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>316</x><y>403</y><w>248</w><h>32</h></coordinates><panel_attributes>RoomSessionUserService ++ getAllPointsBySession(sessionId: number): Promise<RoomSessionPointsRequestDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>781</x><y>990</y><w>682</w><h>88</h></coordinates><panel_attributes>RoomSessionUserService -- -- + addSessionUser(roomSession: RoomSession, userId: string, name: string): Promise<RoomSessionUser> + updateSessionUserName(roomSession: RoomSession, userId: string, name:string) -+ getPointsByRoomSessionUser(userId: number): Promise<RoomSessionUserPointsResponseDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>396</x><y>375</y><w>416</w><h>20</h></coordinates><panel_attributes>lt=<. ++ getPointsByRoomSessionUser(userId: number): Promise<RoomSessionUserPointsResponseDto></panel_attributes><additional_attributes></additional_attributes></element><element><id>Relation</id><coordinates><x>1001</x><y>913</y><w>1144</w><h>55</h></coordinates><panel_attributes>lt=<. -returns</panel_attributes><additional_attributes>1020;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>560</x><y>411</y><w>252</w><h>20</h></coordinates><panel_attributes>lt=<. +returns</panel_attributes><additional_attributes>1020;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>1452</x><y>1012</y><w>693</w><h>55</h></coordinates><panel_attributes>lt=<. -returns</panel_attributes><additional_attributes>610;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>636</x><y>455</y><w>176</w><h>20</h></coordinates><panel_attributes>lt=<. +returns</panel_attributes><additional_attributes>610;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>1661</x><y>1133</y><w>484</w><h>55</h></coordinates><panel_attributes>lt=<. -returns</panel_attributes><additional_attributes>420;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>716</x><y>495</y><w>96</w><h>20</h></coordinates><panel_attributes>lt=<. +returns</panel_attributes><additional_attributes>420;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>1881</x><y>1243</y><w>264</w><h>55</h></coordinates><panel_attributes>lt=<. -returns</panel_attributes><additional_attributes>220;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>384</x><y>87</y><w>20</w><h>288</h></coordinates><panel_attributes>lt=<. +returns</panel_attributes><additional_attributes>220;20;10;20</additional_attributes></element><element><id>Relation</id><coordinates><x>968</x><y>121</y><w>55</w><h>792</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>10;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>616</x><y>159</y><w>24</w><h>288</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>10;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1606</x><y>319</y><w>66</w><h>792</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>20;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>248</x><y>391</y><w>40</w><h>356</h></coordinates><panel_attributes>lt=<. -manages v</panel_attributes><additional_attributes>10;870;20;10</additional_attributes></element><element><id>Relation</id><coordinates><x>528</x><y>115</y><w>24</w><h>296</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>20;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>594</x><y>957</y><w>110</w><h>979</h></coordinates><panel_attributes>lt=<. +manages v</panel_attributes><additional_attributes>10;870;20;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1364</x><y>198</y><w>66</w><h>814</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>20;720;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>704</x><y>199</y><w>24</w><h>288</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>20;720;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1848</x><y>429</y><w>66</w><h>792</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>20;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>336</x><y>431</y><w>36</w><h>208</h></coordinates><panel_attributes>lt=<. -manages</panel_attributes><additional_attributes>10;500;20;10</additional_attributes></element><element><id>Relation</id><coordinates><x>520</x><y>467</y><w>32</w><h>284</h></coordinates><panel_attributes>lt=<. -manages</panel_attributes><additional_attributes>10;690;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>612</x><y>507</y><w>68</w><h>356</h></coordinates><panel_attributes>lt=<. -manages</panel_attributes><additional_attributes>10;870;100;870;100;10</additional_attributes></element><element><id>Relation</id><coordinates><x>168</x><y>355</y><w>40</w><h>276</h></coordinates><panel_attributes>lt=<. -manages v</panel_attributes><additional_attributes>10;670;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>120</x><y>355</y><w>344</w><h>596</h></coordinates><panel_attributes>lt=<. -manages ></panel_attributes><additional_attributes>840;850;840;1470;10;1470;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>448</x><y>431</y><w>28</w><h>212</h></coordinates><panel_attributes>lt=<. -queries</panel_attributes><additional_attributes>10;510;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>300</x><y>395</y><w>28</w><h>32</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>10;10;40;60</additional_attributes></element><element><id>Relation</id><coordinates><x>480</x><y>467</y><w>20</w><h>176</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>10;420;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>496</x><y>507</y><w>112</w><h>168</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>10;400;240;400;240;10</additional_attributes></element><element><id>Relation</id><coordinates><x>132</x><y>355</y><w>184</w><h>284</h></coordinates><panel_attributes>lt=<. -uses</panel_attributes><additional_attributes>440;690;440;280;10;280;10;10</additional_attributes></element></diagram> \ No newline at end of file +uses</panel_attributes><additional_attributes>20;700;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>836</x><y>1067</y><w>99</w><h>572</h></coordinates><panel_attributes>lt=<. +manages</panel_attributes><additional_attributes>10;500;20;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1342</x><y>1166</y><w>88</w><h>781</h></coordinates><panel_attributes>lt=<. +manages</panel_attributes><additional_attributes>10;690;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1595</x><y>1276</y><w>187</w><h>979</h></coordinates><panel_attributes>lt=<. +manages</panel_attributes><additional_attributes>10;870;100;870;100;10</additional_attributes></element><element><id>Relation</id><coordinates><x>374</x><y>858</y><w>110</w><h>759</h></coordinates><panel_attributes>lt=<. +manages v</panel_attributes><additional_attributes>10;670;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>242</x><y>858</y><w>946</w><h>1639</h></coordinates><panel_attributes>lt=<. +manages ></panel_attributes><additional_attributes>840;850;840;1470;10;1470;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1144</x><y>1067</y><w>77</w><h>583</h></coordinates><panel_attributes>lt=<. +queries</panel_attributes><additional_attributes>10;510;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>737</x><y>968</y><w>77</w><h>88</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>10;10;40;60</additional_attributes></element><element><id>Relation</id><coordinates><x>1232</x><y>1166</y><w>55</w><h>484</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>10;420;10;10</additional_attributes></element><element><id>Relation</id><coordinates><x>1276</x><y>1276</y><w>308</w><h>462</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>10;400;240;400;240;10</additional_attributes></element><element><id>Relation</id><coordinates><x>275</x><y>858</y><w>506</w><h>781</h></coordinates><panel_attributes>lt=<. +uses</panel_attributes><additional_attributes>440;690;440;280;10;280;10;10</additional_attributes></element><element><id>UMLClass</id><coordinates><x>1826</x><y>1914</y><w>110</w><h>143</h></coordinates><panel_attributes><<enumeration>> +RoleType +-- +MODERATOR +NOTETAKER +PASSIVE +...</panel_attributes><additional_attributes></additional_attributes></element><element><id>UMLClass</id><coordinates><x>1782</x><y>2178</y><w>209</w><h>110</h></coordinates><panel_attributes><<enumeration>> +ModeType +-- +PAIR_PROGRAMMING +ROTATING +ROLE_BASED_PROGRAMMING +</panel_attributes><additional_attributes></additional_attributes></element></diagram> \ No newline at end of file