Changeset 12878
- Timestamp:
- 08/18/15 10:08:58 (9 years ago)
- Location:
- trunk/sources
- Files:
-
- 17 deleted
- 45 edited
- 17 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources
- Property svn:mergeinfo changed
-
trunk/sources/HeuristicLab 3.3 Services.sln
r12479 r12878 64 64 ProjectSection(SolutionItems) = preProject 65 65 .nuget\NuGet.Config = .nuget\NuGet.Config 66 .nuget\NuGet.exe = .nuget\NuGet.exe67 66 .nuget\NuGet.targets = .nuget\NuGet.targets 68 67 EndProjectSection 69 68 EndProject 70 69 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.GeoIP", "HeuristicLab.ExtLibs\HeuristicLab.GeoIP\1.12\HeuristicLab.GeoIP.csproj", "{BE9B0229-9150-49A4-AEA6-BB58E055992F}" 70 EndProject 71 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.WebApp.Statistics-3.3", "HeuristicLab.Services.WebApp.Statistics\3.3\HeuristicLab.Services.WebApp.Statistics-3.3.csproj", "{1BC54353-7D4C-4734-BAA9-3D11B3242B59}" 72 EndProject 73 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Services.WebApp.Maintenance-3.3", "HeuristicLab.Services.WebApp.Maintenance\3.3\HeuristicLab.Services.WebApp.Maintenance-3.3.csproj", "{3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}" 71 74 EndProject 72 75 Global … … 243 246 {BE9B0229-9150-49A4-AEA6-BB58E055992F}.Release|x86.ActiveCfg = Release|x86 244 247 {BE9B0229-9150-49A4-AEA6-BB58E055992F}.Release|x86.Build.0 = Release|x86 248 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 249 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|Any CPU.Build.0 = Debug|Any CPU 250 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|x64.ActiveCfg = Debug|x64 251 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|x64.Build.0 = Debug|x64 252 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|x86.ActiveCfg = Debug|x86 253 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Debug|x86.Build.0 = Debug|x86 254 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|Any CPU.ActiveCfg = Release|Any CPU 255 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|Any CPU.Build.0 = Release|Any CPU 256 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|x64.ActiveCfg = Release|x64 257 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|x64.Build.0 = Release|x64 258 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|x86.ActiveCfg = Release|x86 259 {1BC54353-7D4C-4734-BAA9-3D11B3242B59}.Release|x86.Build.0 = Release|x86 260 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 261 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|Any CPU.Build.0 = Debug|Any CPU 262 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|x64.ActiveCfg = Debug|x64 263 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|x64.Build.0 = Debug|x64 264 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|x86.ActiveCfg = Debug|x86 265 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Debug|x86.Build.0 = Debug|x86 266 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Release|Any CPU.ActiveCfg = Release|Any CPU 267 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Release|Any CPU.Build.0 = Release|Any CPU 268 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Release|x64.ActiveCfg = Release|Any CPU 269 {3F22B7DA-FDDB-48F0-8BB7-0ABA5120FC87}.Release|x86.ActiveCfg = Release|Any CPU 245 270 EndGlobalSection 246 271 GlobalSection(SolutionProperties) = preSolution -
trunk/sources/HeuristicLab.Services.Hive
-
trunk/sources/HeuristicLab.Services.Hive.DataAccess
- Property svn:mergeinfo changed
/branches/HiveStatistics/sources/HeuristicLab.Services.Hive.DataAccess (added) merged: 12441,12468,12477,12484,12516,12551,12584,12691,12761,12768,12789,12843,12853,12857,12861
- Property svn:mergeinfo changed
-
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HeuristicLab.Services.Hive.DataAccess-3.3.csproj
r11623 r12878 104 104 <ItemGroup> 105 105 <None Include="Plugin.cs.frame" /> 106 <Compile Include="Daos\AssignedResourceDao.cs" /> 107 <Compile Include="Daos\DowntimeDao.cs" /> 108 <Compile Include="Daos\GenericDao.cs" /> 109 <Compile Include="Daos\HiveStatistics\DimClientDao.cs" /> 110 <Compile Include="Daos\HiveStatistics\DimJobDao.cs" /> 111 <Compile Include="Daos\HiveStatistics\DimTimeDao.cs" /> 112 <Compile Include="Daos\HiveStatistics\DimUserDao.cs" /> 113 <Compile Include="Daos\HiveStatistics\FactClientInfoDao.cs" /> 114 <Compile Include="Daos\HiveStatistics\FactTaskDao.cs" /> 115 <Compile Include="Daos\JobDao.cs" /> 116 <Compile Include="Daos\JobPermissionDao.cs" /> 117 <Compile Include="Daos\LifecycleDao.cs" /> 118 <Compile Include="Daos\PluginDao.cs" /> 119 <Compile Include="Daos\PluginDataDao.cs" /> 120 <Compile Include="Daos\RequiredPluginDao.cs" /> 121 <Compile Include="Daos\ResourceDao.cs" /> 122 <Compile Include="Daos\ResourcePermissionDao.cs" /> 123 <Compile Include="Daos\SlaveDao.cs" /> 124 <Compile Include="Daos\SlaveGroupDao.cs" /> 125 <Compile Include="Daos\StateLogDao.cs" /> 126 <Compile Include="Daos\TaskDao.cs" /> 127 <Compile Include="Daos\TaskDataDao.cs" /> 128 <Compile Include="Daos\UserPriorityDao.cs" /> 129 <Compile Include="Data\TableInformation.cs" /> 130 <Compile Include="Interfaces\IGenericDao.cs" /> 106 131 <Compile Include="Enums\Command.cs" /> 107 132 <Compile Include="Enums\DowntimeType.cs" /> 108 133 <Compile Include="Enums\CpuArchitecture.cs" /> 134 <Compile Include="Interfaces\IPersistenceManager.cs" /> 135 <Compile Include="Manager\PersistenceManager.cs" /> 109 136 <Compile Include="Plugin.cs" /> 110 137 <Compile Include="HiveDataContext.cs"> … … 116 143 <DependentUpon>HiveDataContext.dbml</DependentUpon> 117 144 </Compile> 118 <Compile Include="ITransactionManager.cs" />119 145 <Compile Include="Enums\TaskState.cs" /> 120 146 <Compile Include="Logger.cs" /> … … 128 154 </Compile> 129 155 <Compile Include="Enums\SlaveState.cs" /> 130 <Compile Include="TransactionManager.cs" />131 156 </ItemGroup> 132 157 <ItemGroup> … … 155 180 <ItemGroup> 156 181 <Content Include="SQL Scripts\Initialize Hive Database.sql" /> 157 <Content Include="SQL Scripts\Migrate to Filestream.sql" />158 182 <Content Include="SQL Scripts\Prepare Hive Database.sql" /> 159 183 </ItemGroup> 184 <ItemGroup /> 160 185 <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 161 186 <PropertyGroup> -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.cs
r12012 r12878 30 30 throw new NotImplementedException(); 31 31 } 32 33 partial void OnCreated() { 34 LogFactory.GetLogger(this.GetType().Namespace).Log("HiveDataContext created"); 35 } 32 36 } 33 37 } -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.dbml
r9665 r12878 156 156 </Type> 157 157 </Table> 158 <Table Name="" Member="DeletedJobStatistics">159 <Type Name="DeletedJobStatistics">160 <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" />161 <Column Name="ExecutionTimeS" Storage="_ExecutionTime" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />162 <Column Name="ExecutionTimeSFinishedJobs" Storage="_ExecutionTimeFinishedJobs" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />163 <Column Name="StartToEndTimeS" Storage="_StartToEndTime" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />164 <Column Name="DeletedJobStatisticsId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />165 </Type>166 </Table>167 <Table Name="" Member="UserStatistics">168 <Type Name="UserStatistics">169 <Column Name="StatisticsId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />170 <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />171 <Column Name="ExecutionTimeMs" Storage="_ExecutionTime" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />172 <Column Name="UsedCores" Storage="_CoresUsed" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />173 <Column Name="ExecutionTimeMsFinishedJobs" Storage="_ExecutionTimeFinishedJobs" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />174 <Column Name="StartToEndTimeMs" Storage="_StartToEndTime" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />175 <Association Name="Statistics_UserStatistics" Member="Statistics" ThisKey="StatisticsId" OtherKey="StatisticsId" Type="Statistics" IsForeignKey="true" />176 </Type>177 </Table>178 <Table Name="" Member="SlaveStatistics">179 <Type Name="SlaveStatistics">180 <Column Name="StatisticsId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />181 <Column Name="SlaveId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />182 <Column Name="Cores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />183 <Column Name="FreeCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />184 <Column Name="CpuUtilization" Type="System.Double" DbType="float NOT NULL" CanBeNull="false" />185 <Column Name="Memory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />186 <Column Name="FreeMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />187 <Association Name="Statistics_SlaveStatistics" Member="Statistics" ThisKey="StatisticsId" OtherKey="StatisticsId" Type="Statistics" IsForeignKey="true" />188 </Type>189 </Table>190 <Table Name="" Member="Statistics">191 <Type Name="Statistics">192 <Column Name="StatisticsId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" />193 <Column Name="Timestamp" Type="System.DateTime" CanBeNull="false" />194 <Association Name="Statistics_UserStatistics" Member="UserStatistics" ThisKey="StatisticsId" OtherKey="StatisticsId" Type="UserStatistics" />195 <Association Name="Statistics_SlaveStatistics" Member="SlaveStatistics" ThisKey="StatisticsId" OtherKey="StatisticsId" Type="SlaveStatistics" />196 </Type>197 </Table>198 158 <Table Name="dbo.ResourcePermission" Member="ResourcePermissions"> 199 159 <Type Name="ResourcePermission"> … … 210 170 </Type> 211 171 </Table> 172 <Table Name="[statistics].DimClient" Member="DimClients"> 173 <Type Name="DimClient"> 174 <Column Name="Id" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" IsDbGenerated="true" CanBeNull="false" /> 175 <Column Name="Name" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" /> 176 <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" /> 177 <Column Name="ExpirationTime" Type="System.DateTime" DbType="DateTime" CanBeNull="true" /> 178 <Column Name="ResourceGroupId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" /> 179 <Column Name="ResourceGroup2Id" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" /> 180 <Column Name="GroupName" Type="System.String" CanBeNull="true" /> 181 <Column Name="GroupName2" Type="System.String" CanBeNull="true" /> 182 <Association Name="DimClient_FactTask" Member="FactTasks" ThisKey="Id" OtherKey="LastClientId" Type="FactTask" /> 183 <Association Name="DimClient_FactClientInfo" Member="FactClientInfos" ThisKey="Id" OtherKey="ClientId" Type="FactClientInfo" /> 184 </Type> 185 </Table> 186 <Table Name="[statistics].FactTask" Member="FactTasks"> 187 <Type Name="FactTask"> 188 <Column Name="TaskId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 189 <Column Name="CalculatingTime" Storage="_TotalRuntime" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 190 <Column Name="WaitingTime" Storage="_TotalWaitingTime" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 191 <Column Name="TransferTime" Storage="_TotalTransferTime" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 192 <Column Name="NumCalculationRuns" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 193 <Column Name="NumRetries" Storage="_NumFails" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 194 <Column Name="CoresRequired" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 195 <Column Name="MemoryRequired" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 196 <Column Name="Priority" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 197 <Column Name="LastClientId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="true" /> 198 <Column Name="JobId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" /> 199 <Column Name="EndTime" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="true" /> 200 <Column Name="TaskState" Type="global::HeuristicLab.Services.Hive.DataAccess.TaskState" DbType="varchar(30)" CanBeNull="false" /> 201 <Column Name="Exception" Type="System.String" DbType="varchar(MAX)" CanBeNull="true" /> 202 <Column Name="InitialWaitingTime" Storage="_InitialWaitingTimeMs" Type="System.Int64" DbType="INT" CanBeNull="false" /> 203 <Column Name="StartTime" Type="System.DateTime" CanBeNull="true" /> 204 <Association Name="DimClient_FactTask" Member="DimClient" ThisKey="LastClientId" OtherKey="Id" Type="DimClient" IsForeignKey="true" /> 205 <Association Name="DimJob_FactTask" Member="DimJob" ThisKey="JobId" OtherKey="JobId" Type="DimJob" IsForeignKey="true" /> 206 </Type> 207 </Table> 208 <Table Name="[statistics].DimJob" Member="DimJobs"> 209 <Type Name="DimJob"> 210 <Column Name="JobId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 211 <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" CanBeNull="false" /> 212 <Column Name="JobName" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" /> 213 <Column Name="UserName" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" /> 214 <Column Name="DateCreated" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" /> 215 <Column Name="TotalTasks" Type="System.Int32" DbType="INT NOT NULL" CanBeNull="false" /> 216 <Column Name="CompletedTasks" Type="System.Int32" DbType="INT NOT NULL" CanBeNull="false" /> 217 <Column Name="DateCompleted" Type="System.DateTime" DbType="DateTime NULL" CanBeNull="true" /> 218 <Association Name="DimJob_FactTask" Member="FactTasks" ThisKey="JobId" OtherKey="JobId" Type="FactTask" /> 219 </Type> 220 </Table> 221 <Table Name="[statistics].DimTime" Member="DimTimes"> 222 <Type Name="DimTime"> 223 <Column Name="Time" Type="System.DateTime" DbType="DateTime NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 224 <Column Name="Hour" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" /> 225 <Column Name="Day" Type="System.DateTime" DbType="Date NOT NULL" CanBeNull="false" /> 226 <Column Name="Month" Type="System.DateTime" DbType="Date NOT NULL" CanBeNull="false" /> 227 <Column Name="Year" Type="System.DateTime" DbType="Date NOT NULL" CanBeNull="false" /> 228 <Column Name="Minute" Type="System.DateTime" CanBeNull="false" /> 229 <Association Name="DimTime_FactClientInfo" Member="FactClientInfos" ThisKey="Time" OtherKey="Time" Type="FactClientInfo" /> 230 </Type> 231 </Table> 232 <Table Name="[statistics].DimUser" Member="DimUsers"> 233 <Type Name="DimUser"> 234 <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 235 <Column Name="Name" Type="System.String" DbType="VarChar(MAX) NOT NULL" CanBeNull="false" /> 236 <Association Name="DimUser_FactClientInfo" Member="FactClientInfos" ThisKey="UserId" OtherKey="UserId" Type="FactClientInfo" /> 237 </Type> 238 </Table> 239 <Table Name="[statistics].FactClientInfo" Member="FactClientInfos"> 240 <Type Name="FactClientInfo"> 241 <Column Name="ClientId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 242 <Column Name="Time" Type="System.DateTime" DbType="DateTime NOT NULL" IsPrimaryKey="true" CanBeNull="false" /> 243 <Column Name="UserId" Type="System.Guid" DbType="UniqueIdentifier NULL" IsPrimaryKey="true" CanBeNull="false" /> 244 <Column Name="NumUsedCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 245 <Column Name="NumTotalCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 246 <Column Name="UsedMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 247 <Column Name="TotalMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" /> 248 <Column Name="CpuUtilization" Type="System.Double" DbType="Float NOT NULL" CanBeNull="false" /> 249 <Column Name="IdleTime" Storage="_TotalTimeIdle" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 250 <Column Name="OfflineTime" Storage="_TotalTimeOffline" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 251 <Column Name="UnavailableTime" Storage="_TotalTimeUnavailable" Type="System.Int64" DbType="INT NOT NULL" CanBeNull="false" /> 252 <Column Name="SlaveState" Type="global::HeuristicLab.Services.Hive.DataAccess.SlaveState" DbType="VarChar(15)" CanBeNull="false" /> 253 <Column Name="IsAllowedToCalculate" Type="System.Boolean" DbType="BIT" CanBeNull="false" /> 254 <Association Name="DimClient_FactClientInfo" Member="DimClient" ThisKey="ClientId" OtherKey="Id" Type="DimClient" IsForeignKey="true" /> 255 <Association Name="DimTime_FactClientInfo" Member="DimTime" ThisKey="Time" OtherKey="Time" Type="DimTime" IsForeignKey="true" /> 256 <Association Name="DimUser_FactClientInfo" Member="DimUser" ThisKey="UserId" OtherKey="UserId" Type="DimUser" IsForeignKey="true" /> 257 </Type> 258 </Table> 212 259 </Database> -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.dbml.layout
r9665 r12878 1 1 <?xml version="1.0" encoding="utf-8"?> 2 <ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 24.25, 8.5" name="HiveDataContext">2 <ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 15.75, 17.875" name="HiveDataContext"> 3 3 <DataContextMoniker Name="/HiveDataContext" /> 4 4 <nestedChildShapes> 5 <classShape Id="a929c9dc-69f4-4488-ba1c-a2342bf81d89" absoluteBounds="8.875, 4.5, 2, 1. 0961531575520827">5 <classShape Id="a929c9dc-69f4-4488-ba1c-a2342bf81d89" absoluteBounds="8.875, 4.5, 2, 1.1939925130208327"> 6 6 <DataClassMoniker Name="/HiveDataContext/AssignedResource" /> 7 7 <nestedChildShapes> 8 <elementListCompartment Id="8b005775-f0ee-41b0-ae10-6d1151003708" absoluteBounds="8.89, 4.9600000000000009, 1.9700000000000002, 0. 53615315755208326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />9 </nestedChildShapes> 10 </classShape> 11 <classShape Id="7d998e56-4fba-41ca-a1a8-1dcdb9068edf" absoluteBounds="8.875, 5.875, 2, 1. 7535424804687496">8 <elementListCompartment Id="8b005775-f0ee-41b0-ae10-6d1151003708" absoluteBounds="8.89, 4.9600000000000009, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 9 </nestedChildShapes> 10 </classShape> 11 <classShape Id="7d998e56-4fba-41ca-a1a8-1dcdb9068edf" absoluteBounds="8.875, 5.875, 2, 1.9631982421874996"> 12 12 <DataClassMoniker Name="/HiveDataContext/Plugin" /> 13 13 <nestedChildShapes> 14 <elementListCompartment Id="ec4ba325-6dff-4418-baad-59af81ae2024" absoluteBounds="8.89, 6.3350000000000009, 1.9700000000000002, 1. 19354248046875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />15 </nestedChildShapes> 16 </classShape> 17 <classShape Id="97b00810-fa30-457e-b484-b4e80b22f91b" absoluteBounds="6.5, 5.875, 2, 1. 2605004882812496">14 <elementListCompartment Id="ec4ba325-6dff-4418-baad-59af81ae2024" absoluteBounds="8.89, 6.3350000000000009, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 15 </nestedChildShapes> 16 </classShape> 17 <classShape Id="97b00810-fa30-457e-b484-b4e80b22f91b" absoluteBounds="6.5, 5.875, 2, 1.3862939453124996"> 18 18 <DataClassMoniker Name="/HiveDataContext/RequiredPlugin" /> 19 19 <nestedChildShapes> 20 <elementListCompartment Id="df6451e5-069e-4ca0-a909-61b8213b5047" absoluteBounds="6.5150000000000006, 6.3350000000000009, 1.9700000000000002, 0. 70050048828125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />21 </nestedChildShapes> 22 </classShape> 23 <classShape Id="706a4581-6daf-4e71-ae2a-87d50b27a051" absoluteBounds="11.25, 1, 2, 1. 75354248046875">20 <elementListCompartment Id="df6451e5-069e-4ca0-a909-61b8213b5047" absoluteBounds="6.5150000000000006, 6.3350000000000009, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 21 </nestedChildShapes> 22 </classShape> 23 <classShape Id="706a4581-6daf-4e71-ae2a-87d50b27a051" absoluteBounds="11.25, 1, 2, 1.9631982421875"> 24 24 <DataClassMoniker Name="/HiveDataContext/Resource" /> 25 25 <nestedChildShapes> 26 <elementListCompartment Id="8c24f5bf-2164-4d0f-832e-1730eb0066df" absoluteBounds="11.265, 1.46, 1.9700000000000002, 1. 19354248046875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />27 </nestedChildShapes> 28 </classShape> 29 <classShape Id="695bfc39-59f3-4e60-8644-f847964bf62c" absoluteBounds="6.5, 1, 2, 2.9039737955729166">26 <elementListCompartment Id="8c24f5bf-2164-4d0f-832e-1730eb0066df" absoluteBounds="11.265, 1.46, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 27 </nestedChildShapes> 28 </classShape> 29 <classShape Id="695bfc39-59f3-4e60-8644-f847964bf62c" absoluteBounds="6.5, 1, 2, 3.3093082682291666"> 30 30 <DataClassMoniker Name="/HiveDataContext/Task" /> 31 31 <nestedChildShapes> 32 <elementListCompartment Id="a6a30e11-03d1-4869-82e6-b733f4ef9974" absoluteBounds="6.5150000000000006, 1.46, 1.9700000000000002, 2. 3439737955729165" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />33 </nestedChildShapes> 34 </classShape> 35 <classShape Id="8d5712f7-7a1a-4a89-bd4d-fd60200d3306" absoluteBounds="13.5, 2.5, 2, 2. 0822371419270826">32 <elementListCompartment Id="a6a30e11-03d1-4869-82e6-b733f4ef9974" absoluteBounds="6.5150000000000006, 1.46, 1.9700000000000002, 2.7493082682291665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 33 </nestedChildShapes> 34 </classShape> 35 <classShape Id="8d5712f7-7a1a-4a89-bd4d-fd60200d3306" absoluteBounds="13.5, 2.5, 2, 2.3478011067708326"> 36 36 <DataClassMoniker Name="/HiveDataContext/Downtime" /> 37 37 <nestedChildShapes> 38 <elementListCompartment Id="7d8f121b-35bb-4753-a25f-3fac1562e68e" absoluteBounds="13.515, 2.9600000000000009, 1.9700000000000002, 1. 5222371419270833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />39 </nestedChildShapes> 40 </classShape> 41 <classShape Id="e6f840cc-2968-4be1-b234-eef624ccacbb" absoluteBounds="4.125, 2.625, 2, 1. 7535424804687496">38 <elementListCompartment Id="7d8f121b-35bb-4753-a25f-3fac1562e68e" absoluteBounds="13.515, 2.9600000000000009, 1.9700000000000002, 1.7878011067708333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 39 </nestedChildShapes> 40 </classShape> 41 <classShape Id="e6f840cc-2968-4be1-b234-eef624ccacbb" absoluteBounds="4.125, 2.625, 2, 1.9631982421874996"> 42 42 <DataClassMoniker Name="/HiveDataContext/Job" /> 43 43 <nestedChildShapes> 44 <elementListCompartment Id="0c65d4e1-256a-4a91-9a57-392f25e4de7f" absoluteBounds="4.1400000000000006, 3.0850000000000009, 1.9700000000000002, 1. 19354248046875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />45 </nestedChildShapes> 46 </classShape> 47 <classShape Id="26f4edfa-91dd-4941-a058-359f89e567a8" absoluteBounds="8.875, 0.75, 2, 2.9039737955729166">44 <elementListCompartment Id="0c65d4e1-256a-4a91-9a57-392f25e4de7f" absoluteBounds="4.1400000000000006, 3.0850000000000009, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 45 </nestedChildShapes> 46 </classShape> 47 <classShape Id="26f4edfa-91dd-4941-a058-359f89e567a8" absoluteBounds="8.875, 0.75, 2, 3.3093082682291666"> 48 48 <DataClassMoniker Name="/HiveDataContext/Slave" /> 49 49 <nestedChildShapes> 50 <elementListCompartment Id="1e61f36b-08dc-4df7-8594-c9dcd95c0791" absoluteBounds="8.89, 1.21, 1.9700000000000002, 2. 3439737955729165" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />51 </nestedChildShapes> 52 </classShape> 53 <classShape Id="bbd91675-92f2-4a69-8429-0950008fc8a4" absoluteBounds="13.5, 1, 2, 0. 76745849609375">50 <elementListCompartment Id="1e61f36b-08dc-4df7-8594-c9dcd95c0791" absoluteBounds="8.89, 1.21, 1.9700000000000002, 2.7493082682291665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 51 </nestedChildShapes> 52 </classShape> 53 <classShape Id="bbd91675-92f2-4a69-8429-0950008fc8a4" absoluteBounds="13.5, 1, 2, 0.8093896484375"> 54 54 <DataClassMoniker Name="/HiveDataContext/SlaveGroup" /> 55 55 <nestedChildShapes> 56 <elementListCompartment Id="5a790e8f-6e2e-4bf5-bd2b-f8a82224d9d7" absoluteBounds="13.5, 1, 0.125, 0.2 0745849609375" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />56 <elementListCompartment Id="5a790e8f-6e2e-4bf5-bd2b-f8a82224d9d7" absoluteBounds="13.5, 1, 0.125, 0.2493896484375" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 57 57 </nestedChildShapes> 58 58 </classShape> … … 69 69 </nodes> 70 70 </inheritanceConnector> 71 <associationConnector edgePoints="[(11.8134963640734 : 2. 75354248046875); (11.8134963640734 : 3.56770833333333); (11.1119791666667 : 3.56770833333333); (11.1119791666667 : 5.09699625651042); (10.875 : 5.09699625651042)]" manuallyRouted="true" fixedFrom="Algorithm" fixedTo="Algorithm">71 <associationConnector edgePoints="[(11.8134963640734 : 2.9631982421875); (11.8134963640734 : 3.56770833333333); (11.1119791666667 : 3.56770833333333); (11.1119791666667 : 5.09699625651042); (10.875 : 5.09699625651042)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed"> 72 72 <AssociationMoniker Name="/HiveDataContext/Resource/Resource_AssignedResource" /> 73 73 <nodes> … … 76 76 </nodes> 77 77 </associationConnector> 78 <classShape Id="6bc13f26-f9a8-4597-b054-35be34190d12" absoluteBounds="4.125, 1, 2, 1. 26050048828125">78 <classShape Id="6bc13f26-f9a8-4597-b054-35be34190d12" absoluteBounds="4.125, 1, 2, 1.3862939453125"> 79 79 <DataClassMoniker Name="/HiveDataContext/TaskData" /> 80 80 <nestedChildShapes> 81 <elementListCompartment Id="a068522c-7974-4679-b356-e33c941c465b" absoluteBounds="4.14, 1.46, 1.9700000000000002, 0. 70050048828125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />82 </nestedChildShapes> 83 </classShape> 84 <classShape Id="ad25bd0f-80e8-4a06-abd8-190eb678eec7" absoluteBounds="11.25, 5.875, 2, 1. 4248478190104166">81 <elementListCompartment Id="a068522c-7974-4679-b356-e33c941c465b" absoluteBounds="4.14, 1.46, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 82 </nestedChildShapes> 83 </classShape> 84 <classShape Id="ad25bd0f-80e8-4a06-abd8-190eb678eec7" absoluteBounds="11.25, 5.875, 2, 1.5785953776041666"> 85 85 <DataClassMoniker Name="/HiveDataContext/PluginData" /> 86 86 <nestedChildShapes> 87 <elementListCompartment Id="acddb513-7de6-4bb4-8335-d6982fb2ef35" absoluteBounds="11.265, 6.3350000000000009, 1.9700000000000002, 0.86484781901041663" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />87 <elementListCompartment Id="acddb513-7de6-4bb4-8335-d6982fb2ef35" absoluteBounds="11.265, 6.3350000000000009, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 88 88 </nestedChildShapes> 89 89 </classShape> … … 109 109 </nodes> 110 110 </associationConnector> 111 <classShape Id="00352397-340e-449a-8e23-6ddd216e8617" absoluteBounds="1.75, 1, 2, 1.9178898111979166">111 <classShape Id="00352397-340e-449a-8e23-6ddd216e8617" absoluteBounds="1.75, 1, 2, 2.1554996744791666"> 112 112 <DataClassMoniker Name="/HiveDataContext/StateLog" /> 113 113 <nestedChildShapes> 114 <elementListCompartment Id="9a003897-deef-4bb5-b180-4c4bcdb7fadc" absoluteBounds="1.765, 1.46, 1.9700000000000002, 1. 3578898111979165" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />115 </nestedChildShapes> 116 </classShape> 117 <classShape Id="4d800dc9-1b18-469f-b02c-d4554757c5e1" absoluteBounds="1.75, 3.625, 2, 1. 4248478190104166">114 <elementListCompartment Id="9a003897-deef-4bb5-b180-4c4bcdb7fadc" absoluteBounds="1.765, 1.46, 1.9700000000000002, 1.5954996744791665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 115 </nestedChildShapes> 116 </classShape> 117 <classShape Id="4d800dc9-1b18-469f-b02c-d4554757c5e1" absoluteBounds="1.75, 3.625, 2, 1.5785953776041666"> 118 118 <DataClassMoniker Name="/HiveDataContext/JobPermission" /> 119 119 <nestedChildShapes> 120 <elementListCompartment Id="dedd97d3-a9a2-45a2-9b95-d7366fb65a7f" absoluteBounds="1.765, 4.085, 1.9700000000000002, 0.86484781901041663" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />121 </nestedChildShapes> 122 </classShape> 123 <associationConnector edgePoints="[(11.25 : 1. 98159912109375); (10.9375 : 1.98159912109375); (10.9375 : 0.6875); (2.75 : 0.6875); (2.75 : 1)]" fixedFrom="NotFixed" fixedTo="NotFixed">120 <elementListCompartment Id="dedd97d3-a9a2-45a2-9b95-d7366fb65a7f" absoluteBounds="1.765, 4.085, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 121 </nestedChildShapes> 122 </classShape> 123 <associationConnector edgePoints="[(11.25 : 1.44547136382195); (11.0260416666667 : 1.44547136382195); (11.0260416666667 : 0.5625); (2.75 : 0.5625); (2.75 : 1)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed"> 124 124 <AssociationMoniker Name="/HiveDataContext/Resource/Resource_StateLog" /> 125 125 <nodes> … … 128 128 </nodes> 129 129 </associationConnector> 130 <classShape Id="b4e7aaa8-a382-4560-a1fd-498de77e9340" absoluteBounds="1.75, 5.5, 2, 1. 0961531575520827">130 <classShape Id="b4e7aaa8-a382-4560-a1fd-498de77e9340" absoluteBounds="1.75, 5.5, 2, 1.1939925130208327"> 131 131 <DataClassMoniker Name="/HiveDataContext/Lifecycle" /> 132 132 <nestedChildShapes> 133 <elementListCompartment Id="03597a2c-5c5d-4c2c-b741-c49ab5aa34d5" absoluteBounds="1.7650000000000001, 5.96, 1.9700000000000002, 0.53615315755208326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 134 </nestedChildShapes> 135 </classShape> 136 <classShape Id="cdddf4da-eaef-46a1-9cfd-987bb6b3d03e" absoluteBounds="17, 3.125, 2.5, 1.5891951497395827"> 137 <DataClassMoniker Name="/HiveDataContext/DeletedJobStatistics" /> 138 <nestedChildShapes> 139 <elementListCompartment Id="b8738381-f696-4dba-a517-47e9cd96a9a6" absoluteBounds="17.015, 3.585, 2.4699999999999998, 1.0291951497395833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 140 </nestedChildShapes> 141 </classShape> 142 <classShape Id="25442617-ff41-49a0-b5d5-4cbe0b2f0f45" absoluteBounds="22, 4.5, 2, 1.7535424804687496"> 143 <DataClassMoniker Name="/HiveDataContext/UserStatistics" /> 144 <nestedChildShapes> 145 <elementListCompartment Id="6edf08e7-054a-4253-8d4f-5bf2dfec2d29" absoluteBounds="22.015, 4.96, 1.9700000000000002, 1.19354248046875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 146 </nestedChildShapes> 147 </classShape> 148 <classShape Id="f78ec989-4862-4bac-87e3-9b0aad4bc037" absoluteBounds="19.875, 4.5, 2, 1.9178898111979166"> 149 <DataClassMoniker Name="/HiveDataContext/SlaveStatistics" /> 150 <nestedChildShapes> 151 <elementListCompartment Id="98cb46fe-820e-4041-aee8-04e8bed3df23" absoluteBounds="19.89, 4.96, 1.9700000000000002, 1.3578898111979165" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 152 </nestedChildShapes> 153 </classShape> 154 <classShape Id="4d9f0606-b7ee-4dae-a8ac-aff88d25a941" absoluteBounds="21, 3, 2, 1.0961531575520827"> 155 <DataClassMoniker Name="/HiveDataContext/Statistics" /> 156 <nestedChildShapes> 157 <elementListCompartment Id="17821282-8edf-40b7-9065-84f53391d5c1" absoluteBounds="21.015, 3.46, 1.9700000000000002, 0.53615315755208326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 158 </nestedChildShapes> 159 </classShape> 160 <associationConnector edgePoints="[(21.4375 : 4.19399251302083); (21.4375 : 4.5)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 161 <AssociationMoniker Name="/HiveDataContext/Statistics/Statistics_SlaveStatistics" /> 162 <nodes> 163 <classShapeMoniker Id="4d9f0606-b7ee-4dae-a8ac-aff88d25a941" /> 164 <classShapeMoniker Id="f78ec989-4862-4bac-87e3-9b0aad4bc037" /> 165 </nodes> 166 </associationConnector> 167 <associationConnector edgePoints="[(22.5 : 4.19399251302083); (22.5 : 4.5)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 168 <AssociationMoniker Name="/HiveDataContext/Statistics/Statistics_UserStatistics" /> 169 <nodes> 170 <classShapeMoniker Id="4d9f0606-b7ee-4dae-a8ac-aff88d25a941" /> 171 <classShapeMoniker Id="25442617-ff41-49a0-b5d5-4cbe0b2f0f45" /> 172 </nodes> 173 </associationConnector> 133 <elementListCompartment Id="03597a2c-5c5d-4c2c-b741-c49ab5aa34d5" absoluteBounds="1.7650000000000001, 5.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 134 </nestedChildShapes> 135 </classShape> 174 136 <associationConnector edgePoints="[(13.25 : 2.73159912109375); (13.5 : 2.73159912109375)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 175 137 <AssociationMoniker Name="/HiveDataContext/Resource/Resource_Downtime" /> … … 179 141 </nodes> 180 142 </associationConnector> 181 <associationConnector edgePoints="[( 7.96163946463664 : 4.30930826822917); (7.96163946463664 : 5.09699625651042); (8.875 : 5.09699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">143 <associationConnector edgePoints="[(8.0192961430407 : 3.90397379557292); (8.0192961430407 : 5.04807657877604); (8.875 : 5.04807657877604)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 182 144 <AssociationMoniker Name="/HiveDataContext/Task/Task_AssignedResource" /> 183 145 <nodes> … … 186 148 </nodes> 187 149 </associationConnector> 188 <associationConnector edgePoints="[(7. 16831973231832 : 4.30930826822917); (7.16831973231832 : 5.875)]" fixedFrom="NotFixed" fixedTo="NotFixed">150 <associationConnector edgePoints="[(7.20145120722822 : 3.90397379557292); (7.20145120722822 : 5.875)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 189 151 <AssociationMoniker Name="/HiveDataContext/Task/Task_RequiredPlugin" /> 190 152 <nodes> … … 193 155 </nodes> 194 156 </associationConnector> 195 <associationConnector edgePoints="[(7.20923076923077 : 1); (7.20923076923077 : 0. 875); (7.80461538461539 : 0.875); (7.80461538461539 : 1)]" fixedFrom="NotFixed" fixedTo="NotFixed">157 <associationConnector edgePoints="[(7.20923076923077 : 1); (7.20923076923077 : 0.770833333333333); (7.80461538461539 : 0.770833333333333); (7.80461538461539 : 1)]" manuallyRouted="true" fixedFrom="NotFixed" fixedTo="NotFixed"> 196 158 <AssociationMoniker Name="/HiveDataContext/Task/Task_Task" /> 197 159 <nodes> … … 228 190 </nodes> 229 191 </associationConnector> 230 <classShape Id="a3f352be-9f15-4e73-8d44-3e8ac02fb4cf" absoluteBounds="11.25, 3.875, 2, 1. 2605004882812496">192 <classShape Id="a3f352be-9f15-4e73-8d44-3e8ac02fb4cf" absoluteBounds="11.25, 3.875, 2, 1.3862939453124996"> 231 193 <DataClassMoniker Name="/HiveDataContext/ResourcePermission" /> 232 194 <nestedChildShapes> 233 <elementListCompartment Id="45e2f1a8-8a1e-4647-b649-10ec55976ab4" absoluteBounds="11.265, 4.335, 1.9700000000000002, 0. 70050048828125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />195 <elementListCompartment Id="45e2f1a8-8a1e-4647-b649-10ec55976ab4" absoluteBounds="11.265, 4.335, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 234 196 </nestedChildShapes> 235 197 </classShape> … … 241 203 </nodes> 242 204 </associationConnector> 243 <classShape Id="f9e8867f-fd15-4a72-8ca4-4f02cd3f141f" absoluteBounds="4.125, 5.5, 2, 1. 0961531575520827">205 <classShape Id="f9e8867f-fd15-4a72-8ca4-4f02cd3f141f" absoluteBounds="4.125, 5.5, 2, 1.1939925130208327"> 244 206 <DataClassMoniker Name="/HiveDataContext/UserPriority" /> 245 207 <nestedChildShapes> 246 <elementListCompartment Id="ee41f516-7d9c-4a1d-a1b8-bbe00a6ffea8" absoluteBounds="4.14, 5.96, 1.9700000000000002, 0.53615315755208326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 247 </nestedChildShapes> 248 </classShape> 208 <elementListCompartment Id="ee41f516-7d9c-4a1d-a1b8-bbe00a6ffea8" absoluteBounds="4.14, 5.96, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 209 </nestedChildShapes> 210 </classShape> 211 <classShape Id="b5b919c2-4efc-4f09-8f52-9d541a11e961" absoluteBounds="4.625, 15.25, 2, 2.3478011067708344"> 212 <DataClassMoniker Name="/HiveDataContext/DimClient" /> 213 <nestedChildShapes> 214 <elementListCompartment Id="30f62a7b-0b16-404e-b972-fb12bfe978dd" absoluteBounds="4.6400000000000006, 15.71, 1.9700000000000002, 1.7878011067708333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 215 </nestedChildShapes> 216 </classShape> 217 <classShape Id="04f52807-ce17-4d65-bd23-cc38c6dfbd7a" absoluteBounds="6.875, 11.25, 2, 3.8862125651041666"> 218 <DataClassMoniker Name="/HiveDataContext/FactTask" /> 219 <nestedChildShapes> 220 <elementListCompartment Id="63e3ddcb-a6fe-48e0-a674-e650a55a9f2c" absoluteBounds="6.8900000000000006, 11.71, 1.9700000000000002, 3.3262125651041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 221 </nestedChildShapes> 222 </classShape> 223 <classShape Id="e0cb8641-a75e-4b9f-beda-3218c56938b1" absoluteBounds="8.125, 8.25, 2, 2.3478011067708344"> 224 <DataClassMoniker Name="/HiveDataContext/DimJob" /> 225 <nestedChildShapes> 226 <elementListCompartment Id="6b9e8260-7e4b-4357-9c26-eebebfd69504" absoluteBounds="8.14, 8.71, 1.9700000000000002, 1.7878011067708333" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 227 </nestedChildShapes> 228 </classShape> 229 <classShape Id="a769f2ac-c8e3-4860-baa5-c46f46c38ed8" absoluteBounds="3.625, 8.5, 2, 1.9631982421875005"> 230 <DataClassMoniker Name="/HiveDataContext/DimTime" /> 231 <nestedChildShapes> 232 <elementListCompartment Id="694c4a5a-20fb-43a9-bc9a-7b59d794a7fb" absoluteBounds="3.6399999999999997, 8.96, 1.9700000000000002, 1.4031982421875" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 233 </nestedChildShapes> 234 </classShape> 235 <classShape Id="66c34ced-4fdb-4a1d-b8dd-fe094679b7fb" absoluteBounds="0.625, 8.875, 2, 1.1939925130208344"> 236 <DataClassMoniker Name="/HiveDataContext/DimUser" /> 237 <nestedChildShapes> 238 <elementListCompartment Id="6181c560-fc74-4d43-b064-a90032bf17a5" absoluteBounds="0.64000000000000012, 9.335, 1.9700000000000002, 0.63399251302083326" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 239 </nestedChildShapes> 240 </classShape> 241 <classShape Id="053a5cff-b18a-4ee5-8d43-48ed5c5dcfad" absoluteBounds="2.625, 11, 2, 3.3093082682291666"> 242 <DataClassMoniker Name="/HiveDataContext/FactClientInfo" /> 243 <nestedChildShapes> 244 <elementListCompartment Id="0a1cc913-6636-455c-95b3-302f533527db" absoluteBounds="2.6399999999999997, 11.46, 1.9700000000000002, 2.7493082682291665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" /> 245 </nestedChildShapes> 246 </classShape> 247 <associationConnector edgePoints="[(6.625 : 15.25); (6.875 : 15.1362125651042)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 248 <AssociationMoniker Name="/HiveDataContext/DimClient/DimClient_FactTask" /> 249 <nodes> 250 <classShapeMoniker Id="b5b919c2-4efc-4f09-8f52-9d541a11e961" /> 251 <classShapeMoniker Id="04f52807-ce17-4d65-bd23-cc38c6dfbd7a" /> 252 </nodes> 253 </associationConnector> 254 <associationConnector edgePoints="[(8.5 : 10.5978011067708); (8.5 : 11.25)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 255 <AssociationMoniker Name="/HiveDataContext/DimJob/DimJob_FactTask" /> 256 <nodes> 257 <classShapeMoniker Id="e0cb8641-a75e-4b9f-beda-3218c56938b1" /> 258 <classShapeMoniker Id="04f52807-ce17-4d65-bd23-cc38c6dfbd7a" /> 259 </nodes> 260 </associationConnector> 261 <associationConnector edgePoints="[(5.6249975 : 15.25); (5.6249975 : 12.6546541341146); (4.625 : 12.6546541341146)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 262 <AssociationMoniker Name="/HiveDataContext/DimClient/DimClient_FactClientInfo" /> 263 <nodes> 264 <classShapeMoniker Id="b5b919c2-4efc-4f09-8f52-9d541a11e961" /> 265 <classShapeMoniker Id="053a5cff-b18a-4ee5-8d43-48ed5c5dcfad" /> 266 </nodes> 267 </associationConnector> 268 <associationConnector edgePoints="[(4.125 : 10.4631982421875); (4.125 : 11)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 269 <AssociationMoniker Name="/HiveDataContext/DimTime/DimTime_FactClientInfo" /> 270 <nodes> 271 <classShapeMoniker Id="a769f2ac-c8e3-4860-baa5-c46f46c38ed8" /> 272 <classShapeMoniker Id="053a5cff-b18a-4ee5-8d43-48ed5c5dcfad" /> 273 </nodes> 274 </associationConnector> 275 <associationConnector edgePoints="[(1.59375 : 10.0689925130208); (1.59375 : 12.6546541341146); (2.625 : 12.6546541341146)]" fixedFrom="NotFixed" fixedTo="NotFixed"> 276 <AssociationMoniker Name="/HiveDataContext/DimUser/DimUser_FactClientInfo" /> 277 <nodes> 278 <classShapeMoniker Id="66c34ced-4fdb-4a1d-b8dd-fe094679b7fb" /> 279 <classShapeMoniker Id="053a5cff-b18a-4ee5-8d43-48ed5c5dcfad" /> 280 </nodes> 281 </associationConnector> 249 282 </nestedChildShapes> 250 283 </ordesignerObjectsDiagram> -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/HiveDataContext.designer.cs
r11623 r12878 3 3 // <auto-generated> 4 4 // This code was generated by a tool. 5 // Runtime Version:4.0.30319.34 0145 // Runtime Version:4.0.30319.34209 6 6 // 7 7 // Changes to this file may cause incorrect behavior and will be lost if … … 67 67 partial void UpdateLifecycle(Lifecycle instance); 68 68 partial void DeleteLifecycle(Lifecycle instance); 69 partial void InsertDeletedJobStatistics(DeletedJobStatistics instance);70 partial void UpdateDeletedJobStatistics(DeletedJobStatistics instance);71 partial void DeleteDeletedJobStatistics(DeletedJobStatistics instance);72 partial void InsertUserStatistics(UserStatistics instance);73 partial void UpdateUserStatistics(UserStatistics instance);74 partial void DeleteUserStatistics(UserStatistics instance);75 partial void InsertSlaveStatistics(SlaveStatistics instance);76 partial void UpdateSlaveStatistics(SlaveStatistics instance);77 partial void DeleteSlaveStatistics(SlaveStatistics instance);78 partial void InsertStatistics(Statistics instance);79 partial void UpdateStatistics(Statistics instance);80 partial void DeleteStatistics(Statistics instance);81 69 partial void InsertResourcePermission(ResourcePermission instance); 82 70 partial void UpdateResourcePermission(ResourcePermission instance); … … 85 73 partial void UpdateUserPriority(UserPriority instance); 86 74 partial void DeleteUserPriority(UserPriority instance); 75 partial void InsertDimClient(DimClient instance); 76 partial void UpdateDimClient(DimClient instance); 77 partial void DeleteDimClient(DimClient instance); 78 partial void InsertFactTask(FactTask instance); 79 partial void UpdateFactTask(FactTask instance); 80 partial void DeleteFactTask(FactTask instance); 81 partial void InsertDimJob(DimJob instance); 82 partial void UpdateDimJob(DimJob instance); 83 partial void DeleteDimJob(DimJob instance); 84 partial void InsertDimTime(DimTime instance); 85 partial void UpdateDimTime(DimTime instance); 86 partial void DeleteDimTime(DimTime instance); 87 partial void InsertDimUser(DimUser instance); 88 partial void UpdateDimUser(DimUser instance); 89 partial void DeleteDimUser(DimUser instance); 90 partial void InsertFactClientInfo(FactClientInfo instance); 91 partial void UpdateFactClientInfo(FactClientInfo instance); 92 partial void DeleteFactClientInfo(FactClientInfo instance); 87 93 #endregion 88 94 … … 213 219 } 214 220 215 public System.Data.Linq.Table<DeletedJobStatistics> DeletedJobStatistics216 {217 get218 {219 return this.GetTable<DeletedJobStatistics>();220 }221 }222 223 public System.Data.Linq.Table<UserStatistics> UserStatistics224 {225 get226 {227 return this.GetTable<UserStatistics>();228 }229 }230 231 public System.Data.Linq.Table<SlaveStatistics> SlaveStatistics232 {233 get234 {235 return this.GetTable<SlaveStatistics>();236 }237 }238 239 public System.Data.Linq.Table<Statistics> Statistics240 {241 get242 {243 return this.GetTable<Statistics>();244 }245 }246 247 221 public System.Data.Linq.Table<ResourcePermission> ResourcePermissions 248 222 { … … 258 232 { 259 233 return this.GetTable<UserPriority>(); 234 } 235 } 236 237 public System.Data.Linq.Table<DimClient> DimClients 238 { 239 get 240 { 241 return this.GetTable<DimClient>(); 242 } 243 } 244 245 public System.Data.Linq.Table<FactTask> FactTasks 246 { 247 get 248 { 249 return this.GetTable<FactTask>(); 250 } 251 } 252 253 public System.Data.Linq.Table<DimJob> DimJobs 254 { 255 get 256 { 257 return this.GetTable<DimJob>(); 258 } 259 } 260 261 public System.Data.Linq.Table<DimTime> DimTimes 262 { 263 get 264 { 265 return this.GetTable<DimTime>(); 266 } 267 } 268 269 public System.Data.Linq.Table<DimUser> DimUsers 270 { 271 get 272 { 273 return this.GetTable<DimUser>(); 274 } 275 } 276 277 public System.Data.Linq.Table<FactClientInfo> FactClientInfos 278 { 279 get 280 { 281 return this.GetTable<FactClientInfo>(); 260 282 } 261 283 } … … 3528 3550 } 3529 3551 3530 [global::System.Data.Linq.Mapping.TableAttribute(Name="")]3531 public partial class DeletedJobStatistics : INotifyPropertyChanging, INotifyPropertyChanged3532 {3533 3534 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);3535 3536 private System.Guid _UserId;3537 3538 private double _ExecutionTime;3539 3540 private double _ExecutionTimeFinishedJobs;3541 3542 private double _StartToEndTime;3543 3544 private System.Guid _DeletedJobStatisticsId;3545 3546 #region Extensibility Method Definitions3547 partial void OnLoaded();3548 partial void OnValidate(System.Data.Linq.ChangeAction action);3549 partial void OnCreated();3550 partial void OnUserIdChanging(System.Guid value);3551 partial void OnUserIdChanged();3552 partial void OnExecutionTimeSChanging(double value);3553 partial void OnExecutionTimeSChanged();3554 partial void OnExecutionTimeSFinishedJobsChanging(double value);3555 partial void OnExecutionTimeSFinishedJobsChanged();3556 partial void OnStartToEndTimeSChanging(double value);3557 partial void OnStartToEndTimeSChanged();3558 partial void OnDeletedJobStatisticsIdChanging(System.Guid value);3559 partial void OnDeletedJobStatisticsIdChanged();3560 #endregion3561 3562 public DeletedJobStatistics()3563 {3564 OnCreated();3565 }3566 3567 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL")]3568 public System.Guid UserId3569 {3570 get3571 {3572 return this._UserId;3573 }3574 set3575 {3576 if ((this._UserId != value))3577 {3578 this.OnUserIdChanging(value);3579 this.SendPropertyChanging();3580 this._UserId = value;3581 this.SendPropertyChanged("UserId");3582 this.OnUserIdChanged();3583 }3584 }3585 }3586 3587 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTime", DbType="float NOT NULL")]3588 public double ExecutionTimeS3589 {3590 get3591 {3592 return this._ExecutionTime;3593 }3594 set3595 {3596 if ((this._ExecutionTime != value))3597 {3598 this.OnExecutionTimeSChanging(value);3599 this.SendPropertyChanging();3600 this._ExecutionTime = value;3601 this.SendPropertyChanged("ExecutionTimeS");3602 this.OnExecutionTimeSChanged();3603 }3604 }3605 }3606 3607 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTimeFinishedJobs", DbType="float NOT NULL")]3608 public double ExecutionTimeSFinishedJobs3609 {3610 get3611 {3612 return this._ExecutionTimeFinishedJobs;3613 }3614 set3615 {3616 if ((this._ExecutionTimeFinishedJobs != value))3617 {3618 this.OnExecutionTimeSFinishedJobsChanging(value);3619 this.SendPropertyChanging();3620 this._ExecutionTimeFinishedJobs = value;3621 this.SendPropertyChanged("ExecutionTimeSFinishedJobs");3622 this.OnExecutionTimeSFinishedJobsChanged();3623 }3624 }3625 }3626 3627 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartToEndTime", DbType="float NOT NULL")]3628 public double StartToEndTimeS3629 {3630 get3631 {3632 return this._StartToEndTime;3633 }3634 set3635 {3636 if ((this._StartToEndTime != value))3637 {3638 this.OnStartToEndTimeSChanging(value);3639 this.SendPropertyChanging();3640 this._StartToEndTime = value;3641 this.SendPropertyChanged("StartToEndTimeS");3642 this.OnStartToEndTimeSChanged();3643 }3644 }3645 }3646 3647 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DeletedJobStatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]3648 public System.Guid DeletedJobStatisticsId3649 {3650 get3651 {3652 return this._DeletedJobStatisticsId;3653 }3654 set3655 {3656 if ((this._DeletedJobStatisticsId != value))3657 {3658 this.OnDeletedJobStatisticsIdChanging(value);3659 this.SendPropertyChanging();3660 this._DeletedJobStatisticsId = value;3661 this.SendPropertyChanged("DeletedJobStatisticsId");3662 this.OnDeletedJobStatisticsIdChanged();3663 }3664 }3665 }3666 3667 public event PropertyChangingEventHandler PropertyChanging;3668 3669 public event PropertyChangedEventHandler PropertyChanged;3670 3671 protected virtual void SendPropertyChanging()3672 {3673 if ((this.PropertyChanging != null))3674 {3675 this.PropertyChanging(this, emptyChangingEventArgs);3676 }3677 }3678 3679 protected virtual void SendPropertyChanged(String propertyName)3680 {3681 if ((this.PropertyChanged != null))3682 {3683 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));3684 }3685 }3686 }3687 3688 [global::System.Data.Linq.Mapping.TableAttribute(Name="")]3689 public partial class UserStatistics : INotifyPropertyChanging, INotifyPropertyChanged3690 {3691 3692 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);3693 3694 private System.Guid _StatisticsId;3695 3696 private System.Guid _UserId;3697 3698 private double _ExecutionTime;3699 3700 private int _CoresUsed;3701 3702 private double _ExecutionTimeFinishedJobs;3703 3704 private double _StartToEndTime;3705 3706 private EntityRef<Statistics> _Statistics;3707 3708 #region Extensibility Method Definitions3709 partial void OnLoaded();3710 partial void OnValidate(System.Data.Linq.ChangeAction action);3711 partial void OnCreated();3712 partial void OnStatisticsIdChanging(System.Guid value);3713 partial void OnStatisticsIdChanged();3714 partial void OnUserIdChanging(System.Guid value);3715 partial void OnUserIdChanged();3716 partial void OnExecutionTimeMsChanging(double value);3717 partial void OnExecutionTimeMsChanged();3718 partial void OnUsedCoresChanging(int value);3719 partial void OnUsedCoresChanged();3720 partial void OnExecutionTimeMsFinishedJobsChanging(double value);3721 partial void OnExecutionTimeMsFinishedJobsChanged();3722 partial void OnStartToEndTimeMsChanging(double value);3723 partial void OnStartToEndTimeMsChanged();3724 #endregion3725 3726 public UserStatistics()3727 {3728 this._Statistics = default(EntityRef<Statistics>);3729 OnCreated();3730 }3731 3732 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]3733 public System.Guid StatisticsId3734 {3735 get3736 {3737 return this._StatisticsId;3738 }3739 set3740 {3741 if ((this._StatisticsId != value))3742 {3743 if (this._Statistics.HasLoadedOrAssignedValue)3744 {3745 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();3746 }3747 this.OnStatisticsIdChanging(value);3748 this.SendPropertyChanging();3749 this._StatisticsId = value;3750 this.SendPropertyChanged("StatisticsId");3751 this.OnStatisticsIdChanged();3752 }3753 }3754 }3755 3756 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]3757 public System.Guid UserId3758 {3759 get3760 {3761 return this._UserId;3762 }3763 set3764 {3765 if ((this._UserId != value))3766 {3767 this.OnUserIdChanging(value);3768 this.SendPropertyChanging();3769 this._UserId = value;3770 this.SendPropertyChanged("UserId");3771 this.OnUserIdChanged();3772 }3773 }3774 }3775 3776 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTime", DbType="float NOT NULL")]3777 public double ExecutionTimeMs3778 {3779 get3780 {3781 return this._ExecutionTime;3782 }3783 set3784 {3785 if ((this._ExecutionTime != value))3786 {3787 this.OnExecutionTimeMsChanging(value);3788 this.SendPropertyChanging();3789 this._ExecutionTime = value;3790 this.SendPropertyChanged("ExecutionTimeMs");3791 this.OnExecutionTimeMsChanged();3792 }3793 }3794 }3795 3796 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CoresUsed", DbType="Int NOT NULL")]3797 public int UsedCores3798 {3799 get3800 {3801 return this._CoresUsed;3802 }3803 set3804 {3805 if ((this._CoresUsed != value))3806 {3807 this.OnUsedCoresChanging(value);3808 this.SendPropertyChanging();3809 this._CoresUsed = value;3810 this.SendPropertyChanged("UsedCores");3811 this.OnUsedCoresChanged();3812 }3813 }3814 }3815 3816 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExecutionTimeFinishedJobs", DbType="float NOT NULL")]3817 public double ExecutionTimeMsFinishedJobs3818 {3819 get3820 {3821 return this._ExecutionTimeFinishedJobs;3822 }3823 set3824 {3825 if ((this._ExecutionTimeFinishedJobs != value))3826 {3827 this.OnExecutionTimeMsFinishedJobsChanging(value);3828 this.SendPropertyChanging();3829 this._ExecutionTimeFinishedJobs = value;3830 this.SendPropertyChanged("ExecutionTimeMsFinishedJobs");3831 this.OnExecutionTimeMsFinishedJobsChanged();3832 }3833 }3834 }3835 3836 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartToEndTime", DbType="float NOT NULL")]3837 public double StartToEndTimeMs3838 {3839 get3840 {3841 return this._StartToEndTime;3842 }3843 set3844 {3845 if ((this._StartToEndTime != value))3846 {3847 this.OnStartToEndTimeMsChanging(value);3848 this.SendPropertyChanging();3849 this._StartToEndTime = value;3850 this.SendPropertyChanged("StartToEndTimeMs");3851 this.OnStartToEndTimeMsChanged();3852 }3853 }3854 }3855 3856 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_UserStatistics", Storage="_Statistics", ThisKey="StatisticsId", OtherKey="StatisticsId", IsForeignKey=true)]3857 public Statistics Statistics3858 {3859 get3860 {3861 return this._Statistics.Entity;3862 }3863 set3864 {3865 Statistics previousValue = this._Statistics.Entity;3866 if (((previousValue != value)3867 || (this._Statistics.HasLoadedOrAssignedValue == false)))3868 {3869 this.SendPropertyChanging();3870 if ((previousValue != null))3871 {3872 this._Statistics.Entity = null;3873 previousValue.UserStatistics.Remove(this);3874 }3875 this._Statistics.Entity = value;3876 if ((value != null))3877 {3878 value.UserStatistics.Add(this);3879 this._StatisticsId = value.StatisticsId;3880 }3881 else3882 {3883 this._StatisticsId = default(System.Guid);3884 }3885 this.SendPropertyChanged("Statistics");3886 }3887 }3888 }3889 3890 public event PropertyChangingEventHandler PropertyChanging;3891 3892 public event PropertyChangedEventHandler PropertyChanged;3893 3894 protected virtual void SendPropertyChanging()3895 {3896 if ((this.PropertyChanging != null))3897 {3898 this.PropertyChanging(this, emptyChangingEventArgs);3899 }3900 }3901 3902 protected virtual void SendPropertyChanged(String propertyName)3903 {3904 if ((this.PropertyChanged != null))3905 {3906 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));3907 }3908 }3909 }3910 3911 [global::System.Data.Linq.Mapping.TableAttribute(Name="")]3912 public partial class SlaveStatistics : INotifyPropertyChanging, INotifyPropertyChanged3913 {3914 3915 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);3916 3917 private System.Guid _StatisticsId;3918 3919 private System.Guid _SlaveId;3920 3921 private int _Cores;3922 3923 private int _FreeCores;3924 3925 private double _CpuUtilization;3926 3927 private int _Memory;3928 3929 private int _FreeMemory;3930 3931 private EntityRef<Statistics> _Statistics;3932 3933 #region Extensibility Method Definitions3934 partial void OnLoaded();3935 partial void OnValidate(System.Data.Linq.ChangeAction action);3936 partial void OnCreated();3937 partial void OnStatisticsIdChanging(System.Guid value);3938 partial void OnStatisticsIdChanged();3939 partial void OnSlaveIdChanging(System.Guid value);3940 partial void OnSlaveIdChanged();3941 partial void OnCoresChanging(int value);3942 partial void OnCoresChanged();3943 partial void OnFreeCoresChanging(int value);3944 partial void OnFreeCoresChanged();3945 partial void OnCpuUtilizationChanging(double value);3946 partial void OnCpuUtilizationChanged();3947 partial void OnMemoryChanging(int value);3948 partial void OnMemoryChanged();3949 partial void OnFreeMemoryChanging(int value);3950 partial void OnFreeMemoryChanged();3951 #endregion3952 3953 public SlaveStatistics()3954 {3955 this._Statistics = default(EntityRef<Statistics>);3956 OnCreated();3957 }3958 3959 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]3960 public System.Guid StatisticsId3961 {3962 get3963 {3964 return this._StatisticsId;3965 }3966 set3967 {3968 if ((this._StatisticsId != value))3969 {3970 if (this._Statistics.HasLoadedOrAssignedValue)3971 {3972 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();3973 }3974 this.OnStatisticsIdChanging(value);3975 this.SendPropertyChanging();3976 this._StatisticsId = value;3977 this.SendPropertyChanged("StatisticsId");3978 this.OnStatisticsIdChanged();3979 }3980 }3981 }3982 3983 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SlaveId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]3984 public System.Guid SlaveId3985 {3986 get3987 {3988 return this._SlaveId;3989 }3990 set3991 {3992 if ((this._SlaveId != value))3993 {3994 this.OnSlaveIdChanging(value);3995 this.SendPropertyChanging();3996 this._SlaveId = value;3997 this.SendPropertyChanged("SlaveId");3998 this.OnSlaveIdChanged();3999 }4000 }4001 }4002 4003 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Cores", DbType="Int NOT NULL")]4004 public int Cores4005 {4006 get4007 {4008 return this._Cores;4009 }4010 set4011 {4012 if ((this._Cores != value))4013 {4014 this.OnCoresChanging(value);4015 this.SendPropertyChanging();4016 this._Cores = value;4017 this.SendPropertyChanged("Cores");4018 this.OnCoresChanged();4019 }4020 }4021 }4022 4023 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FreeCores", DbType="Int NOT NULL")]4024 public int FreeCores4025 {4026 get4027 {4028 return this._FreeCores;4029 }4030 set4031 {4032 if ((this._FreeCores != value))4033 {4034 this.OnFreeCoresChanging(value);4035 this.SendPropertyChanging();4036 this._FreeCores = value;4037 this.SendPropertyChanged("FreeCores");4038 this.OnFreeCoresChanged();4039 }4040 }4041 }4042 4043 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CpuUtilization", DbType="float NOT NULL")]4044 public double CpuUtilization4045 {4046 get4047 {4048 return this._CpuUtilization;4049 }4050 set4051 {4052 if ((this._CpuUtilization != value))4053 {4054 this.OnCpuUtilizationChanging(value);4055 this.SendPropertyChanging();4056 this._CpuUtilization = value;4057 this.SendPropertyChanged("CpuUtilization");4058 this.OnCpuUtilizationChanged();4059 }4060 }4061 }4062 4063 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Memory", DbType="Int NOT NULL")]4064 public int Memory4065 {4066 get4067 {4068 return this._Memory;4069 }4070 set4071 {4072 if ((this._Memory != value))4073 {4074 this.OnMemoryChanging(value);4075 this.SendPropertyChanging();4076 this._Memory = value;4077 this.SendPropertyChanged("Memory");4078 this.OnMemoryChanged();4079 }4080 }4081 }4082 4083 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_FreeMemory", DbType="Int NOT NULL")]4084 public int FreeMemory4085 {4086 get4087 {4088 return this._FreeMemory;4089 }4090 set4091 {4092 if ((this._FreeMemory != value))4093 {4094 this.OnFreeMemoryChanging(value);4095 this.SendPropertyChanging();4096 this._FreeMemory = value;4097 this.SendPropertyChanged("FreeMemory");4098 this.OnFreeMemoryChanged();4099 }4100 }4101 }4102 4103 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_SlaveStatistics", Storage="_Statistics", ThisKey="StatisticsId", OtherKey="StatisticsId", IsForeignKey=true)]4104 public Statistics Statistics4105 {4106 get4107 {4108 return this._Statistics.Entity;4109 }4110 set4111 {4112 Statistics previousValue = this._Statistics.Entity;4113 if (((previousValue != value)4114 || (this._Statistics.HasLoadedOrAssignedValue == false)))4115 {4116 this.SendPropertyChanging();4117 if ((previousValue != null))4118 {4119 this._Statistics.Entity = null;4120 previousValue.SlaveStatistics.Remove(this);4121 }4122 this._Statistics.Entity = value;4123 if ((value != null))4124 {4125 value.SlaveStatistics.Add(this);4126 this._StatisticsId = value.StatisticsId;4127 }4128 else4129 {4130 this._StatisticsId = default(System.Guid);4131 }4132 this.SendPropertyChanged("Statistics");4133 }4134 }4135 }4136 4137 public event PropertyChangingEventHandler PropertyChanging;4138 4139 public event PropertyChangedEventHandler PropertyChanged;4140 4141 protected virtual void SendPropertyChanging()4142 {4143 if ((this.PropertyChanging != null))4144 {4145 this.PropertyChanging(this, emptyChangingEventArgs);4146 }4147 }4148 4149 protected virtual void SendPropertyChanged(String propertyName)4150 {4151 if ((this.PropertyChanged != null))4152 {4153 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));4154 }4155 }4156 }4157 4158 [global::System.Data.Linq.Mapping.TableAttribute(Name="")]4159 public partial class Statistics : INotifyPropertyChanging, INotifyPropertyChanged4160 {4161 4162 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);4163 4164 private System.Guid _StatisticsId;4165 4166 private System.DateTime _Timestamp;4167 4168 private EntitySet<UserStatistics> _UserStatistics;4169 4170 private EntitySet<SlaveStatistics> _SlaveStatistics;4171 4172 #region Extensibility Method Definitions4173 partial void OnLoaded();4174 partial void OnValidate(System.Data.Linq.ChangeAction action);4175 partial void OnCreated();4176 partial void OnStatisticsIdChanging(System.Guid value);4177 partial void OnStatisticsIdChanged();4178 partial void OnTimestampChanging(System.DateTime value);4179 partial void OnTimestampChanged();4180 #endregion4181 4182 public Statistics()4183 {4184 this._UserStatistics = new EntitySet<UserStatistics>(new Action<UserStatistics>(this.attach_UserStatistics), new Action<UserStatistics>(this.detach_UserStatistics));4185 this._SlaveStatistics = new EntitySet<SlaveStatistics>(new Action<SlaveStatistics>(this.attach_SlaveStatistics), new Action<SlaveStatistics>(this.detach_SlaveStatistics));4186 OnCreated();4187 }4188 4189 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StatisticsId", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)]4190 public System.Guid StatisticsId4191 {4192 get4193 {4194 return this._StatisticsId;4195 }4196 set4197 {4198 if ((this._StatisticsId != value))4199 {4200 this.OnStatisticsIdChanging(value);4201 this.SendPropertyChanging();4202 this._StatisticsId = value;4203 this.SendPropertyChanged("StatisticsId");4204 this.OnStatisticsIdChanged();4205 }4206 }4207 }4208 4209 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Timestamp")]4210 public System.DateTime Timestamp4211 {4212 get4213 {4214 return this._Timestamp;4215 }4216 set4217 {4218 if ((this._Timestamp != value))4219 {4220 this.OnTimestampChanging(value);4221 this.SendPropertyChanging();4222 this._Timestamp = value;4223 this.SendPropertyChanged("Timestamp");4224 this.OnTimestampChanged();4225 }4226 }4227 }4228 4229 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_UserStatistics", Storage="_UserStatistics", ThisKey="StatisticsId", OtherKey="StatisticsId")]4230 public EntitySet<UserStatistics> UserStatistics4231 {4232 get4233 {4234 return this._UserStatistics;4235 }4236 set4237 {4238 this._UserStatistics.Assign(value);4239 }4240 }4241 4242 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="Statistics_SlaveStatistics", Storage="_SlaveStatistics", ThisKey="StatisticsId", OtherKey="StatisticsId")]4243 public EntitySet<SlaveStatistics> SlaveStatistics4244 {4245 get4246 {4247 return this._SlaveStatistics;4248 }4249 set4250 {4251 this._SlaveStatistics.Assign(value);4252 }4253 }4254 4255 public event PropertyChangingEventHandler PropertyChanging;4256 4257 public event PropertyChangedEventHandler PropertyChanged;4258 4259 protected virtual void SendPropertyChanging()4260 {4261 if ((this.PropertyChanging != null))4262 {4263 this.PropertyChanging(this, emptyChangingEventArgs);4264 }4265 }4266 4267 protected virtual void SendPropertyChanged(String propertyName)4268 {4269 if ((this.PropertyChanged != null))4270 {4271 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));4272 }4273 }4274 4275 private void attach_UserStatistics(UserStatistics entity)4276 {4277 this.SendPropertyChanging();4278 entity.Statistics = this;4279 }4280 4281 private void detach_UserStatistics(UserStatistics entity)4282 {4283 this.SendPropertyChanging();4284 entity.Statistics = null;4285 }4286 4287 private void attach_SlaveStatistics(SlaveStatistics entity)4288 {4289 this.SendPropertyChanging();4290 entity.Statistics = this;4291 }4292 4293 private void detach_SlaveStatistics(SlaveStatistics entity)4294 {4295 this.SendPropertyChanging();4296 entity.Statistics = null;4297 }4298 }4299 4300 3552 [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.ResourcePermission")] 4301 3553 public partial class ResourcePermission : INotifyPropertyChanging, INotifyPropertyChanged … … 4534 3786 } 4535 3787 } 3788 3789 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimClient")] 3790 public partial class DimClient : INotifyPropertyChanging, INotifyPropertyChanged 3791 { 3792 3793 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 3794 3795 private System.Guid _Id; 3796 3797 private string _Name; 3798 3799 private System.Guid _ResourceId; 3800 3801 private System.Nullable<System.DateTime> _ExpirationTime; 3802 3803 private System.Nullable<System.Guid> _ResourceGroupId; 3804 3805 private System.Nullable<System.Guid> _ResourceGroup2Id; 3806 3807 private string _GroupName; 3808 3809 private string _GroupName2; 3810 3811 private EntitySet<FactTask> _FactTasks; 3812 3813 private EntitySet<FactClientInfo> _FactClientInfos; 3814 3815 #region Extensibility Method Definitions 3816 partial void OnLoaded(); 3817 partial void OnValidate(System.Data.Linq.ChangeAction action); 3818 partial void OnCreated(); 3819 partial void OnIdChanging(System.Guid value); 3820 partial void OnIdChanged(); 3821 partial void OnNameChanging(string value); 3822 partial void OnNameChanged(); 3823 partial void OnResourceIdChanging(System.Guid value); 3824 partial void OnResourceIdChanged(); 3825 partial void OnExpirationTimeChanging(System.Nullable<System.DateTime> value); 3826 partial void OnExpirationTimeChanged(); 3827 partial void OnResourceGroupIdChanging(System.Nullable<System.Guid> value); 3828 partial void OnResourceGroupIdChanged(); 3829 partial void OnResourceGroup2IdChanging(System.Nullable<System.Guid> value); 3830 partial void OnResourceGroup2IdChanged(); 3831 partial void OnGroupNameChanging(string value); 3832 partial void OnGroupNameChanged(); 3833 partial void OnGroupName2Changing(string value); 3834 partial void OnGroupName2Changed(); 3835 #endregion 3836 3837 public DimClient() 3838 { 3839 this._FactTasks = new EntitySet<FactTask>(new Action<FactTask>(this.attach_FactTasks), new Action<FactTask>(this.detach_FactTasks)); 3840 this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos)); 3841 OnCreated(); 3842 } 3843 3844 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", AutoSync=AutoSync.OnInsert, DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true, IsDbGenerated=true)] 3845 public System.Guid Id 3846 { 3847 get 3848 { 3849 return this._Id; 3850 } 3851 set 3852 { 3853 if ((this._Id != value)) 3854 { 3855 this.OnIdChanging(value); 3856 this.SendPropertyChanging(); 3857 this._Id = value; 3858 this.SendPropertyChanged("Id"); 3859 this.OnIdChanged(); 3860 } 3861 } 3862 } 3863 3864 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)] 3865 public string Name 3866 { 3867 get 3868 { 3869 return this._Name; 3870 } 3871 set 3872 { 3873 if ((this._Name != value)) 3874 { 3875 this.OnNameChanging(value); 3876 this.SendPropertyChanging(); 3877 this._Name = value; 3878 this.SendPropertyChanged("Name"); 3879 this.OnNameChanged(); 3880 } 3881 } 3882 } 3883 3884 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL")] 3885 public System.Guid ResourceId 3886 { 3887 get 3888 { 3889 return this._ResourceId; 3890 } 3891 set 3892 { 3893 if ((this._ResourceId != value)) 3894 { 3895 this.OnResourceIdChanging(value); 3896 this.SendPropertyChanging(); 3897 this._ResourceId = value; 3898 this.SendPropertyChanged("ResourceId"); 3899 this.OnResourceIdChanged(); 3900 } 3901 } 3902 } 3903 3904 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ExpirationTime", DbType="DateTime")] 3905 public System.Nullable<System.DateTime> ExpirationTime 3906 { 3907 get 3908 { 3909 return this._ExpirationTime; 3910 } 3911 set 3912 { 3913 if ((this._ExpirationTime != value)) 3914 { 3915 this.OnExpirationTimeChanging(value); 3916 this.SendPropertyChanging(); 3917 this._ExpirationTime = value; 3918 this.SendPropertyChanged("ExpirationTime"); 3919 this.OnExpirationTimeChanged(); 3920 } 3921 } 3922 } 3923 3924 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceGroupId", DbType="UniqueIdentifier")] 3925 public System.Nullable<System.Guid> ResourceGroupId 3926 { 3927 get 3928 { 3929 return this._ResourceGroupId; 3930 } 3931 set 3932 { 3933 if ((this._ResourceGroupId != value)) 3934 { 3935 this.OnResourceGroupIdChanging(value); 3936 this.SendPropertyChanging(); 3937 this._ResourceGroupId = value; 3938 this.SendPropertyChanged("ResourceGroupId"); 3939 this.OnResourceGroupIdChanged(); 3940 } 3941 } 3942 } 3943 3944 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ResourceGroup2Id", DbType="UniqueIdentifier")] 3945 public System.Nullable<System.Guid> ResourceGroup2Id 3946 { 3947 get 3948 { 3949 return this._ResourceGroup2Id; 3950 } 3951 set 3952 { 3953 if ((this._ResourceGroup2Id != value)) 3954 { 3955 this.OnResourceGroup2IdChanging(value); 3956 this.SendPropertyChanging(); 3957 this._ResourceGroup2Id = value; 3958 this.SendPropertyChanged("ResourceGroup2Id"); 3959 this.OnResourceGroup2IdChanged(); 3960 } 3961 } 3962 } 3963 3964 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GroupName")] 3965 public string GroupName 3966 { 3967 get 3968 { 3969 return this._GroupName; 3970 } 3971 set 3972 { 3973 if ((this._GroupName != value)) 3974 { 3975 this.OnGroupNameChanging(value); 3976 this.SendPropertyChanging(); 3977 this._GroupName = value; 3978 this.SendPropertyChanged("GroupName"); 3979 this.OnGroupNameChanged(); 3980 } 3981 } 3982 } 3983 3984 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_GroupName2")] 3985 public string GroupName2 3986 { 3987 get 3988 { 3989 return this._GroupName2; 3990 } 3991 set 3992 { 3993 if ((this._GroupName2 != value)) 3994 { 3995 this.OnGroupName2Changing(value); 3996 this.SendPropertyChanging(); 3997 this._GroupName2 = value; 3998 this.SendPropertyChanged("GroupName2"); 3999 this.OnGroupName2Changed(); 4000 } 4001 } 4002 } 4003 4004 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactTask", Storage="_FactTasks", ThisKey="Id", OtherKey="LastClientId")] 4005 public EntitySet<FactTask> FactTasks 4006 { 4007 get 4008 { 4009 return this._FactTasks; 4010 } 4011 set 4012 { 4013 this._FactTasks.Assign(value); 4014 } 4015 } 4016 4017 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactClientInfo", Storage="_FactClientInfos", ThisKey="Id", OtherKey="ClientId")] 4018 public EntitySet<FactClientInfo> FactClientInfos 4019 { 4020 get 4021 { 4022 return this._FactClientInfos; 4023 } 4024 set 4025 { 4026 this._FactClientInfos.Assign(value); 4027 } 4028 } 4029 4030 public event PropertyChangingEventHandler PropertyChanging; 4031 4032 public event PropertyChangedEventHandler PropertyChanged; 4033 4034 protected virtual void SendPropertyChanging() 4035 { 4036 if ((this.PropertyChanging != null)) 4037 { 4038 this.PropertyChanging(this, emptyChangingEventArgs); 4039 } 4040 } 4041 4042 protected virtual void SendPropertyChanged(String propertyName) 4043 { 4044 if ((this.PropertyChanged != null)) 4045 { 4046 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 4047 } 4048 } 4049 4050 private void attach_FactTasks(FactTask entity) 4051 { 4052 this.SendPropertyChanging(); 4053 entity.DimClient = this; 4054 } 4055 4056 private void detach_FactTasks(FactTask entity) 4057 { 4058 this.SendPropertyChanging(); 4059 entity.DimClient = null; 4060 } 4061 4062 private void attach_FactClientInfos(FactClientInfo entity) 4063 { 4064 this.SendPropertyChanging(); 4065 entity.DimClient = this; 4066 } 4067 4068 private void detach_FactClientInfos(FactClientInfo entity) 4069 { 4070 this.SendPropertyChanging(); 4071 entity.DimClient = null; 4072 } 4073 } 4074 4075 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].FactTask")] 4076 public partial class FactTask : INotifyPropertyChanging, INotifyPropertyChanged 4077 { 4078 4079 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 4080 4081 private System.Guid _TaskId; 4082 4083 private long _TotalRuntime; 4084 4085 private long _TotalWaitingTime; 4086 4087 private long _TotalTransferTime; 4088 4089 private int _NumCalculationRuns; 4090 4091 private int _NumFails; 4092 4093 private int _CoresRequired; 4094 4095 private int _MemoryRequired; 4096 4097 private int _Priority; 4098 4099 private System.Nullable<System.Guid> _LastClientId; 4100 4101 private System.Guid _JobId; 4102 4103 private System.Nullable<System.DateTime> _EndTime; 4104 4105 private global::HeuristicLab.Services.Hive.DataAccess.TaskState _TaskState; 4106 4107 private string _Exception; 4108 4109 private long _InitialWaitingTimeMs; 4110 4111 private System.Nullable<System.DateTime> _StartTime; 4112 4113 private EntityRef<DimClient> _DimClient; 4114 4115 private EntityRef<DimJob> _DimJob; 4116 4117 #region Extensibility Method Definitions 4118 partial void OnLoaded(); 4119 partial void OnValidate(System.Data.Linq.ChangeAction action); 4120 partial void OnCreated(); 4121 partial void OnTaskIdChanging(System.Guid value); 4122 partial void OnTaskIdChanged(); 4123 partial void OnCalculatingTimeChanging(long value); 4124 partial void OnCalculatingTimeChanged(); 4125 partial void OnWaitingTimeChanging(long value); 4126 partial void OnWaitingTimeChanged(); 4127 partial void OnTransferTimeChanging(long value); 4128 partial void OnTransferTimeChanged(); 4129 partial void OnNumCalculationRunsChanging(int value); 4130 partial void OnNumCalculationRunsChanged(); 4131 partial void OnNumRetriesChanging(int value); 4132 partial void OnNumRetriesChanged(); 4133 partial void OnCoresRequiredChanging(int value); 4134 partial void OnCoresRequiredChanged(); 4135 partial void OnMemoryRequiredChanging(int value); 4136 partial void OnMemoryRequiredChanged(); 4137 partial void OnPriorityChanging(int value); 4138 partial void OnPriorityChanged(); 4139 partial void OnLastClientIdChanging(System.Nullable<System.Guid> value); 4140 partial void OnLastClientIdChanged(); 4141 partial void OnJobIdChanging(System.Guid value); 4142 partial void OnJobIdChanged(); 4143 partial void OnEndTimeChanging(System.Nullable<System.DateTime> value); 4144 partial void OnEndTimeChanged(); 4145 partial void OnTaskStateChanging(global::HeuristicLab.Services.Hive.DataAccess.TaskState value); 4146 partial void OnTaskStateChanged(); 4147 partial void OnExceptionChanging(string value); 4148 partial void OnExceptionChanged(); 4149 partial void OnInitialWaitingTimeChanging(long value); 4150 partial void OnInitialWaitingTimeChanged(); 4151 partial void OnStartTimeChanging(System.Nullable<System.DateTime> value); 4152 partial void OnStartTimeChanged(); 4153 #endregion 4154 4155 public FactTask() 4156 { 4157 this._DimClient = default(EntityRef<DimClient>); 4158 this._DimJob = default(EntityRef<DimJob>); 4159 OnCreated(); 4160 } 4161 4162 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaskId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)] 4163 public System.Guid TaskId 4164 { 4165 get 4166 { 4167 return this._TaskId; 4168 } 4169 set 4170 { 4171 if ((this._TaskId != value)) 4172 { 4173 this.OnTaskIdChanging(value); 4174 this.SendPropertyChanging(); 4175 this._TaskId = value; 4176 this.SendPropertyChanged("TaskId"); 4177 this.OnTaskIdChanged(); 4178 } 4179 } 4180 } 4181 4182 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalRuntime", DbType="INT NOT NULL")] 4183 public long CalculatingTime 4184 { 4185 get 4186 { 4187 return this._TotalRuntime; 4188 } 4189 set 4190 { 4191 if ((this._TotalRuntime != value)) 4192 { 4193 this.OnCalculatingTimeChanging(value); 4194 this.SendPropertyChanging(); 4195 this._TotalRuntime = value; 4196 this.SendPropertyChanged("CalculatingTime"); 4197 this.OnCalculatingTimeChanged(); 4198 } 4199 } 4200 } 4201 4202 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalWaitingTime", DbType="INT NOT NULL")] 4203 public long WaitingTime 4204 { 4205 get 4206 { 4207 return this._TotalWaitingTime; 4208 } 4209 set 4210 { 4211 if ((this._TotalWaitingTime != value)) 4212 { 4213 this.OnWaitingTimeChanging(value); 4214 this.SendPropertyChanging(); 4215 this._TotalWaitingTime = value; 4216 this.SendPropertyChanged("WaitingTime"); 4217 this.OnWaitingTimeChanged(); 4218 } 4219 } 4220 } 4221 4222 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTransferTime", DbType="INT NOT NULL")] 4223 public long TransferTime 4224 { 4225 get 4226 { 4227 return this._TotalTransferTime; 4228 } 4229 set 4230 { 4231 if ((this._TotalTransferTime != value)) 4232 { 4233 this.OnTransferTimeChanging(value); 4234 this.SendPropertyChanging(); 4235 this._TotalTransferTime = value; 4236 this.SendPropertyChanged("TransferTime"); 4237 this.OnTransferTimeChanged(); 4238 } 4239 } 4240 } 4241 4242 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumCalculationRuns", DbType="Int NOT NULL")] 4243 public int NumCalculationRuns 4244 { 4245 get 4246 { 4247 return this._NumCalculationRuns; 4248 } 4249 set 4250 { 4251 if ((this._NumCalculationRuns != value)) 4252 { 4253 this.OnNumCalculationRunsChanging(value); 4254 this.SendPropertyChanging(); 4255 this._NumCalculationRuns = value; 4256 this.SendPropertyChanged("NumCalculationRuns"); 4257 this.OnNumCalculationRunsChanged(); 4258 } 4259 } 4260 } 4261 4262 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumFails", DbType="Int NOT NULL")] 4263 public int NumRetries 4264 { 4265 get 4266 { 4267 return this._NumFails; 4268 } 4269 set 4270 { 4271 if ((this._NumFails != value)) 4272 { 4273 this.OnNumRetriesChanging(value); 4274 this.SendPropertyChanging(); 4275 this._NumFails = value; 4276 this.SendPropertyChanged("NumRetries"); 4277 this.OnNumRetriesChanged(); 4278 } 4279 } 4280 } 4281 4282 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CoresRequired", DbType="Int NOT NULL")] 4283 public int CoresRequired 4284 { 4285 get 4286 { 4287 return this._CoresRequired; 4288 } 4289 set 4290 { 4291 if ((this._CoresRequired != value)) 4292 { 4293 this.OnCoresRequiredChanging(value); 4294 this.SendPropertyChanging(); 4295 this._CoresRequired = value; 4296 this.SendPropertyChanged("CoresRequired"); 4297 this.OnCoresRequiredChanged(); 4298 } 4299 } 4300 } 4301 4302 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_MemoryRequired", DbType="Int NOT NULL")] 4303 public int MemoryRequired 4304 { 4305 get 4306 { 4307 return this._MemoryRequired; 4308 } 4309 set 4310 { 4311 if ((this._MemoryRequired != value)) 4312 { 4313 this.OnMemoryRequiredChanging(value); 4314 this.SendPropertyChanging(); 4315 this._MemoryRequired = value; 4316 this.SendPropertyChanged("MemoryRequired"); 4317 this.OnMemoryRequiredChanged(); 4318 } 4319 } 4320 } 4321 4322 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Priority", DbType="Int NOT NULL")] 4323 public int Priority 4324 { 4325 get 4326 { 4327 return this._Priority; 4328 } 4329 set 4330 { 4331 if ((this._Priority != value)) 4332 { 4333 this.OnPriorityChanging(value); 4334 this.SendPropertyChanging(); 4335 this._Priority = value; 4336 this.SendPropertyChanged("Priority"); 4337 this.OnPriorityChanged(); 4338 } 4339 } 4340 } 4341 4342 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_LastClientId", DbType="UniqueIdentifier NOT NULL")] 4343 public System.Nullable<System.Guid> LastClientId 4344 { 4345 get 4346 { 4347 return this._LastClientId; 4348 } 4349 set 4350 { 4351 if ((this._LastClientId != value)) 4352 { 4353 if (this._DimClient.HasLoadedOrAssignedValue) 4354 { 4355 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 4356 } 4357 this.OnLastClientIdChanging(value); 4358 this.SendPropertyChanging(); 4359 this._LastClientId = value; 4360 this.SendPropertyChanged("LastClientId"); 4361 this.OnLastClientIdChanged(); 4362 } 4363 } 4364 } 4365 4366 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobId", DbType="UniqueIdentifier NOT NULL")] 4367 public System.Guid JobId 4368 { 4369 get 4370 { 4371 return this._JobId; 4372 } 4373 set 4374 { 4375 if ((this._JobId != value)) 4376 { 4377 if (this._DimJob.HasLoadedOrAssignedValue) 4378 { 4379 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 4380 } 4381 this.OnJobIdChanging(value); 4382 this.SendPropertyChanging(); 4383 this._JobId = value; 4384 this.SendPropertyChanged("JobId"); 4385 this.OnJobIdChanged(); 4386 } 4387 } 4388 } 4389 4390 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_EndTime", DbType="DateTime NOT NULL")] 4391 public System.Nullable<System.DateTime> EndTime 4392 { 4393 get 4394 { 4395 return this._EndTime; 4396 } 4397 set 4398 { 4399 if ((this._EndTime != value)) 4400 { 4401 this.OnEndTimeChanging(value); 4402 this.SendPropertyChanging(); 4403 this._EndTime = value; 4404 this.SendPropertyChanged("EndTime"); 4405 this.OnEndTimeChanged(); 4406 } 4407 } 4408 } 4409 4410 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TaskState", DbType="varchar(30)", CanBeNull=false)] 4411 public global::HeuristicLab.Services.Hive.DataAccess.TaskState TaskState 4412 { 4413 get 4414 { 4415 return this._TaskState; 4416 } 4417 set 4418 { 4419 if ((this._TaskState != value)) 4420 { 4421 this.OnTaskStateChanging(value); 4422 this.SendPropertyChanging(); 4423 this._TaskState = value; 4424 this.SendPropertyChanged("TaskState"); 4425 this.OnTaskStateChanged(); 4426 } 4427 } 4428 } 4429 4430 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Exception", DbType="varchar(MAX)")] 4431 public string Exception 4432 { 4433 get 4434 { 4435 return this._Exception; 4436 } 4437 set 4438 { 4439 if ((this._Exception != value)) 4440 { 4441 this.OnExceptionChanging(value); 4442 this.SendPropertyChanging(); 4443 this._Exception = value; 4444 this.SendPropertyChanged("Exception"); 4445 this.OnExceptionChanged(); 4446 } 4447 } 4448 } 4449 4450 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_InitialWaitingTimeMs", DbType="INT")] 4451 public long InitialWaitingTime 4452 { 4453 get 4454 { 4455 return this._InitialWaitingTimeMs; 4456 } 4457 set 4458 { 4459 if ((this._InitialWaitingTimeMs != value)) 4460 { 4461 this.OnInitialWaitingTimeChanging(value); 4462 this.SendPropertyChanging(); 4463 this._InitialWaitingTimeMs = value; 4464 this.SendPropertyChanged("InitialWaitingTime"); 4465 this.OnInitialWaitingTimeChanged(); 4466 } 4467 } 4468 } 4469 4470 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_StartTime")] 4471 public System.Nullable<System.DateTime> StartTime 4472 { 4473 get 4474 { 4475 return this._StartTime; 4476 } 4477 set 4478 { 4479 if ((this._StartTime != value)) 4480 { 4481 this.OnStartTimeChanging(value); 4482 this.SendPropertyChanging(); 4483 this._StartTime = value; 4484 this.SendPropertyChanged("StartTime"); 4485 this.OnStartTimeChanged(); 4486 } 4487 } 4488 } 4489 4490 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactTask", Storage="_DimClient", ThisKey="LastClientId", OtherKey="Id", IsForeignKey=true)] 4491 public DimClient DimClient 4492 { 4493 get 4494 { 4495 return this._DimClient.Entity; 4496 } 4497 set 4498 { 4499 DimClient previousValue = this._DimClient.Entity; 4500 if (((previousValue != value) 4501 || (this._DimClient.HasLoadedOrAssignedValue == false))) 4502 { 4503 this.SendPropertyChanging(); 4504 if ((previousValue != null)) 4505 { 4506 this._DimClient.Entity = null; 4507 previousValue.FactTasks.Remove(this); 4508 } 4509 this._DimClient.Entity = value; 4510 if ((value != null)) 4511 { 4512 value.FactTasks.Add(this); 4513 this._LastClientId = value.Id; 4514 } 4515 else 4516 { 4517 this._LastClientId = default(Nullable<System.Guid>); 4518 } 4519 this.SendPropertyChanged("DimClient"); 4520 } 4521 } 4522 } 4523 4524 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimJob_FactTask", Storage="_DimJob", ThisKey="JobId", OtherKey="JobId", IsForeignKey=true)] 4525 public DimJob DimJob 4526 { 4527 get 4528 { 4529 return this._DimJob.Entity; 4530 } 4531 set 4532 { 4533 DimJob previousValue = this._DimJob.Entity; 4534 if (((previousValue != value) 4535 || (this._DimJob.HasLoadedOrAssignedValue == false))) 4536 { 4537 this.SendPropertyChanging(); 4538 if ((previousValue != null)) 4539 { 4540 this._DimJob.Entity = null; 4541 previousValue.FactTasks.Remove(this); 4542 } 4543 this._DimJob.Entity = value; 4544 if ((value != null)) 4545 { 4546 value.FactTasks.Add(this); 4547 this._JobId = value.JobId; 4548 } 4549 else 4550 { 4551 this._JobId = default(System.Guid); 4552 } 4553 this.SendPropertyChanged("DimJob"); 4554 } 4555 } 4556 } 4557 4558 public event PropertyChangingEventHandler PropertyChanging; 4559 4560 public event PropertyChangedEventHandler PropertyChanged; 4561 4562 protected virtual void SendPropertyChanging() 4563 { 4564 if ((this.PropertyChanging != null)) 4565 { 4566 this.PropertyChanging(this, emptyChangingEventArgs); 4567 } 4568 } 4569 4570 protected virtual void SendPropertyChanged(String propertyName) 4571 { 4572 if ((this.PropertyChanged != null)) 4573 { 4574 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 4575 } 4576 } 4577 } 4578 4579 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimJob")] 4580 public partial class DimJob : INotifyPropertyChanging, INotifyPropertyChanged 4581 { 4582 4583 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 4584 4585 private System.Guid _JobId; 4586 4587 private System.Guid _UserId; 4588 4589 private string _JobName; 4590 4591 private string _UserName; 4592 4593 private System.DateTime _DateCreated; 4594 4595 private int _TotalTasks; 4596 4597 private int _CompletedTasks; 4598 4599 private System.Nullable<System.DateTime> _DateCompleted; 4600 4601 private EntitySet<FactTask> _FactTasks; 4602 4603 #region Extensibility Method Definitions 4604 partial void OnLoaded(); 4605 partial void OnValidate(System.Data.Linq.ChangeAction action); 4606 partial void OnCreated(); 4607 partial void OnJobIdChanging(System.Guid value); 4608 partial void OnJobIdChanged(); 4609 partial void OnUserIdChanging(System.Guid value); 4610 partial void OnUserIdChanged(); 4611 partial void OnJobNameChanging(string value); 4612 partial void OnJobNameChanged(); 4613 partial void OnUserNameChanging(string value); 4614 partial void OnUserNameChanged(); 4615 partial void OnDateCreatedChanging(System.DateTime value); 4616 partial void OnDateCreatedChanged(); 4617 partial void OnTotalTasksChanging(int value); 4618 partial void OnTotalTasksChanged(); 4619 partial void OnCompletedTasksChanging(int value); 4620 partial void OnCompletedTasksChanged(); 4621 partial void OnDateCompletedChanging(System.Nullable<System.DateTime> value); 4622 partial void OnDateCompletedChanged(); 4623 #endregion 4624 4625 public DimJob() 4626 { 4627 this._FactTasks = new EntitySet<FactTask>(new Action<FactTask>(this.attach_FactTasks), new Action<FactTask>(this.detach_FactTasks)); 4628 OnCreated(); 4629 } 4630 4631 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)] 4632 public System.Guid JobId 4633 { 4634 get 4635 { 4636 return this._JobId; 4637 } 4638 set 4639 { 4640 if ((this._JobId != value)) 4641 { 4642 this.OnJobIdChanging(value); 4643 this.SendPropertyChanging(); 4644 this._JobId = value; 4645 this.SendPropertyChanged("JobId"); 4646 this.OnJobIdChanged(); 4647 } 4648 } 4649 } 4650 4651 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL")] 4652 public System.Guid UserId 4653 { 4654 get 4655 { 4656 return this._UserId; 4657 } 4658 set 4659 { 4660 if ((this._UserId != value)) 4661 { 4662 this.OnUserIdChanging(value); 4663 this.SendPropertyChanging(); 4664 this._UserId = value; 4665 this.SendPropertyChanged("UserId"); 4666 this.OnUserIdChanged(); 4667 } 4668 } 4669 } 4670 4671 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_JobName", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)] 4672 public string JobName 4673 { 4674 get 4675 { 4676 return this._JobName; 4677 } 4678 set 4679 { 4680 if ((this._JobName != value)) 4681 { 4682 this.OnJobNameChanging(value); 4683 this.SendPropertyChanging(); 4684 this._JobName = value; 4685 this.SendPropertyChanged("JobName"); 4686 this.OnJobNameChanged(); 4687 } 4688 } 4689 } 4690 4691 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserName", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)] 4692 public string UserName 4693 { 4694 get 4695 { 4696 return this._UserName; 4697 } 4698 set 4699 { 4700 if ((this._UserName != value)) 4701 { 4702 this.OnUserNameChanging(value); 4703 this.SendPropertyChanging(); 4704 this._UserName = value; 4705 this.SendPropertyChanged("UserName"); 4706 this.OnUserNameChanged(); 4707 } 4708 } 4709 } 4710 4711 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DateCreated", DbType="DateTime NOT NULL")] 4712 public System.DateTime DateCreated 4713 { 4714 get 4715 { 4716 return this._DateCreated; 4717 } 4718 set 4719 { 4720 if ((this._DateCreated != value)) 4721 { 4722 this.OnDateCreatedChanging(value); 4723 this.SendPropertyChanging(); 4724 this._DateCreated = value; 4725 this.SendPropertyChanged("DateCreated"); 4726 this.OnDateCreatedChanged(); 4727 } 4728 } 4729 } 4730 4731 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTasks", DbType="INT NOT NULL")] 4732 public int TotalTasks 4733 { 4734 get 4735 { 4736 return this._TotalTasks; 4737 } 4738 set 4739 { 4740 if ((this._TotalTasks != value)) 4741 { 4742 this.OnTotalTasksChanging(value); 4743 this.SendPropertyChanging(); 4744 this._TotalTasks = value; 4745 this.SendPropertyChanged("TotalTasks"); 4746 this.OnTotalTasksChanged(); 4747 } 4748 } 4749 } 4750 4751 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CompletedTasks", DbType="INT NOT NULL")] 4752 public int CompletedTasks 4753 { 4754 get 4755 { 4756 return this._CompletedTasks; 4757 } 4758 set 4759 { 4760 if ((this._CompletedTasks != value)) 4761 { 4762 this.OnCompletedTasksChanging(value); 4763 this.SendPropertyChanging(); 4764 this._CompletedTasks = value; 4765 this.SendPropertyChanged("CompletedTasks"); 4766 this.OnCompletedTasksChanged(); 4767 } 4768 } 4769 } 4770 4771 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_DateCompleted", DbType="DateTime NULL")] 4772 public System.Nullable<System.DateTime> DateCompleted 4773 { 4774 get 4775 { 4776 return this._DateCompleted; 4777 } 4778 set 4779 { 4780 if ((this._DateCompleted != value)) 4781 { 4782 this.OnDateCompletedChanging(value); 4783 this.SendPropertyChanging(); 4784 this._DateCompleted = value; 4785 this.SendPropertyChanged("DateCompleted"); 4786 this.OnDateCompletedChanged(); 4787 } 4788 } 4789 } 4790 4791 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimJob_FactTask", Storage="_FactTasks", ThisKey="JobId", OtherKey="JobId")] 4792 public EntitySet<FactTask> FactTasks 4793 { 4794 get 4795 { 4796 return this._FactTasks; 4797 } 4798 set 4799 { 4800 this._FactTasks.Assign(value); 4801 } 4802 } 4803 4804 public event PropertyChangingEventHandler PropertyChanging; 4805 4806 public event PropertyChangedEventHandler PropertyChanged; 4807 4808 protected virtual void SendPropertyChanging() 4809 { 4810 if ((this.PropertyChanging != null)) 4811 { 4812 this.PropertyChanging(this, emptyChangingEventArgs); 4813 } 4814 } 4815 4816 protected virtual void SendPropertyChanged(String propertyName) 4817 { 4818 if ((this.PropertyChanged != null)) 4819 { 4820 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 4821 } 4822 } 4823 4824 private void attach_FactTasks(FactTask entity) 4825 { 4826 this.SendPropertyChanging(); 4827 entity.DimJob = this; 4828 } 4829 4830 private void detach_FactTasks(FactTask entity) 4831 { 4832 this.SendPropertyChanging(); 4833 entity.DimJob = null; 4834 } 4835 } 4836 4837 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimTime")] 4838 public partial class DimTime : INotifyPropertyChanging, INotifyPropertyChanged 4839 { 4840 4841 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 4842 4843 private System.DateTime _Time; 4844 4845 private System.DateTime _Hour; 4846 4847 private System.DateTime _Day; 4848 4849 private System.DateTime _Month; 4850 4851 private System.DateTime _Year; 4852 4853 private System.DateTime _Minute; 4854 4855 private EntitySet<FactClientInfo> _FactClientInfos; 4856 4857 #region Extensibility Method Definitions 4858 partial void OnLoaded(); 4859 partial void OnValidate(System.Data.Linq.ChangeAction action); 4860 partial void OnCreated(); 4861 partial void OnTimeChanging(System.DateTime value); 4862 partial void OnTimeChanged(); 4863 partial void OnHourChanging(System.DateTime value); 4864 partial void OnHourChanged(); 4865 partial void OnDayChanging(System.DateTime value); 4866 partial void OnDayChanged(); 4867 partial void OnMonthChanging(System.DateTime value); 4868 partial void OnMonthChanged(); 4869 partial void OnYearChanging(System.DateTime value); 4870 partial void OnYearChanged(); 4871 partial void OnMinuteChanging(System.DateTime value); 4872 partial void OnMinuteChanged(); 4873 #endregion 4874 4875 public DimTime() 4876 { 4877 this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos)); 4878 OnCreated(); 4879 } 4880 4881 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Time", DbType="DateTime NOT NULL", IsPrimaryKey=true)] 4882 public System.DateTime Time 4883 { 4884 get 4885 { 4886 return this._Time; 4887 } 4888 set 4889 { 4890 if ((this._Time != value)) 4891 { 4892 this.OnTimeChanging(value); 4893 this.SendPropertyChanging(); 4894 this._Time = value; 4895 this.SendPropertyChanged("Time"); 4896 this.OnTimeChanged(); 4897 } 4898 } 4899 } 4900 4901 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Hour", DbType="DateTime NOT NULL")] 4902 public System.DateTime Hour 4903 { 4904 get 4905 { 4906 return this._Hour; 4907 } 4908 set 4909 { 4910 if ((this._Hour != value)) 4911 { 4912 this.OnHourChanging(value); 4913 this.SendPropertyChanging(); 4914 this._Hour = value; 4915 this.SendPropertyChanged("Hour"); 4916 this.OnHourChanged(); 4917 } 4918 } 4919 } 4920 4921 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Day", DbType="Date NOT NULL")] 4922 public System.DateTime Day 4923 { 4924 get 4925 { 4926 return this._Day; 4927 } 4928 set 4929 { 4930 if ((this._Day != value)) 4931 { 4932 this.OnDayChanging(value); 4933 this.SendPropertyChanging(); 4934 this._Day = value; 4935 this.SendPropertyChanged("Day"); 4936 this.OnDayChanged(); 4937 } 4938 } 4939 } 4940 4941 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Month", DbType="Date NOT NULL")] 4942 public System.DateTime Month 4943 { 4944 get 4945 { 4946 return this._Month; 4947 } 4948 set 4949 { 4950 if ((this._Month != value)) 4951 { 4952 this.OnMonthChanging(value); 4953 this.SendPropertyChanging(); 4954 this._Month = value; 4955 this.SendPropertyChanged("Month"); 4956 this.OnMonthChanged(); 4957 } 4958 } 4959 } 4960 4961 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Year", DbType="Date NOT NULL")] 4962 public System.DateTime Year 4963 { 4964 get 4965 { 4966 return this._Year; 4967 } 4968 set 4969 { 4970 if ((this._Year != value)) 4971 { 4972 this.OnYearChanging(value); 4973 this.SendPropertyChanging(); 4974 this._Year = value; 4975 this.SendPropertyChanged("Year"); 4976 this.OnYearChanged(); 4977 } 4978 } 4979 } 4980 4981 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Minute")] 4982 public System.DateTime Minute 4983 { 4984 get 4985 { 4986 return this._Minute; 4987 } 4988 set 4989 { 4990 if ((this._Minute != value)) 4991 { 4992 this.OnMinuteChanging(value); 4993 this.SendPropertyChanging(); 4994 this._Minute = value; 4995 this.SendPropertyChanged("Minute"); 4996 this.OnMinuteChanged(); 4997 } 4998 } 4999 } 5000 5001 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimTime_FactClientInfo", Storage="_FactClientInfos", ThisKey="Time", OtherKey="Time")] 5002 public EntitySet<FactClientInfo> FactClientInfos 5003 { 5004 get 5005 { 5006 return this._FactClientInfos; 5007 } 5008 set 5009 { 5010 this._FactClientInfos.Assign(value); 5011 } 5012 } 5013 5014 public event PropertyChangingEventHandler PropertyChanging; 5015 5016 public event PropertyChangedEventHandler PropertyChanged; 5017 5018 protected virtual void SendPropertyChanging() 5019 { 5020 if ((this.PropertyChanging != null)) 5021 { 5022 this.PropertyChanging(this, emptyChangingEventArgs); 5023 } 5024 } 5025 5026 protected virtual void SendPropertyChanged(String propertyName) 5027 { 5028 if ((this.PropertyChanged != null)) 5029 { 5030 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 5031 } 5032 } 5033 5034 private void attach_FactClientInfos(FactClientInfo entity) 5035 { 5036 this.SendPropertyChanging(); 5037 entity.DimTime = this; 5038 } 5039 5040 private void detach_FactClientInfos(FactClientInfo entity) 5041 { 5042 this.SendPropertyChanging(); 5043 entity.DimTime = null; 5044 } 5045 } 5046 5047 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].DimUser")] 5048 public partial class DimUser : INotifyPropertyChanging, INotifyPropertyChanged 5049 { 5050 5051 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 5052 5053 private System.Guid _UserId; 5054 5055 private string _Name; 5056 5057 private EntitySet<FactClientInfo> _FactClientInfos; 5058 5059 #region Extensibility Method Definitions 5060 partial void OnLoaded(); 5061 partial void OnValidate(System.Data.Linq.ChangeAction action); 5062 partial void OnCreated(); 5063 partial void OnUserIdChanging(System.Guid value); 5064 partial void OnUserIdChanged(); 5065 partial void OnNameChanging(string value); 5066 partial void OnNameChanged(); 5067 #endregion 5068 5069 public DimUser() 5070 { 5071 this._FactClientInfos = new EntitySet<FactClientInfo>(new Action<FactClientInfo>(this.attach_FactClientInfos), new Action<FactClientInfo>(this.detach_FactClientInfos)); 5072 OnCreated(); 5073 } 5074 5075 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)] 5076 public System.Guid UserId 5077 { 5078 get 5079 { 5080 return this._UserId; 5081 } 5082 set 5083 { 5084 if ((this._UserId != value)) 5085 { 5086 this.OnUserIdChanging(value); 5087 this.SendPropertyChanging(); 5088 this._UserId = value; 5089 this.SendPropertyChanged("UserId"); 5090 this.OnUserIdChanged(); 5091 } 5092 } 5093 } 5094 5095 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Name", DbType="VarChar(MAX) NOT NULL", CanBeNull=false)] 5096 public string Name 5097 { 5098 get 5099 { 5100 return this._Name; 5101 } 5102 set 5103 { 5104 if ((this._Name != value)) 5105 { 5106 this.OnNameChanging(value); 5107 this.SendPropertyChanging(); 5108 this._Name = value; 5109 this.SendPropertyChanged("Name"); 5110 this.OnNameChanged(); 5111 } 5112 } 5113 } 5114 5115 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimUser_FactClientInfo", Storage="_FactClientInfos", ThisKey="UserId", OtherKey="UserId")] 5116 public EntitySet<FactClientInfo> FactClientInfos 5117 { 5118 get 5119 { 5120 return this._FactClientInfos; 5121 } 5122 set 5123 { 5124 this._FactClientInfos.Assign(value); 5125 } 5126 } 5127 5128 public event PropertyChangingEventHandler PropertyChanging; 5129 5130 public event PropertyChangedEventHandler PropertyChanged; 5131 5132 protected virtual void SendPropertyChanging() 5133 { 5134 if ((this.PropertyChanging != null)) 5135 { 5136 this.PropertyChanging(this, emptyChangingEventArgs); 5137 } 5138 } 5139 5140 protected virtual void SendPropertyChanged(String propertyName) 5141 { 5142 if ((this.PropertyChanged != null)) 5143 { 5144 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 5145 } 5146 } 5147 5148 private void attach_FactClientInfos(FactClientInfo entity) 5149 { 5150 this.SendPropertyChanging(); 5151 entity.DimUser = this; 5152 } 5153 5154 private void detach_FactClientInfos(FactClientInfo entity) 5155 { 5156 this.SendPropertyChanging(); 5157 entity.DimUser = null; 5158 } 5159 } 5160 5161 [global::System.Data.Linq.Mapping.TableAttribute(Name="[statistics].FactClientInfo")] 5162 public partial class FactClientInfo : INotifyPropertyChanging, INotifyPropertyChanged 5163 { 5164 5165 private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); 5166 5167 private System.Guid _ClientId; 5168 5169 private System.DateTime _Time; 5170 5171 private System.Guid _UserId; 5172 5173 private int _NumUsedCores; 5174 5175 private int _NumTotalCores; 5176 5177 private int _UsedMemory; 5178 5179 private int _TotalMemory; 5180 5181 private double _CpuUtilization; 5182 5183 private long _TotalTimeIdle; 5184 5185 private long _TotalTimeOffline; 5186 5187 private long _TotalTimeUnavailable; 5188 5189 private global::HeuristicLab.Services.Hive.DataAccess.SlaveState _SlaveState; 5190 5191 private bool _IsAllowedToCalculate; 5192 5193 private EntityRef<DimClient> _DimClient; 5194 5195 private EntityRef<DimTime> _DimTime; 5196 5197 private EntityRef<DimUser> _DimUser; 5198 5199 #region Extensibility Method Definitions 5200 partial void OnLoaded(); 5201 partial void OnValidate(System.Data.Linq.ChangeAction action); 5202 partial void OnCreated(); 5203 partial void OnClientIdChanging(System.Guid value); 5204 partial void OnClientIdChanged(); 5205 partial void OnTimeChanging(System.DateTime value); 5206 partial void OnTimeChanged(); 5207 partial void OnUserIdChanging(System.Guid value); 5208 partial void OnUserIdChanged(); 5209 partial void OnNumUsedCoresChanging(int value); 5210 partial void OnNumUsedCoresChanged(); 5211 partial void OnNumTotalCoresChanging(int value); 5212 partial void OnNumTotalCoresChanged(); 5213 partial void OnUsedMemoryChanging(int value); 5214 partial void OnUsedMemoryChanged(); 5215 partial void OnTotalMemoryChanging(int value); 5216 partial void OnTotalMemoryChanged(); 5217 partial void OnCpuUtilizationChanging(double value); 5218 partial void OnCpuUtilizationChanged(); 5219 partial void OnIdleTimeChanging(long value); 5220 partial void OnIdleTimeChanged(); 5221 partial void OnOfflineTimeChanging(long value); 5222 partial void OnOfflineTimeChanged(); 5223 partial void OnUnavailableTimeChanging(long value); 5224 partial void OnUnavailableTimeChanged(); 5225 partial void OnSlaveStateChanging(global::HeuristicLab.Services.Hive.DataAccess.SlaveState value); 5226 partial void OnSlaveStateChanged(); 5227 partial void OnIsAllowedToCalculateChanging(bool value); 5228 partial void OnIsAllowedToCalculateChanged(); 5229 #endregion 5230 5231 public FactClientInfo() 5232 { 5233 this._DimClient = default(EntityRef<DimClient>); 5234 this._DimTime = default(EntityRef<DimTime>); 5235 this._DimUser = default(EntityRef<DimUser>); 5236 OnCreated(); 5237 } 5238 5239 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ClientId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)] 5240 public System.Guid ClientId 5241 { 5242 get 5243 { 5244 return this._ClientId; 5245 } 5246 set 5247 { 5248 if ((this._ClientId != value)) 5249 { 5250 if (this._DimClient.HasLoadedOrAssignedValue) 5251 { 5252 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 5253 } 5254 this.OnClientIdChanging(value); 5255 this.SendPropertyChanging(); 5256 this._ClientId = value; 5257 this.SendPropertyChanged("ClientId"); 5258 this.OnClientIdChanged(); 5259 } 5260 } 5261 } 5262 5263 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Time", DbType="DateTime NOT NULL", IsPrimaryKey=true)] 5264 public System.DateTime Time 5265 { 5266 get 5267 { 5268 return this._Time; 5269 } 5270 set 5271 { 5272 if ((this._Time != value)) 5273 { 5274 if (this._DimTime.HasLoadedOrAssignedValue) 5275 { 5276 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 5277 } 5278 this.OnTimeChanging(value); 5279 this.SendPropertyChanging(); 5280 this._Time = value; 5281 this.SendPropertyChanged("Time"); 5282 this.OnTimeChanged(); 5283 } 5284 } 5285 } 5286 5287 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UserId", DbType="UniqueIdentifier NULL", IsPrimaryKey=true)] 5288 public System.Guid UserId 5289 { 5290 get 5291 { 5292 return this._UserId; 5293 } 5294 set 5295 { 5296 if ((this._UserId != value)) 5297 { 5298 if (this._DimUser.HasLoadedOrAssignedValue) 5299 { 5300 throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException(); 5301 } 5302 this.OnUserIdChanging(value); 5303 this.SendPropertyChanging(); 5304 this._UserId = value; 5305 this.SendPropertyChanged("UserId"); 5306 this.OnUserIdChanged(); 5307 } 5308 } 5309 } 5310 5311 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumUsedCores", DbType="Int NOT NULL")] 5312 public int NumUsedCores 5313 { 5314 get 5315 { 5316 return this._NumUsedCores; 5317 } 5318 set 5319 { 5320 if ((this._NumUsedCores != value)) 5321 { 5322 this.OnNumUsedCoresChanging(value); 5323 this.SendPropertyChanging(); 5324 this._NumUsedCores = value; 5325 this.SendPropertyChanged("NumUsedCores"); 5326 this.OnNumUsedCoresChanged(); 5327 } 5328 } 5329 } 5330 5331 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_NumTotalCores", DbType="Int NOT NULL")] 5332 public int NumTotalCores 5333 { 5334 get 5335 { 5336 return this._NumTotalCores; 5337 } 5338 set 5339 { 5340 if ((this._NumTotalCores != value)) 5341 { 5342 this.OnNumTotalCoresChanging(value); 5343 this.SendPropertyChanging(); 5344 this._NumTotalCores = value; 5345 this.SendPropertyChanged("NumTotalCores"); 5346 this.OnNumTotalCoresChanged(); 5347 } 5348 } 5349 } 5350 5351 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UsedMemory", DbType="Int NOT NULL")] 5352 public int UsedMemory 5353 { 5354 get 5355 { 5356 return this._UsedMemory; 5357 } 5358 set 5359 { 5360 if ((this._UsedMemory != value)) 5361 { 5362 this.OnUsedMemoryChanging(value); 5363 this.SendPropertyChanging(); 5364 this._UsedMemory = value; 5365 this.SendPropertyChanged("UsedMemory"); 5366 this.OnUsedMemoryChanged(); 5367 } 5368 } 5369 } 5370 5371 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalMemory", DbType="Int NOT NULL")] 5372 public int TotalMemory 5373 { 5374 get 5375 { 5376 return this._TotalMemory; 5377 } 5378 set 5379 { 5380 if ((this._TotalMemory != value)) 5381 { 5382 this.OnTotalMemoryChanging(value); 5383 this.SendPropertyChanging(); 5384 this._TotalMemory = value; 5385 this.SendPropertyChanged("TotalMemory"); 5386 this.OnTotalMemoryChanged(); 5387 } 5388 } 5389 } 5390 5391 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CpuUtilization", DbType="Float NOT NULL")] 5392 public double CpuUtilization 5393 { 5394 get 5395 { 5396 return this._CpuUtilization; 5397 } 5398 set 5399 { 5400 if ((this._CpuUtilization != value)) 5401 { 5402 this.OnCpuUtilizationChanging(value); 5403 this.SendPropertyChanging(); 5404 this._CpuUtilization = value; 5405 this.SendPropertyChanged("CpuUtilization"); 5406 this.OnCpuUtilizationChanged(); 5407 } 5408 } 5409 } 5410 5411 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeIdle", DbType="INT NOT NULL")] 5412 public long IdleTime 5413 { 5414 get 5415 { 5416 return this._TotalTimeIdle; 5417 } 5418 set 5419 { 5420 if ((this._TotalTimeIdle != value)) 5421 { 5422 this.OnIdleTimeChanging(value); 5423 this.SendPropertyChanging(); 5424 this._TotalTimeIdle = value; 5425 this.SendPropertyChanged("IdleTime"); 5426 this.OnIdleTimeChanged(); 5427 } 5428 } 5429 } 5430 5431 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeOffline", DbType="INT NOT NULL")] 5432 public long OfflineTime 5433 { 5434 get 5435 { 5436 return this._TotalTimeOffline; 5437 } 5438 set 5439 { 5440 if ((this._TotalTimeOffline != value)) 5441 { 5442 this.OnOfflineTimeChanging(value); 5443 this.SendPropertyChanging(); 5444 this._TotalTimeOffline = value; 5445 this.SendPropertyChanged("OfflineTime"); 5446 this.OnOfflineTimeChanged(); 5447 } 5448 } 5449 } 5450 5451 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_TotalTimeUnavailable", DbType="INT NOT NULL")] 5452 public long UnavailableTime 5453 { 5454 get 5455 { 5456 return this._TotalTimeUnavailable; 5457 } 5458 set 5459 { 5460 if ((this._TotalTimeUnavailable != value)) 5461 { 5462 this.OnUnavailableTimeChanging(value); 5463 this.SendPropertyChanging(); 5464 this._TotalTimeUnavailable = value; 5465 this.SendPropertyChanged("UnavailableTime"); 5466 this.OnUnavailableTimeChanged(); 5467 } 5468 } 5469 } 5470 5471 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_SlaveState", DbType="VarChar(15)", CanBeNull=false)] 5472 public global::HeuristicLab.Services.Hive.DataAccess.SlaveState SlaveState 5473 { 5474 get 5475 { 5476 return this._SlaveState; 5477 } 5478 set 5479 { 5480 if ((this._SlaveState != value)) 5481 { 5482 this.OnSlaveStateChanging(value); 5483 this.SendPropertyChanging(); 5484 this._SlaveState = value; 5485 this.SendPropertyChanged("SlaveState"); 5486 this.OnSlaveStateChanged(); 5487 } 5488 } 5489 } 5490 5491 [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_IsAllowedToCalculate", DbType="BIT")] 5492 public bool IsAllowedToCalculate 5493 { 5494 get 5495 { 5496 return this._IsAllowedToCalculate; 5497 } 5498 set 5499 { 5500 if ((this._IsAllowedToCalculate != value)) 5501 { 5502 this.OnIsAllowedToCalculateChanging(value); 5503 this.SendPropertyChanging(); 5504 this._IsAllowedToCalculate = value; 5505 this.SendPropertyChanged("IsAllowedToCalculate"); 5506 this.OnIsAllowedToCalculateChanged(); 5507 } 5508 } 5509 } 5510 5511 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimClient_FactClientInfo", Storage="_DimClient", ThisKey="ClientId", OtherKey="Id", IsForeignKey=true)] 5512 public DimClient DimClient 5513 { 5514 get 5515 { 5516 return this._DimClient.Entity; 5517 } 5518 set 5519 { 5520 DimClient previousValue = this._DimClient.Entity; 5521 if (((previousValue != value) 5522 || (this._DimClient.HasLoadedOrAssignedValue == false))) 5523 { 5524 this.SendPropertyChanging(); 5525 if ((previousValue != null)) 5526 { 5527 this._DimClient.Entity = null; 5528 previousValue.FactClientInfos.Remove(this); 5529 } 5530 this._DimClient.Entity = value; 5531 if ((value != null)) 5532 { 5533 value.FactClientInfos.Add(this); 5534 this._ClientId = value.Id; 5535 } 5536 else 5537 { 5538 this._ClientId = default(System.Guid); 5539 } 5540 this.SendPropertyChanged("DimClient"); 5541 } 5542 } 5543 } 5544 5545 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimTime_FactClientInfo", Storage="_DimTime", ThisKey="Time", OtherKey="Time", IsForeignKey=true)] 5546 public DimTime DimTime 5547 { 5548 get 5549 { 5550 return this._DimTime.Entity; 5551 } 5552 set 5553 { 5554 DimTime previousValue = this._DimTime.Entity; 5555 if (((previousValue != value) 5556 || (this._DimTime.HasLoadedOrAssignedValue == false))) 5557 { 5558 this.SendPropertyChanging(); 5559 if ((previousValue != null)) 5560 { 5561 this._DimTime.Entity = null; 5562 previousValue.FactClientInfos.Remove(this); 5563 } 5564 this._DimTime.Entity = value; 5565 if ((value != null)) 5566 { 5567 value.FactClientInfos.Add(this); 5568 this._Time = value.Time; 5569 } 5570 else 5571 { 5572 this._Time = default(System.DateTime); 5573 } 5574 this.SendPropertyChanged("DimTime"); 5575 } 5576 } 5577 } 5578 5579 [global::System.Data.Linq.Mapping.AssociationAttribute(Name="DimUser_FactClientInfo", Storage="_DimUser", ThisKey="UserId", OtherKey="UserId", IsForeignKey=true)] 5580 public DimUser DimUser 5581 { 5582 get 5583 { 5584 return this._DimUser.Entity; 5585 } 5586 set 5587 { 5588 DimUser previousValue = this._DimUser.Entity; 5589 if (((previousValue != value) 5590 || (this._DimUser.HasLoadedOrAssignedValue == false))) 5591 { 5592 this.SendPropertyChanging(); 5593 if ((previousValue != null)) 5594 { 5595 this._DimUser.Entity = null; 5596 previousValue.FactClientInfos.Remove(this); 5597 } 5598 this._DimUser.Entity = value; 5599 if ((value != null)) 5600 { 5601 value.FactClientInfos.Add(this); 5602 this._UserId = value.UserId; 5603 } 5604 else 5605 { 5606 this._UserId = default(System.Guid); 5607 } 5608 this.SendPropertyChanged("DimUser"); 5609 } 5610 } 5611 } 5612 5613 public event PropertyChangingEventHandler PropertyChanging; 5614 5615 public event PropertyChangedEventHandler PropertyChanged; 5616 5617 protected virtual void SendPropertyChanging() 5618 { 5619 if ((this.PropertyChanging != null)) 5620 { 5621 this.PropertyChanging(this, emptyChangingEventArgs); 5622 } 5623 } 5624 5625 protected virtual void SendPropertyChanged(String propertyName) 5626 { 5627 if ((this.PropertyChanged != null)) 5628 { 5629 this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 5630 } 5631 } 5632 } 4536 5633 } 4537 5634 #pragma warning restore 1591 -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Initialize Hive Database.sql
r9665 r12878 1 USE [HeuristicLab.Hive-3.3] 2 /* create and initialize hive database tables */ 1 /* HeuristicLab 2 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 3 * 4 * This file is part of HeuristicLab. 5 * 6 * HeuristicLab is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * HeuristicLab is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 USE [HeuristicLab.Hive-3.3] 3 20 4 21 EXEC sp_configure filestream_access_level, 2 … … 131 148 [DateEnqueued] DateTime NOT NULL, 132 149 CONSTRAINT [PK_UserPriority] PRIMARY KEY ([UserId]) 133 )134 CREATE TABLE [DeletedJobStatistics](135 [UserId] UniqueIdentifier NOT NULL,136 [ExecutionTimeS] float NOT NULL,137 [ExecutionTimeSFinishedJobs] float NOT NULL,138 [StartToEndTimeS] float NOT NULL,139 [DeletedJobStatisticsId] UniqueIdentifier NOT NULL,140 CONSTRAINT [PK_DeletedJobStatistics] PRIMARY KEY ([DeletedJobStatisticsId])141 )142 CREATE TABLE [UserStatistics](143 [StatisticsId] UniqueIdentifier NOT NULL,144 [UserId] UniqueIdentifier NOT NULL,145 [ExecutionTimeMs] float NOT NULL,146 [UsedCores] Int NOT NULL,147 [ExecutionTimeMsFinishedJobs] float NOT NULL,148 [StartToEndTimeMs] float NOT NULL,149 CONSTRAINT [PK_UserStatistics] PRIMARY KEY ([StatisticsId], [UserId])150 )151 CREATE TABLE [SlaveStatistics](152 [StatisticsId] UniqueIdentifier NOT NULL,153 [SlaveId] UniqueIdentifier NOT NULL,154 [Cores] Int NOT NULL,155 [FreeCores] Int NOT NULL,156 [CpuUtilization] float NOT NULL,157 [Memory] Int NOT NULL,158 [FreeMemory] Int NOT NULL,159 CONSTRAINT [PK_SlaveStatistics] PRIMARY KEY ([StatisticsId], [SlaveId])160 )161 CREATE TABLE [Statistics](162 [StatisticsId] UniqueIdentifier NOT NULL,163 [Timestamp] DateTime NOT NULL,164 CONSTRAINT [PK_Statistics] PRIMARY KEY ([StatisticsId])165 150 ) 166 151 ALTER TABLE [dbo].[AssignedResources] … … 192 177 ALTER TABLE [dbo].[JobPermission] 193 178 ADD CONSTRAINT [Job_JobPermission] FOREIGN KEY ([JobId]) REFERENCES [dbo].[Job]([JobId]) 194 ALTER TABLE [UserStatistics] 195 ADD CONSTRAINT [Statistics_UserStatistics] FOREIGN KEY ([StatisticsId]) REFERENCES [Statistics]([StatisticsId]) 196 ALTER TABLE [SlaveStatistics] 197 ADD CONSTRAINT [Statistics_SlaveStatistics] FOREIGN KEY ([StatisticsId]) REFERENCES [Statistics]([StatisticsId]) 179 180 GO 181 CREATE SCHEMA [statistics] 182 GO 183 184 CREATE TABLE [statistics].[DimTime] ( 185 [Time] DATETIME NOT NULL, 186 [Minute] DATETIME NOT NULL, 187 [Hour] DATETIME NOT NULL, 188 [Day] DATE NOT NULL, 189 [Month] DATE NOT NULL, 190 [Year] DATE NOT NULL, 191 CONSTRAINT [PK_DimTime] PRIMARY KEY CLUSTERED ([Time] ASC) 192 ); 193 CREATE TABLE [statistics].[DimClient] ( 194 [Id] UNIQUEIDENTIFIER CONSTRAINT [DF_DimClient_Id] DEFAULT (newsequentialid()) NOT NULL, 195 [Name] VARCHAR (MAX) NOT NULL, 196 [ResourceId] UNIQUEIDENTIFIER NOT NULL, 197 [ExpirationTime] DATETIME NULL, 198 [ResourceGroupId] UNIQUEIDENTIFIER NULL, 199 [ResourceGroup2Id] UNIQUEIDENTIFIER NULL, 200 [GroupName] VARCHAR (MAX) NULL, 201 [GroupName2] VARCHAR (MAX) NULL, 202 CONSTRAINT [PK_DimClient] PRIMARY KEY CLUSTERED ([Id] ASC) 203 ); 204 CREATE TABLE [statistics].[DimJob] ( 205 [JobId] UNIQUEIDENTIFIER NOT NULL, 206 [UserId] UNIQUEIDENTIFIER NOT NULL, 207 [JobName] VARCHAR (MAX) NOT NULL, 208 [UserName] VARCHAR (MAX) NOT NULL, 209 [DateCreated] DATETIME NOT NULL, 210 [TotalTasks] INT NOT NULL, 211 [CompletedTasks] INT NOT NULL, 212 [DateCompleted] DATETIME NULL, 213 CONSTRAINT [PK_DimJob] PRIMARY KEY CLUSTERED ([JobId] ASC) 214 ); 215 CREATE TABLE [statistics].[DimUser] ( 216 [UserId] UNIQUEIDENTIFIER NOT NULL, 217 [Name] VARCHAR (MAX) NOT NULL, 218 CONSTRAINT [PK_DimUser] PRIMARY KEY CLUSTERED ([UserId] ASC) 219 ); 220 CREATE TABLE [statistics].[FactClientInfo] ( 221 [ClientId] UNIQUEIDENTIFIER NOT NULL, 222 [Time] DATETIME NOT NULL, 223 [UserId] UNIQUEIDENTIFIER NOT NULL, 224 [NumUsedCores] INT NOT NULL, 225 [NumTotalCores] INT NOT NULL, 226 [UsedMemory] INT NOT NULL, 227 [TotalMemory] INT NOT NULL, 228 [CpuUtilization] FLOAT (53) NOT NULL, 229 [SlaveState] VarChar(15) NOT NULL, 230 [IdleTime] INT NOT NULL, 231 [OfflineTime] INT NOT NULL, 232 [UnavailableTime] INT NOT NULL, 233 [IsAllowedToCalculate] BIT NOT NULL, 234 CONSTRAINT [PK_FactClientInfo] PRIMARY KEY CLUSTERED ([ClientId] ASC, [Time] ASC, [UserId] ASC), 235 CONSTRAINT [FK_FactClientInfo_DimTime] FOREIGN KEY ([Time]) REFERENCES [statistics].[DimTime] ([Time]), 236 CONSTRAINT [FK_FactClientInfo_DimClient] FOREIGN KEY ([ClientId]) REFERENCES [statistics].[DimClient] ([Id]), 237 CONSTRAINT [FK_FactClientInfo_DimUser] FOREIGN KEY ([UserId]) REFERENCES [statistics].[DimUser] ([UserId]) 238 ); 239 CREATE TABLE [statistics].[FactTask] ( 240 [TaskId] UNIQUEIDENTIFIER NOT NULL, 241 [CalculatingTime] INT NOT NULL, 242 [WaitingTime] INT NOT NULL, 243 [TransferTime] INT NOT NULL, 244 [NumCalculationRuns] INT NOT NULL, 245 [NumRetries] INT NOT NULL, 246 [CoresRequired] INT NOT NULL, 247 [MemoryRequired] INT NOT NULL, 248 [Priority] INT NOT NULL, 249 [LastClientId] UNIQUEIDENTIFIER NULL, 250 [JobId] UNIQUEIDENTIFIER NOT NULL, 251 [StartTime] DATETIME NULL, 252 [EndTime] DATETIME NULL, 253 [TaskState] VARCHAR (30) NOT NULL, 254 [Exception] VARCHAR (MAX) NULL, 255 [InitialWaitingTime] INT NULL, 256 CONSTRAINT [PK_FactTask] PRIMARY KEY CLUSTERED ([TaskId] ASC), 257 CONSTRAINT [FK_FactTask_DimClient] FOREIGN KEY ([LastClientId]) REFERENCES [statistics].[DimClient] ([Id]), 258 CONSTRAINT [FK_FactTask_DimJob] FOREIGN KEY ([JobId]) REFERENCES [statistics].[DimJob] ([JobId]) 259 ); 260 261 /* dummy for nullable userIds in FactClientInfo */ 262 INSERT INTO [statistics].[DimUser] ([UserId], [Name]) 263 VALUES ('00000000-0000-0000-0000-000000000000', 'NULL'); -
trunk/sources/HeuristicLab.Services.Hive.DataAccess/3.3/SQL Scripts/Prepare Hive Database.sql
r9665 r12878 1 /* HeuristicLab 2 * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL) 3 * 4 * This file is part of HeuristicLab. 5 * 6 * HeuristicLab is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * HeuristicLab is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>. 18 */ 19 20 /* this script is supposed to be executed after the plain DB is generated by the linq-to-sql schema */ 1 21 USE [HeuristicLab.Hive-3.3] 2 /* this script is supposed to be executed after the plain DB is generated by the linq-to-sql schema */3 /* adds default values */4 /* creates delete and update cascades */5 /* creates indices */6 /* creates views */7 /* creates triggers */8 9 22 10 23 ALTER TABLE [dbo].[AssignedResources] DROP CONSTRAINT [Task_AssignedResource] … … 93 106 GO 94 107 95 ALTER TABLE [dbo].[Statistics] ALTER COLUMN StatisticsId ADD ROWGUIDCOL;96 ALTER TABLE [dbo].[Statistics] WITH NOCHECK ADD CONSTRAINT [DF_Statistics_StatisticsId] DEFAULT (NEWSEQUENTIALID()) FOR StatisticsId;97 GO98 99 ALTER TABLE [dbo].[DeletedJobStatistics] ALTER COLUMN DeletedJobStatisticsId ADD ROWGUIDCOL;100 ALTER TABLE [dbo].[DeletedJobStatistics] WITH NOCHECK ADD CONSTRAINT [DF_DeletedJobStatistics_DeletedJobStatisticsId] DEFAULT (NEWSEQUENTIALID()) FOR DeletedJobStatisticsId;101 GO102 103 ALTER TABLE [dbo].[SlaveStatistics] DROP CONSTRAINT [Statistics_SlaveStatistics]104 ALTER TABLE [dbo].[SlaveStatistics] WITH CHECK ADD CONSTRAINT [Statistics_SlaveStatistics] FOREIGN KEY([StatisticsId])105 REFERENCES [dbo].[Statistics] ([StatisticsId])106 ON UPDATE CASCADE107 ON DELETE CASCADE108 GO109 110 ALTER TABLE [dbo].[UserStatistics] DROP CONSTRAINT [Statistics_UserStatistics]111 ALTER TABLE [dbo].[UserStatistics] WITH CHECK ADD CONSTRAINT [Statistics_UserStatistics] FOREIGN KEY([StatisticsId])112 REFERENCES [dbo].[Statistics] ([StatisticsId])113 ON UPDATE CASCADE114 ON DELETE CASCADE115 GO116 117 108 /* create indices */ 118 109 CREATE INDEX Index_RequiredPlugins_TaskId ON RequiredPlugins(TaskId); 119 110 GO 120 111 121 /* views */ 122 -- ============================================= 123 -- Author: cneumuel 124 -- Description: Returns the first StateLog entry for each job 125 -- ============================================= 126 CREATE VIEW [dbo].[view_FirstState] 127 AS 128 SELECT sl.TaskId, sl.DateTime, sl.State 129 FROM dbo.StateLog AS sl INNER JOIN 130 (SELECT TaskId, MIN(DateTime) AS DateTime 131 FROM dbo.StateLog 132 GROUP BY TaskId) AS minDate ON sl.DateTime = minDate.DateTime AND sl.TaskId = minDate.TaskId 133 112 -- speed up joins between Job and Task 113 CREATE NONCLUSTERED INDEX [TaskJobIdIndex] 114 ON [dbo].[Task] ([JobId]) 115 INCLUDE ([TaskId],[TaskState],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[CoresNeeded],[MemoryNeeded],[IsParentTask],[FinishWhenChildJobsFinished],[Command],[IsPrivileged]) 134 116 GO 135 117 136 -- ============================================= 137 -- Author: cneumuel 138 -- Description: Returns the last StateLog entry for each job 139 -- ============================================= 140 CREATE VIEW [dbo].[view_LastState] 141 AS 142 SELECT sl.TaskId, sl.DateTime, sl.State 143 FROM dbo.StateLog AS sl INNER JOIN 144 (SELECT TaskId, MAX(DateTime) AS DateTime 145 FROM dbo.StateLog 146 GROUP BY TaskId) AS minDate ON sl.DateTime = minDate.DateTime AND sl.TaskId = minDate.TaskId 118 -- this is an index to speed up the GetWaitingTasks() method 119 CREATE NONCLUSTERED INDEX [TaskGetWaitingTasksIndex] 120 ON [dbo].[Task] ([TaskState],[IsParentTask],[FinishWhenChildJobsFinished],[CoresNeeded],[MemoryNeeded]) 121 INCLUDE ([TaskId],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[Command],[JobId],[IsPrivileged]) 147 122 GO 148 123 149 -- =============================================150 -- Author: cneumuel151 -- Description: returns aggregates statistic information for every minute152 -- =============================================153 CREATE VIEW [dbo].[view_Statistics]154 AS155 SELECT CONVERT(VARCHAR(19), MIN(s.Timestamp), 120) AS DateTime, SUM(ss.Cores) AS Cores, SUM(ss.FreeCores) AS FreeCores,156 AVG(ss.CpuUtilization) AS CpuUtilization, SUM(ss.Memory) AS Memory, SUM(ss.FreeMemory) AS FreeMemory, x.exSum AS ExecutionTimeHours,157 x.exFinishedSum AS ExecutionTimeFinished, x.exStartToEndSum AS StartToEndTimeFinished158 FROM dbo.SlaveStatistics AS ss INNER JOIN159 dbo.[Statistics] AS s ON ss.StatisticsId = s.StatisticsId INNER JOIN160 dbo.Resource AS r ON ss.SlaveId = r.ResourceId INNER JOIN161 (SELECT StatisticsId, SUM(ExecutionTimeMs) / 1000 / 60 / 60 AS exSum, SUM(ExecutionTimeMsFinishedJobs) / 1000 / 60 / 60 AS exFinishedSum,162 SUM(StartToEndTimeMs) / 1000 / 60 / 60 AS exStartToEndSum163 FROM dbo.UserStatistics AS us164 GROUP BY StatisticsId) AS x ON s.StatisticsId = x.StatisticsId165 GROUP BY s.StatisticsId, x.exSum, x.exFinishedSum, x.exStartToEndSum166 124 167 /* triggers */168 GO169 125 /****** Object: Trigger [dbo].[tr_JobDeleteCascade] Script Date: 04/19/2011 16:31:53 ******/ 170 126 SET ANSI_NULLS ON … … 182 138 CREATE TRIGGER [dbo].[tr_JobDeleteCascade] ON [dbo].[Job] INSTEAD OF DELETE AS 183 139 BEGIN 184 185 140 DELETE Task FROM deleted, Task WHERE deleted.JobId = Task.JobId 141 DELETE Job FROM deleted, Job WHERE deleted.JobId = Job.JobId 186 142 END 187 143 GO … … 191 147 -- Create date: 11.11.2010 192 148 -- Description: Recursively deletes all child-jobs of a job when it is deleted. (Source: http://devio.wordpress.com/2008/05/23/recursive-delete-in-sql-server/) 193 -- ============================================= 149 -- =============================================DeletedJobStatistics 194 150 CREATE TRIGGER [dbo].[tr_TaskDeleteCascade] ON [dbo].[Task] INSTEAD OF DELETE AS 195 151 BEGIN 196 -- add statistics 197 INSERT INTO dbo.DeletedJobStatistics (UserId, ExecutionTimeS, ExecutionTimeSFinishedJobs, StartToEndTimeS) 198 SELECT 199 he.OwnerUserId AS UserId, 200 ROUND(SUM(j.ExecutionTimeMs) / 1000, 0) AS ExecutionTimeS, 201 ROUND(ISNULL(SUM(CASE ls.State WHEN 'Finished' THEN j.ExecutionTimeMs END), 0) / 1000, 0) AS ExecutionTimeSFinishedJobs, 202 ISNULL(SUM(CASE ls.State WHEN 'Finished' THEN DATEDIFF(s, fs.DateTime, ls.DateTime) ELSE 0 END), 0) AS StartToEndTimeS 203 FROM 204 deleted j, 205 Job he, 206 view_FirstState fs, 207 view_LastState ls 208 WHERE 209 he.JobId = j.JobId AND 210 fs.TaskId = j.TaskId AND 211 ls.TaskId = j.TaskId 212 GROUP BY he.OwnerUserId 213 214 -- recursively delete jobs 215 CREATE TABLE #Table( 216 TaskId uniqueidentifier 217 ) 218 INSERT INTO #Table (TaskId) 219 SELECT TaskId FROM deleted 220 221 DECLARE @c INT 222 SET @c = 0 223 224 WHILE @c <> (SELECT COUNT(TaskId) FROM #Table) BEGIN 225 SELECT @c = COUNT(TaskId) FROM #Table 226 227 INSERT INTO #Table (TaskId) 228 SELECT Task.TaskId 229 FROM Task 230 LEFT OUTER JOIN #Table ON Task.TaskId = #Table.TaskId 231 WHERE Task.ParentTaskId IN (SELECT TaskId FROM #Table) 232 AND #Table.TaskId IS NULL 233 END 234 235 DELETE TaskData FROM TaskData INNER JOIN #Table ON TaskData.TaskId = #Table.TaskId 236 DELETE Task FROM Task INNER JOIN #Table ON Task.TaskId = #Table.TaskId 152 -- recursively delete jobs 153 CREATE TABLE #Table( 154 TaskId uniqueidentifier 155 ) 156 INSERT INTO #Table (TaskId) 157 SELECT TaskId FROM deleted 158 159 DECLARE @c INT 160 SET @c = 0 161 162 WHILE @c <> (SELECT COUNT(TaskId) FROM #Table) BEGIN 163 SELECT @c = COUNT(TaskId) FROM #Table 164 165 INSERT INTO #Table (TaskId) 166 SELECT Task.TaskId 167 FROM Task 168 LEFT OUTER JOIN #Table ON Task.TaskId = #Table.TaskId 169 WHERE Task.ParentTaskId IN (SELECT TaskId FROM #Table) 170 AND #Table.TaskId IS NULL 171 END 172 173 DELETE TaskData FROM TaskData INNER JOIN #Table ON TaskData.TaskId = #Table.TaskId 174 DELETE Task FROM Task INNER JOIN #Table ON Task.TaskId = #Table.TaskId 237 175 END 238 176 GO 239 177 240 178 241 CREATE TRIGGER [dbo].[tr_StatisticsDeleteCascade] ON [dbo].[Statistics] INSTEAD OF DELETE AS242 BEGIN243 DELETE SlaveStatistics FROM deleted, SlaveStatistics WHERE deleted.StatisticsId = SlaveStatistics.StatisticsId244 -- should also remove UserStatistics here245 DELETE [Statistics] FROM deleted, [Statistics] WHERE deleted.StatisticsId = [Statistics].StatisticsId246 END247 GO248 249 250 -- ============================================================251 -- Description: Create indices to speed up execution of queries252 -- ============================================================253 254 -- speed up joins between Job and Task255 CREATE NONCLUSTERED INDEX [TaskJobIdIndex]256 ON [dbo].[Task] ([JobId])257 INCLUDE ([TaskId],[TaskState],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[CoresNeeded],[MemoryNeeded],[IsParentTask],[FinishWhenChildJobsFinished],[Command],[IsPrivileged])258 GO259 260 -- this is an index to speed up the GetWaitingTasks() method261 CREATE NONCLUSTERED INDEX [TaskGetWaitingTasksIndex]262 ON [dbo].[Task] ([TaskState],[IsParentTask],[FinishWhenChildJobsFinished],[CoresNeeded],[MemoryNeeded])263 INCLUDE ([TaskId],[ExecutionTimeMs],[LastHeartbeat],[ParentTaskId],[Priority],[Command],[JobId],[IsPrivileged])264 GO -
trunk/sources/HeuristicLab.Services.Hive.JanitorService/3.3/HeuristicLab.Services.Hive.JanitorService-3.3.csproj
r11651 r12878 124 124 </ItemGroup> 125 125 <ItemGroup> 126 <ProjectReference Include="..\..\HeuristicLab.Services.Access.DataAccess\3.3\HeuristicLab.Services.Access.DataAccess-3.3.csproj"> 127 <Project>{0f652437-998a-4eab-8bf1-444b5fe8ce97}</Project> 128 <Name>HeuristicLab.Services.Access.DataAccess-3.3</Name> 129 </ProjectReference> 130 <ProjectReference Include="..\..\HeuristicLab.Services.Access\3.3\HeuristicLab.Services.Access-3.3.csproj"> 131 <Project>{9fac0b23-2730-452a-9ba0-d7ca1746c541}</Project> 132 <Name>HeuristicLab.Services.Access-3.3</Name> 133 </ProjectReference> 126 134 <ProjectReference Include="..\..\HeuristicLab.Services.Hive.DataAccess\3.3\HeuristicLab.Services.Hive.DataAccess-3.3.csproj"> 127 135 <Project>{EC2C8109-6E1E-4C88-9A2B-908CFF2EF4AC}</Project> -
trunk/sources/HeuristicLab.Services.Hive.JanitorService/3.3/JanitorService.cs
r12012 r12878 26 26 public partial class JanitorService : ServiceBase { 27 27 private HiveJanitor janitor; 28 private Thread janitorThread; 28 private Thread janitorCleanupThread; 29 private Thread janitorGenerateStatisticsThread; 29 30 30 31 public JanitorService() { … … 35 36 janitor = new HiveJanitor(); 36 37 37 janitorThread = new Thread(janitor.Run); 38 janitorThread.IsBackground = true; //dont keep app alive 39 janitorThread.Start(); 38 janitorCleanupThread = new Thread(janitor.RunCleanup) { 39 IsBackground = true 40 }; 41 janitorGenerateStatisticsThread = new Thread(janitor.RunGenerateStatistics) { 42 IsBackground = true 43 }; 44 45 janitorCleanupThread.Start(); 46 janitorGenerateStatisticsThread.Start(); 40 47 } 41 48 42 49 protected override void OnStop() { 43 50 janitor.StopJanitor(); 44 janitorThread.Join(); 51 janitorCleanupThread.Join(); 52 janitorGenerateStatisticsThread.Join(); 45 53 } 46 54 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/HeuristicLab.Services.Hive-3.3.csproj
r11623 r12878 118 118 </ItemGroup> 119 119 <ItemGroup> 120 <Compile Include="Convert .cs" />120 <Compile Include="Converter.cs" /> 121 121 <Compile Include="DataTransfer\Command.cs" /> 122 122 <Compile Include="DataTransfer\UserPriority.cs" /> … … 139 139 <Compile Include="DataTransfer\SlaveGroup.cs" /> 140 140 <Compile Include="DataTransfer\SlaveState.cs" /> 141 <Compile Include="DataTransfer\SlaveStatistics.cs" />142 141 <Compile Include="DataTransfer\StateLog.cs" /> 143 <Compile Include="DataTransfer\Statistics.cs" /> 144 <Compile Include="DataTransfer\UserStatistics.cs" /> 145 <Compile Include="OptimizedHiveDao.cs" /> 146 <Compile Include="HiveDao.cs" /> 142 <Compile Include="HiveStatisticsGenerator.cs" /> 143 <Compile Include="Interfaces\IStatisticsGenerator.cs" /> 147 144 <Compile Include="HiveJanitor.cs" /> 148 145 <Compile Include="HiveOperationContext.cs" /> 149 <Compile Include="Interfaces\IOptimizedHiveDao.cs" />150 <Compile Include="Interfaces\IHiveDao.cs" />151 146 <Compile Include="Interfaces\ITaskScheduler.cs" /> 147 <Compile Include="PerformanceLogger.cs" /> 152 148 <Compile Include="Scheduler\TaskInfoForScheduler.cs" /> 153 149 <Compile Include="Scheduler\JobInfoForScheduler.cs" /> 154 150 <Compile Include="Scheduler\RoundRobinTaskScheduler.cs" /> 155 <Compile Include="Settings.cs" />156 151 <None Include="app.config" /> 157 152 <None Include="Plugin.cs.frame" /> … … 182 177 </ItemGroup> 183 178 <ItemGroup> 179 <ProjectReference Include="..\..\HeuristicLab.Services.Access.DataAccess\3.3\HeuristicLab.Services.Access.DataAccess-3.3.csproj"> 180 <Project>{0F652437-998A-4EAB-8BF1-444B5FE8CE97}</Project> 181 <Name>HeuristicLab.Services.Access.DataAccess-3.3</Name> 182 </ProjectReference> 184 183 <ProjectReference Include="..\..\HeuristicLab.Services.Access\3.3\HeuristicLab.Services.Access-3.3.csproj"> 185 184 <Project>{9FAC0B23-2730-452A-9BA0-D7CA1746C541}</Project> -
trunk/sources/HeuristicLab.Services.Hive/3.3/HiveJanitor.cs
r12012 r12878 23 23 using System.Threading; 24 24 using HeuristicLab.Services.Hive.DataAccess; 25 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 25 26 26 27 namespace HeuristicLab.Services.Hive { 27 28 public class HiveJanitor { 28 29 private bool stop; 29 private AutoResetEvent waitHandle; 30 private AutoResetEvent cleanupWaitHandle; 31 private AutoResetEvent generateStatisticsWaitHandle; 30 32 31 private DataAccess.ITransactionManager trans{32 get { return ServiceLocator.Instance. TransactionManager; }33 private IPersistenceManager PersistenceManager { 34 get { return ServiceLocator.Instance.PersistenceManager; } 33 35 } 34 35 private IEventManager eventManager { 36 private IEventManager EventManager { 36 37 get { return ServiceLocator.Instance.EventManager; } 37 38 } 38 39 39 private I HiveDao dao{40 get { return ServiceLocator.Instance. HiveDao; }40 private IStatisticsGenerator StatisticsGenerator { 41 get { return ServiceLocator.Instance.StatisticsGenerator; } 41 42 } 42 43 43 44 public HiveJanitor() { 44 45 stop = false; 45 waitHandle = new AutoResetEvent(true); 46 cleanupWaitHandle = new AutoResetEvent(false); 47 generateStatisticsWaitHandle = new AutoResetEvent(false); 46 48 } 47 49 48 50 public void StopJanitor() { 49 51 stop = true; 50 waitHandle.Set(); 52 cleanupWaitHandle.Set(); 53 generateStatisticsWaitHandle.Set(); 51 54 } 52 55 53 public void Run() { 56 public void RunCleanup() { 57 var pm = PersistenceManager; 54 58 while (!stop) { 55 59 try { 56 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: starting cleanup ");60 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: starting cleanup."); 57 61 bool cleanup = false; 58 trans.UseTransaction(() => { 59 DateTime lastCleanup = dao.GetLastCleanup(); 60 if (DateTime.Now - lastCleanup > HeuristicLab.Services.Hive.Properties.Settings.Default.CleanupInterval) { 61 dao.SetLastCleanup(DateTime.Now); 62 63 var lifecycleDao = pm.LifecycleDao; 64 pm.UseTransaction(() => { 65 var lifecycle = lifecycleDao.GetLastLifecycle(); 66 if (lifecycle == null 67 || DateTime.Now - lifecycle.LastCleanup > Properties.Settings.Default.CleanupInterval) { 68 lifecycleDao.UpdateLifecycle(); 62 69 cleanup = true; 63 70 } 71 pm.SubmitChanges(); 64 72 }, true); 65 73 66 74 if (cleanup) { 67 eventManager.Cleanup();75 EventManager.Cleanup(); 68 76 } 69 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: cleanup finished ");77 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: cleanup finished."); 70 78 } 71 79 catch (Exception e) { 72 80 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log(string.Format("HiveJanitor: The following exception occured: {0}", e.ToString())); 73 81 } 74 waitHandle.WaitOne(HeuristicLab.Services.Hive.Properties.Settings.Default.CleanupInterval);82 cleanupWaitHandle.WaitOne(Properties.Settings.Default.CleanupInterval); 75 83 } 76 waitHandle.Close(); 84 cleanupWaitHandle.Close(); 85 } 86 87 public void RunGenerateStatistics() { 88 while (!stop) { 89 try { 90 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: starting generate statistics."); 91 StatisticsGenerator.GenerateStatistics(); 92 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log("HiveJanitor: generate statistics finished."); 93 } 94 catch (Exception e) { 95 LogFactory.GetLogger(typeof(HiveJanitor).Namespace).Log(string.Format("HiveJanitor: The following exception occured: {0}", e)); 96 } 97 98 generateStatisticsWaitHandle.WaitOne(Properties.Settings.Default.GenerateStatisticsInterval); 99 } 100 101 generateStatisticsWaitHandle.Close(); 77 102 } 78 103 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/Interfaces/IServiceLocator.cs
r12012 r12878 20 20 #endregion 21 21 22 using HeuristicLab.Services.Hive.DataAccess; 22 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 23 using HeuristicLab.Services.Hive.Manager; 23 24 24 25 namespace HeuristicLab.Services.Hive { … … 26 27 Access.IRoleVerifier RoleVerifier { get; } 27 28 IAuthorizationManager AuthorizationManager { get; } 28 IHiveDao HiveDao { get; } 29 IOptimizedHiveDao OptimizedHiveDao { get; } 29 IPersistenceManager PersistenceManager { get; } 30 30 IEventManager EventManager { get; } 31 I TransactionManager TransactionManager { get; }31 IStatisticsGenerator StatisticsGenerator { get; } 32 32 Access.IUserManager UserManager { get; } 33 33 HeartbeatManager HeartbeatManager { get; } -
trunk/sources/HeuristicLab.Services.Hive/3.3/Manager/AuthorizationManager.cs
r12012 r12878 22 22 using System; 23 23 using System.Security; 24 using HeuristicLab.Services.Access; 24 25 using HeuristicLab.Services.Hive.DataAccess; 26 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 27 using DA = HeuristicLab.Services.Hive.DataAccess; 25 28 using DT = HeuristicLab.Services.Hive.DataTransfer; 26 29 … … 28 31 namespace HeuristicLab.Services.Hive { 29 32 public class AuthorizationManager : IAuthorizationManager { 33 34 private const string NOT_AUTHORIZED = "Current user is not authorized to access the requested resource"; 35 private IPersistenceManager PersistenceManager { 36 get { return ServiceLocator.Instance.PersistenceManager; } 37 } 38 39 private IUserManager UserManager { 40 get { return ServiceLocator.Instance.UserManager; } 41 } 42 43 private IRoleVerifier RoleVerifier { 44 get { return ServiceLocator.Instance.RoleVerifier; } 45 } 46 30 47 public void Authorize(Guid userId) { 31 48 if (userId != ServiceLocator.Instance.UserManager.CurrentUserId) 32 throw new SecurityException( "Current user is not authorized to access object");49 throw new SecurityException(NOT_AUTHORIZED); 33 50 } 34 51 35 52 public void AuthorizeForTask(Guid taskId, DT.Permission requiredPermission) { 36 53 if (ServiceLocator.Instance.RoleVerifier.IsInRole(HiveRoles.Slave)) return; // slave-users can access all tasks 37 38 Permission permission = ServiceLocator.Instance.HiveDao.GetPermissionForTask(taskId, ServiceLocator.Instance.UserManager.CurrentUserId); 39 if (permission == Permission.NotAllowed || (permission != DT.Convert.ToEntity(requiredPermission) && DT.Convert.ToEntity(requiredPermission) == Permission.Full)) 40 throw new SecurityException("Current user is not authorized to access task"); 54 var pm = PersistenceManager; 55 var taskDao = pm.TaskDao; 56 pm.UseTransaction(() => { 57 var task = taskDao.GetById(taskId); 58 if (task == null) throw new SecurityException(NOT_AUTHORIZED); 59 AuthorizeJob(pm, task.JobId, requiredPermission); 60 }); 41 61 } 42 62 43 63 public void AuthorizeForJob(Guid jobId, DT.Permission requiredPermission) { 44 Permission permission = ServiceLocator.Instance.HiveDao.GetPermissionForJob(jobId, ServiceLocator.Instance.UserManager.CurrentUserId); 45 if (permission == Permission.NotAllowed || (permission != DT.Convert.ToEntity(requiredPermission) && DT.Convert.ToEntity(requiredPermission) == Permission.Full)) 46 throw new SecurityException("Current user is not authorized to access task"); 64 var pm = PersistenceManager; 65 pm.UseTransaction(() => { 66 AuthorizeJob(pm, jobId, requiredPermission); 67 }); 47 68 } 48 69 49 70 public void AuthorizeForResourceAdministration(Guid resourceId) { 50 Resource resource = DT.Convert.ToEntity(ServiceLocator.Instance.HiveDao.GetResource(resourceId)); 51 if (resource.OwnerUserId != ServiceLocator.Instance.UserManager.CurrentUserId && !ServiceLocator.Instance.RoleVerifier.IsInRole(HiveRoles.Administrator)) 52 throw new SecurityException("Current user is not authorized to access resource"); 71 var pm = PersistenceManager; 72 var resourceDao = pm.ResourceDao; 73 pm.UseTransaction(() => { 74 var resource = resourceDao.GetById(resourceId); 75 if (resource == null) throw new SecurityException(NOT_AUTHORIZED); 76 if (resource.OwnerUserId != UserManager.CurrentUserId 77 && !RoleVerifier.IsInRole(HiveRoles.Administrator)) { 78 throw new SecurityException(NOT_AUTHORIZED); 79 } 80 }); 81 } 82 83 private DA.Permission GetPermissionForJob(IPersistenceManager pm, Guid jobId, Guid userId) { 84 var jobDao = pm.JobDao; 85 var jobPermissionDao = pm.JobPermissionDao; 86 var job = jobDao.GetById(jobId); 87 if (job == null) return DA.Permission.NotAllowed; 88 if (job.OwnerUserId == userId) return DA.Permission.Full; 89 var jobPermission = jobPermissionDao.GetByJobAndUserId(jobId, userId); 90 if (jobPermission == null) return DA.Permission.NotAllowed; 91 return jobPermission.Permission; 92 } 93 94 private void AuthorizeJob(IPersistenceManager pm, Guid jobId, DT.Permission requiredPermission) { 95 var requiredPermissionEntity = requiredPermission.ToEntity(); 96 DA.Permission permission = GetPermissionForJob(pm, jobId, UserManager.CurrentUserId); 97 if (permission == Permission.NotAllowed 98 || ((permission != requiredPermissionEntity) && requiredPermissionEntity == Permission.Full)) { 99 throw new SecurityException(NOT_AUTHORIZED); 100 } 53 101 } 54 102 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.Designer.cs
r11623 r12878 1 1 //------------------------------------------------------------------------------ 2 2 // <auto-generated> 3 // This code was generated by a tool.4 // Runtime Version:4.0.30319.340143 // Dieser Code wurde von einem Tool generiert. 4 // Laufzeitversion:4.0.30319.42000 5 5 // 6 // Changes to this file may cause incorrect behavior and will be lost if7 // the code is regenerated.6 // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn 7 // der Code erneut generiert wird. 8 8 // </auto-generated> 9 9 //------------------------------------------------------------------------------ … … 13 13 14 14 [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 15 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "1 2.0.0.0")]15 [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] 16 16 public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { 17 17 … … 86 86 } 87 87 } 88 89 [global::System.Configuration.ApplicationScopedSettingAttribute()] 90 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 91 [global::System.Configuration.DefaultSettingValueAttribute("True")] 92 public bool ProfileServicePerformance { 93 get { 94 return ((bool)(this["ProfileServicePerformance"])); 95 } 96 } 97 98 [global::System.Configuration.ApplicationScopedSettingAttribute()] 99 [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 100 [global::System.Configuration.DefaultSettingValueAttribute("00:03:00")] 101 public global::System.TimeSpan GenerateStatisticsInterval { 102 get { 103 return ((global::System.TimeSpan)(this["GenerateStatisticsInterval"])); 104 } 105 } 88 106 } 89 107 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/Properties/Settings.settings
r9123 r12878 24 24 <Value Profile="(Default)">00:00:20</Value> 25 25 </Setting> 26 <Setting Name="ProfileServicePerformance" Type="System.Boolean" Scope="Application"> 27 <Value Profile="(Default)">True</Value> 28 </Setting> 29 <Setting Name="GenerateStatisticsInterval" Type="System.TimeSpan" Scope="Application"> 30 <Value Profile="(Default)">00:03:00</Value> 31 </Setting> 26 32 </Settings> 27 33 </SettingsFile> -
trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceContracts/IHiveService.cs
r12012 r12878 41 41 42 42 [OperationContract] 43 IEnumerable<Task> GetTasks();44 45 [OperationContract]46 IEnumerable<LightweightTask> GetLightweightTasks(IEnumerable<Guid> taskIds);47 48 [OperationContract]49 IEnumerable<LightweightTask> GetLightweightChildTasks(Guid? parentTaskId, bool recursive, bool includeParent);50 51 [OperationContract]52 43 IEnumerable<LightweightTask> GetLightweightJobTasks(Guid jobId); 53 44 … … 65 56 66 57 [OperationContract] 67 void DeleteTask(Guid taskId);68 69 [OperationContract]70 void DeleteChildTasks(Guid parentTaskId);71 72 [OperationContract]73 58 Task UpdateTaskState(Guid taskId, TaskState taskState, Guid? slaveId, Guid? userId, string exception); 74 59 #endregion … … 89 74 Job GetJob(Guid id); 90 75 91 /// <summary>92 /// Returns all task for the current user93 /// </summary>94 76 [OperationContract] 95 77 IEnumerable<Job> GetJobs(); 96 78 97 /// <summary>98 /// Returns all task in the hive (only for admins)99 /// </summary>100 /// <returns></returns>101 [OperationContract]102 IEnumerable<Job> GetAllJobs();103 104 79 [OperationContract] 105 80 Guid AddJob(Job jobDto); … … 142 117 [OperationContract] 143 118 Plugin GetPlugin(Guid pluginId); 144 145 [OperationContract]146 Plugin GetPluginByHash(byte[] hash);147 119 148 120 [OperationContract] … … 155 127 [OperationContract] 156 128 IEnumerable<PluginData> GetPluginDatas(List<Guid> pluginIds); 157 158 [OperationContract]159 void DeletePlugin(Guid pluginId);160 129 #endregion 161 130 … … 171 140 #endregion 172 141 173 #region Resource Methods174 [OperationContract]175 IEnumerable<Resource> GetChildResources(Guid resourceId);176 #endregion177 178 142 #region Slave Methods 179 143 [OperationContract] … … 187 151 188 152 [OperationContract] 189 SlaveGroup GetSlaveGroup(Guid slaveGroupId);190 191 [OperationContract]192 153 IEnumerable<Slave> GetSlaves(); 193 154 … … 217 178 218 179 [OperationContract] 219 IEnumerable<Task> GetTasksByResourceId(Guid resourceId);220 221 [OperationContract]222 180 void TriggerEventManager(bool force); 223 181 … … 234 192 235 193 [OperationContract] 236 void UpdateDowntime(Downtime downtime );194 void UpdateDowntime(Downtime downtimeDto); 237 195 238 196 [OperationContract] … … 251 209 [OperationContract] 252 210 IEnumerable<UserPriority> GetUserPriorities(); 253 #endregion254 255 #region Statistics Methods256 [OperationContract]257 IEnumerable<Statistics> GetStatistics();258 [OperationContract]259 IEnumerable<Statistics> GetStatisticsForTimePeriod(DateTime from, DateTime to);260 211 #endregion 261 212 } -
trunk/sources/HeuristicLab.Services.Hive/3.3/ServiceLocator.cs
r12012 r12878 21 21 22 22 using HeuristicLab.Services.Hive.DataAccess; 23 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 24 using HeuristicLab.Services.Hive.DataAccess.Manager; 25 using HeuristicLab.Services.Hive.Manager; 23 26 24 27 namespace HeuristicLab.Services.Hive { 25 26 28 public class ServiceLocator : IServiceLocator { 27 29 private static IServiceLocator instance; … … 34 36 } 35 37 36 private IHiveDao hiveDao; 37 public IHiveDao HiveDao { 38 get { 39 if (hiveDao == null) hiveDao = new HiveDao(); 40 return hiveDao; 41 } 42 } 43 44 public IOptimizedHiveDao OptimizedHiveDao { 38 public IPersistenceManager PersistenceManager { 45 39 get { 46 40 var dataContext = HiveOperationContext.Current != null 47 41 ? HiveOperationContext.Current.DataContext 48 42 : new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString); 49 return new OptimizedHiveDao(dataContext);43 return new PersistenceManager(dataContext); 50 44 } 51 45 } … … 75 69 } 76 70 77 private ITransactionManager transactionManager; 78 public ITransactionManager TransactionManager { 79 get { 80 if (transactionManager == null) transactionManager = new TransactionManager(); 81 return transactionManager; 82 } 71 private IStatisticsGenerator statisticsGenerator; 72 public IStatisticsGenerator StatisticsGenerator { 73 get { return statisticsGenerator ?? (statisticsGenerator = new HiveStatisticsGenerator()); } 83 74 } 84 75 -
trunk/sources/HeuristicLab.Services.Hive/3.3/app.config
r11623 r12878 29 29 <value>00:00:20</value> 30 30 </setting> 31 <setting name="ProfileServicePerformance" serializeAs="String"> 32 <value>True</value> 33 </setting> 34 <setting name="GenerateStatisticsInterval" serializeAs="String"> 35 <value>00:03:00</value> 36 </setting> 31 37 </HeuristicLab.Services.Hive.Properties.Settings> 32 38 </applicationSettings> 33 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup></configuration> 39 <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/></startup> 40 </configuration> -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/HeuristicLab.Services.WebApp.Status-3.3.csproj
r12552 r12878 9 9 <AppDesignerFolder>Properties</AppDesignerFolder> 10 10 <RootNamespace>HeuristicLab.Services.WebApp.Status</RootNamespace> 11 <AssemblyName>HeuristicLab.Services.WebApp.Status </AssemblyName>11 <AssemblyName>HeuristicLab.Services.WebApp.Status-3.3</AssemblyName> 12 12 <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 13 13 <FileAlignment>512</FileAlignment> … … 76 76 <SpecificVersion>False</SpecificVersion> 77 77 <HintPath>..\..\packages\Newtonsoft.Json.7.0.1\lib\net45\Newtonsoft.Json.dll</HintPath> 78 <Private>False</Private> 78 79 </Reference> 79 80 <Reference Include="System" /> -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataController.cs
r12521 r12878 22 22 using System; 23 23 using System.Collections.Generic; 24 using System.Data.Linq;25 24 using System.Linq; 26 25 using System.Web.Http; 27 26 using HeuristicLab.Services.Hive; 28 27 using HeuristicLab.Services.Hive.DataAccess; 29 using DAL = HeuristicLab.Services.Hive.DataAccess;30 using DT O= HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer;28 using HeuristicLab.Services.Hive.DataAccess.Interfaces; 29 using DT = HeuristicLab.Services.WebApp.Status.WebApi.DataTransfer; 31 30 32 31 namespace HeuristicLab.Services.WebApp.Status.WebApi { 33 32 public class DataController : ApiController { 34 35 // start temporary quickfix 33 private const int LAST_TASKS = 20; 34 35 private IPersistenceManager PersistenceManager { 36 get { return ServiceLocator.Instance.PersistenceManager; } 37 } 38 36 39 private const string SQL_USER_TASK_STATUS = 37 40 @"WITH UserTasks AS ( … … 53 56 } 54 57 55 public IEnumerable<DTO.TaskStatus> GetTaskStatus(HiveDataContext db) { 56 var query = db.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList(); 57 return query.Select(uts => new DTO.TaskStatus { 58 User = new DTO.User { 59 Id = uts.UserId.ToString(), 60 Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName 58 private IEnumerable<DT.TaskStatus> GetTaskStatus(IPersistenceManager pm) { 59 return pm.UseTransaction(() => { 60 var query = pm.DataContext.ExecuteQuery<UserTaskStatus>(SQL_USER_TASK_STATUS).ToList(); 61 return query.Select(uts => new DT.TaskStatus { 62 User = new DT.User { 63 Id = uts.UserId.ToString(), 64 Name = ServiceLocator.Instance.UserManager.GetUserById(uts.UserId).UserName 65 }, 66 CalculatingTasks = uts.CalculatingTasks, 67 WaitingTasks = uts.WaitingTasks 68 }).OrderBy(x => x.User.Name); 69 }); 70 } 71 72 private DT.TimeStatus GetTimeStatus(IPersistenceManager pm) { 73 return pm.UseTransaction(() => { 74 var factTaskDao = pm.FactTaskDao; 75 var factTasks = factTaskDao.GetAll(); 76 var completedTasks = factTaskDao.GetCompletedTasks() 77 .OrderByDescending(x => x.EndTime) 78 .Take(LAST_TASKS); 79 var lastCalculatingTimes = completedTasks 80 .GroupBy(x => 1) 81 .Select(x => new { 82 Min = x.Min(y => y.CalculatingTime), 83 Max = x.Max(y => y.CalculatingTime), 84 Avg = (long)x.Average(y => (long?)y.CalculatingTime) 85 }).FirstOrDefault(); 86 var calculatingTasks = factTasks.Where(x => x.TaskState == TaskState.Calculating); 87 int count = calculatingTasks.Count() / 3; 88 return new DT.TimeStatus { 89 MinCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Min : 0, 90 MaxCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Max : 0, 91 AvgWaitingTime = count > 0 ? (long)calculatingTasks.OrderBy(x => x.StartTime).Take(count).Average(x => x.InitialWaitingTime) : 0, 92 AvgCalculatingTime = lastCalculatingTimes != null ? lastCalculatingTimes.Avg : 0, 93 TotalCpuTime = factTasks.Sum(x => x.CalculatingTime), 94 StandardDeviationCalculatingTime = (long)StandardDeviation(completedTasks.Select(x => (double)x.CalculatingTime)), 95 BeginDate = factTasks.OrderBy(x => x.StartTime).Select(x => x.StartTime).FirstOrDefault() 96 }; 97 }); 98 } 99 100 public DT.Status GetStatus() { 101 var pm = PersistenceManager; 102 var slaveDao = pm.SlaveDao; 103 var onlineSlaves = pm.UseTransaction(() => slaveDao.GetOnlineSlaves().ToList()); 104 var activeSlaves = onlineSlaves.Where(s => s.IsAllowedToCalculate).ToList(); 105 var calculatingSlaves = activeSlaves.Where(s => s.SlaveState == SlaveState.Calculating).ToList(); 106 int totalCores = onlineSlaves.Sum(s => s.Cores ?? 0); 107 int totalMemory = onlineSlaves.Sum(s => s.Memory ?? 0); 108 return new DT.Status { 109 CoreStatus = new DT.CoreStatus { 110 TotalCores = totalCores, 111 UsedCores = totalCores - onlineSlaves.Sum(s => s.FreeCores ?? 0), 112 ActiveCores = activeSlaves.Sum(s => s.Cores ?? 0), 113 CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0) 61 114 }, 62 CalculatingTasks = uts.CalculatingTasks, 63 WaitingTasks = uts.WaitingTasks 64 }).OrderBy(x => x.User.Name); 65 } 66 // end temporary quickfix 67 68 public DTO.Status GetStatus() { 69 using (var db = new HiveDataContext()) { 70 var onlineSlaves = (from slave in db.Resources.OfType<DAL.Slave>() 71 where slave.SlaveState == SlaveState.Calculating || slave.SlaveState == SlaveState.Idle 72 select slave).ToList(); 73 var activeSlaves = onlineSlaves.Where(s => s.IsAllowedToCalculate).ToList(); 74 var calculatingSlaves = activeSlaves.Where(s => s.SlaveState == SlaveState.Calculating).ToList(); 75 int calculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.Memory) : 0; 76 int freeCalculatingMemory = calculatingSlaves.Any() ? (int)calculatingSlaves.Sum(s => s.FreeMemory) : 0; 77 78 return new DTO.Status { 79 CoreStatus = new DTO.CoreStatus { 80 TotalCores = onlineSlaves.Sum(s => s.Cores ?? 0), 81 FreeCores = onlineSlaves.Sum(s => s.FreeCores ?? 0), // temporary for old chart data 82 ActiveCores = activeSlaves.Sum(s => s.Cores ?? 0), 83 CalculatingCores = calculatingSlaves.Sum(s => s.Cores ?? 0) - calculatingSlaves.Sum(s => s.FreeCores ?? 0) 115 CpuUtilizationStatus = new DT.CpuUtilizationStatus { 116 TotalCpuUtilization = onlineSlaves.Any() 117 ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2) 118 : 0.0, 119 ActiveCpuUtilization = activeSlaves.Any() 120 ? Math.Round(activeSlaves.Average(s => s.CpuUtilization), 2) 121 : 0.0, 122 CalculatingCpuUtilization = calculatingSlaves.Any() 123 ? Math.Round(calculatingSlaves.Average(s => s.CpuUtilization), 2) 124 : 0.0 125 }, 126 MemoryStatus = new DT.MemoryStatus { 127 TotalMemory = totalMemory, 128 UsedMemory = totalMemory - onlineSlaves.Sum(s => s.FreeMemory ?? 0), 129 ActiveMemory = activeSlaves.Sum(s => s.Memory ?? 0), 130 CalculatingMemory = calculatingSlaves.Sum(s => s.Memory ?? 0) - calculatingSlaves.Sum(s => s.FreeMemory ?? 0) 131 }, 132 TimeStatus = GetTimeStatus(pm), 133 TasksStatus = GetTaskStatus(pm), 134 SlavesStatus = onlineSlaves.Select(x => new DT.SlaveStatus { 135 Slave = new DT.Slave { 136 Id = x.ResourceId.ToString(), 137 Name = x.Name 84 138 }, 85 CpuUtilizationStatus = new DTO.CpuUtilizationStatus { 86 TotalCpuUtilization = onlineSlaves.Any() 87 ? Math.Round(onlineSlaves.Average(s => s.CpuUtilization), 2) 88 : 0.0, 89 ActiveCpuUtilization = activeSlaves.Any() 90 ? Math.Round(activeSlaves.Average(s => s.CpuUtilization), 2) 91 : 0.0, 92 CalculatingCpuUtilization = calculatingSlaves.Any() 93 ? Math.Round(calculatingSlaves.Average(s => s.CpuUtilization), 2) 94 : 0.0 95 }, 96 MemoryStatus = new DTO.MemoryStatus { 97 TotalMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.Memory) : 0, 98 FreeMemory = onlineSlaves.Any() ? (int)onlineSlaves.Sum(s => s.FreeMemory) : 0, 99 ActiveMemory = activeSlaves.Any() ? (int)activeSlaves.Sum(s => s.Memory) : 0, 100 UsedMemory = calculatingMemory - freeCalculatingMemory 101 }, 102 TasksStatus = GetTaskStatus(db), 103 SlavesStatus = onlineSlaves.Select(x => new DTO.SlaveStatus { 104 Slave = new DTO.Slave { 105 Id = x.ResourceId.ToString(), 106 Name = x.Name 107 }, 108 CpuUtilization = x.CpuUtilization, 109 Cores = x.Cores ?? 0, 110 FreeCores = x.FreeCores ?? 0, 111 Memory = x.Memory ?? 0, 112 FreeMemory = x.FreeMemory ?? 0, 113 IsAllowedToCalculate = x.IsAllowedToCalculate, 114 State = x.SlaveState.ToString() 115 }).OrderBy(x => x.Slave.Name), 116 Timestamp = JavascriptUtils.ToTimestamp(DateTime.Now) 117 }; 118 } 119 } 120 121 public IEnumerable<DTO.Status> GetStatusHistory(DateTime start, DateTime end) { 139 CpuUtilization = x.CpuUtilization, 140 Cores = x.Cores ?? 0, 141 FreeCores = x.FreeCores ?? 0, 142 Memory = x.Memory ?? 0, 143 FreeMemory = x.FreeMemory ?? 0, 144 IsAllowedToCalculate = x.IsAllowedToCalculate, 145 State = x.SlaveState.ToString() 146 }).OrderBy(x => x.Slave.Name), 147 Timestamp = JavascriptUtils.ToTimestamp(DateTime.Now) 148 }; 149 } 150 151 public IEnumerable<DT.Status> GetStatusHistory(DateTime start, DateTime end) { 122 152 TimeSpan ts = end - start; 123 153 int increment = 1; … … 127 157 increment += 5; 128 158 } 129 using (var db = new HiveDataContext()) { 130 DataLoadOptions loadOptions = new DataLoadOptions(); 131 loadOptions.LoadWith<Statistics>(o => o.SlaveStatistics); 132 db.LoadOptions = loadOptions; 133 db.DeferredLoadingEnabled = false; 134 var statistics = db.Statistics.Where(s => s.Timestamp >= start && s.Timestamp <= end) 135 .OrderBy(s => s.Timestamp) 136 .ToList(); 137 var status = new DTO.Status { 138 CoreStatus = new DTO.CoreStatus(), 139 CpuUtilizationStatus = new DTO.CpuUtilizationStatus(), 140 MemoryStatus = new DTO.MemoryStatus() 159 var pm = PersistenceManager; 160 var factClientInfoDao = pm.FactClientInfoDao; 161 var clientInfos = pm.UseTransaction(() => { 162 return factClientInfoDao.GetAll() 163 .Where(s => s.Time >= start 164 && s.Time <= end 165 && s.SlaveState != SlaveState.Offline) 166 .OrderBy(s => s.Time) 167 .GroupBy(s => s.Time) 168 .Select(x => new { 169 Timestamp = x.Key, 170 TotalCores = x.Sum(y => y.NumTotalCores), 171 UsedCores = x.Sum(y => y.NumUsedCores), 172 TotalMemory = x.Sum(y => y.TotalMemory), 173 UsedMemory = x.Sum(y => y.UsedMemory), 174 CpuUtilization = x.Where(y => y.IsAllowedToCalculate).Average(y => y.CpuUtilization) 175 }) 176 .ToList(); 177 }); 178 var statusList = new List<DT.Status>(); 179 var e = clientInfos.GetEnumerator(); 180 do { 181 var status = new DT.Status { 182 CoreStatus = new DT.CoreStatus(), 183 CpuUtilizationStatus = new DT.CpuUtilizationStatus(), 184 MemoryStatus = new DT.MemoryStatus() 141 185 }; 142 int freeCores = 0; 143 int freeMemory = 0; 144 int i = 1; 145 foreach (var statistic in statistics) { 146 status.CoreStatus.TotalCores += statistic.SlaveStatistics.Sum(x => x.Cores); 147 freeCores += statistic.SlaveStatistics.Sum(x => x.FreeCores); 148 status.CpuUtilizationStatus.TotalCpuUtilization += statistic.SlaveStatistics.Any() 149 ? statistic.SlaveStatistics.Average(x => x.CpuUtilization) 150 : 0.0; 151 status.MemoryStatus.TotalMemory += statistic.SlaveStatistics.Sum(x => x.Memory); 152 freeMemory += statistic.SlaveStatistics.Sum(x => x.FreeMemory); 153 if (i >= increment) { 154 status.Timestamp = JavascriptUtils.ToTimestamp(statistic.Timestamp); 155 status.CoreStatus.TotalCores /= i; 156 freeCores /= i; 157 status.CpuUtilizationStatus.TotalCpuUtilization /= i; 158 status.MemoryStatus.TotalMemory /= i; 159 freeMemory /= i; 160 status.CoreStatus.ActiveCores = status.CoreStatus.TotalCores; 161 status.MemoryStatus.ActiveMemory = status.MemoryStatus.TotalMemory; 162 status.CpuUtilizationStatus.ActiveCpuUtilization = status.CpuUtilizationStatus.TotalCpuUtilization; 163 status.CpuUtilizationStatus.CalculatingCpuUtilization = status.CpuUtilizationStatus.CalculatingCpuUtilization; 164 status.CoreStatus.CalculatingCores = status.CoreStatus.TotalCores - freeCores; 165 status.MemoryStatus.UsedMemory = status.MemoryStatus.TotalMemory - freeMemory; 166 yield return status; 167 status = new DTO.Status { 168 CoreStatus = new DTO.CoreStatus(), 169 CpuUtilizationStatus = new DTO.CpuUtilizationStatus(), 170 MemoryStatus = new DTO.MemoryStatus() 171 }; 172 freeCores = 0; 173 freeMemory = 0; 174 i = 1; 175 } else { 176 i++; 177 } 186 int i = 0; 187 DateTime lastTimestamp = DateTime.Now; 188 while (e.MoveNext()) { 189 var clientInfo = e.Current; 190 status.CoreStatus.TotalCores += clientInfo.TotalCores; 191 status.CoreStatus.UsedCores += clientInfo.UsedCores; 192 status.MemoryStatus.TotalMemory += clientInfo.TotalMemory; 193 status.MemoryStatus.UsedMemory += clientInfo.UsedMemory; 194 status.CpuUtilizationStatus.TotalCpuUtilization += clientInfo.CpuUtilization; 195 lastTimestamp = clientInfo.Timestamp; 196 i++; 197 if (i >= increment) 198 break; 178 199 } 200 if (i <= 0) continue; 201 status.Timestamp = JavascriptUtils.ToTimestamp(lastTimestamp); 202 status.CoreStatus.TotalCores /= i; 203 status.CoreStatus.UsedCores /= i; 204 status.MemoryStatus.TotalMemory /= i; 205 status.MemoryStatus.UsedMemory /= i; 206 status.CpuUtilizationStatus.TotalCpuUtilization /= i; 207 statusList.Add(status); 208 } while (e.Current != null); 209 return statusList; 210 } 211 212 private double StandardDeviation(IEnumerable<double> source) { 213 int n = 0; 214 double mean = 0; 215 double M2 = 0; 216 foreach (double x in source) { 217 n = n + 1; 218 double delta = x - mean; 219 mean = mean + delta / n; 220 M2 += delta * (x - mean); 179 221 } 222 if (n < 2) { 223 return M2; 224 } 225 return Math.Sqrt(M2 / (n - 1)); 180 226 } 181 227 } -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApi/DataTransfer/Status.cs
r12435 r12878 20 20 #endregion 21 21 22 using System; 22 23 using System.Collections.Generic; 23 24 … … 26 27 public class CoreStatus { 27 28 public int TotalCores { get; set; } 28 public int FreeCores { get; set; } // temporary quickfix for old chart data29 public int UsedCores { get; set; } 29 30 public int ActiveCores { get; set; } 30 31 public int CalculatingCores { get; set; } … … 39 40 public class MemoryStatus { 40 41 public int TotalMemory { get; set; } 41 public int FreeMemory { get; set; } // temporary quickfix for old chart data42 public int UsedMemory { get; set; } 42 43 public int ActiveMemory { get; set; } 43 public int UsedMemory { get; set; }44 public int CalculatingMemory { get; set; } 44 45 } 45 46 … … 61 62 } 62 63 64 public class TimeStatus { 65 public long MinCalculatingTime { get; set; } 66 public long MaxCalculatingTime { get; set; } 67 public long AvgCalculatingTime { get; set; } 68 public long StandardDeviationCalculatingTime { get; set; } 69 public long AvgWaitingTime { get; set; } 70 public long TotalCpuTime { get; set; } 71 public DateTime? BeginDate { get; set; } 72 } 73 63 74 public class Status { 64 75 public CoreStatus CoreStatus { get; set; } 65 76 public CpuUtilizationStatus CpuUtilizationStatus { get; set; } 66 77 public MemoryStatus MemoryStatus { get; set; } 78 public TimeStatus TimeStatus { get; set; } 67 79 public IEnumerable<TaskStatus> TasksStatus { get; set; } 68 80 public IEnumerable<SlaveStatus> SlavesStatus { get; set; } -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/history.cshtml
r12666 r12878 15 15 <label for="fromDate">From: </label> 16 16 <div class="input-group"> 17 <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="fromDate" is-open="fromIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close" 17 <input id="fromDate" type="text" class="form-control" datepicker-popup="dd.MM.yyyy" ng-model="fromDate" is-open="fromIsOpen" datepicker-options="dateOptions" ng-required="true" close-text="Close"/> 18 18 <span class="input-group-btn"> 19 19 <button type="button" class="btn btn-default" ng-click="openFromDateSelection($event)"><i class="glyphicon glyphicon-calendar"></i></button> … … 32 32 <div class="form-group" style="margin-left: 5px; margin-right: 5px;"> 33 33 <div class="btn-group" dropdown dropdown-append-to-body> 34 <button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle style="width: 1 30px; text-align: left;">35 <span class="text-left" style="display: inline-block; width: 85px;">{{curQuickSelection.name}}</span>34 <button type="button" class="btn btn-default dropdown-toggle" dropdown-toggle style="width: 145px; text-align: left;"> 35 <span class="text-left" style="display: inline-block; width: 100px;">{{curQuickSelection.name}}</span> 36 36 <span class="glyphicon glyphicon-chevron-down" style="margin-top: 3px;"></span> 37 37 </button> 38 38 <ul class="dropdown-menu" role="menu"> 39 39 <li ng-repeat="quickSelection in quickSelectionList"> 40 <a ng-click="changeQuickSelection(quickSelection)">{{quickSelection.name}}</a>40 <a class="cursor-pointer" ng-click="changeQuickSelection(quickSelection)">{{quickSelection.name}}</a> 41 41 </li> 42 42 </ul> … … 50 50 </form> 51 51 </div> 52 53 52 54 53 <div class="default-view-container"> -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/history/historyCtrl.js
r12583 r12878 2 2 var module = appStatusPlugin.getAngularModule(); 3 3 module.controller('app.status.historyCtrl', 4 ['$scope', '$interval', 'app.status.data.service', 5 function ($scope, $interval, dataService ) {4 ['$scope', '$interval', 'app.status.data.service', '$log', 5 function ($scope, $interval, dataService, $log) { 6 6 $scope.chartOptions = { 7 7 grid: { … … 40 40 }; 41 41 42 43 42 $scope.fromDate = new Date(); 44 43 $scope.toDate = new Date(); … … 52 51 { id: 2, name: 'Yesterday' }, 53 52 { id: 3, name: 'Last 7 Days' }, 54 { id: 4, name: 'Last 30 Days' } 53 { id: 4, name: 'Last 30 Days' }, 54 { id: 5, name: 'Last 6 Months' }, 55 { id: 6, name: 'Last Year' } 55 56 ]; 56 57 $scope.changeQuickSelection = function (quickSelection) { … … 72 73 case 4: 73 74 $scope.fromDate = new Date(today.valueOf() - (30 * oneDayInMs)); 75 $scope.toDate = new Date(today.valueOf()); 76 break; 77 case 5: 78 var month = today.getMonth() - 6; 79 if (month < 0) { 80 month += 12; 81 } 82 $scope.fromDate = new Date(today.valueOf()); 83 $scope.fromDate.setMonth(month); 84 $scope.toDate = new Date(today.valueOf()); 85 break; 86 case 6: 87 $scope.fromDate = new Date(today.valueOf()); 88 $scope.fromDate.setFullYear(today.getFullYear()-1); 74 89 $scope.toDate = new Date(today.valueOf()); 75 90 break; … … 113 128 for (var i = 0; i < noOfStatus; ++i) { 114 129 var curStatus = status[i]; 115 var cpuData = Math.round(curStatus.CpuUtilizationStatus. ActiveCpuUtilization);130 var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization); 116 131 cpuSeries.push([curStatus.Timestamp, cpuData]); 117 coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus. ActiveCores]);118 coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus. CalculatingCores]);119 memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus. ActiveMemory / 1024)]);132 coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.TotalCores]); 133 coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.UsedCores]); 134 memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.TotalMemory / 1024)]); 120 135 memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]); 121 136 } … … 129 144 { data: memorySeries[1], label: " Used Memory", color: "LightPink" } 130 145 ]; 131 132 146 }); 133 147 }; -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/status.cshtml
r12557 r12878 88 88 <tr data-toggle="tooltip" data-placement="bottom" title="All calculating slaves that are allowed to calculate"> 89 89 <td class="text-left">Calculating:</td> 90 <td class="text-right">{{status.MemoryStatus. UsedMemory | kbToGB}} GB</td>90 <td class="text-right">{{status.MemoryStatus.CalculatingMemory | kbToGB}} GB</td> 91 91 </tr> 92 92 </table> … … 115 115 </tr> 116 116 </table> 117 </div> 118 </div> 119 </div> 120 </div> 121 122 <div class="row"> 123 <div class="col-lg-12"> 124 <div class="panel panel-default"> 125 <div class="panel-heading"> 126 <h3 class="panel-title">Status Overview</h3> 127 </div> 128 <div class="panel-body"> 129 <div class="row"> 130 <div class="col-md-6"> 131 <table class="table table-no-border table-condensed table-auto-width table-content"> 132 <tr> 133 <td class="text-left">Current Average Waiting Time:</td> 134 <td class="text-right">{{status.TimeStatus.AvgWaitingTime | toTimespan}}</td> 135 </tr> 136 <tr> 137 <td class="text-left">Total CPU Time:</td> 138 <td class="text-right">{{status.TimeStatus.TotalCpuTime | toTimespan}}</td> 139 </tr> 140 <tr> 141 <td class="text-left">Since:</td> 142 <td class="text-right">{{status.TimeStatus.BeginDate | toDate}}</td> 143 </tr> 144 </table> 145 </div> 146 <div class="col-md-6"> 147 <table class="table table-no-border table-condensed table-auto-width table-content"> 148 <tr> 149 <td class="text-left">Minimum Calculating Time:</td> 150 <td class="text-right">{{status.TimeStatus.MinCalculatingTime | toTimespan}}</td> 151 </tr> 152 <tr> 153 <td class="text-left">Maximum Calculating Time:</td> 154 <td class="text-right">{{status.TimeStatus.MaxCalculatingTime | toTimespan}}</td> 155 </tr> 156 <tr> 157 <td class="text-left">Average Calculating Time:</td> 158 <td class="text-right">{{status.TimeStatus.AvgCalculatingTime | toTimespan}}</td> 159 </tr> 160 <tr> 161 <td class="text-left">Standard Deviation Calculating Time:</td> 162 <td class="text-right">{{status.TimeStatus.StandardDeviationCalculatingTime | toTimespan}}</td> 163 </tr> 164 </table> 165 </div> 166 </div> 117 167 </div> 118 168 </div> -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/WebApp/status/statusCtrl.js
r12561 r12878 103 103 $scope.cpu.knobData = Math.round(status.CpuUtilizationStatus.ActiveCpuUtilization); 104 104 $scope.core.knobData = Math.round(status.CoreStatus.CalculatingCores / status.CoreStatus.ActiveCores * 100); 105 $scope.memory.knobData = Math.round(status.MemoryStatus. UsedMemory / status.MemoryStatus.ActiveMemory * 100);105 $scope.memory.knobData = Math.round(status.MemoryStatus.CalculatingMemory / status.MemoryStatus.ActiveMemory * 100); 106 106 // chart series 107 107 var cpuSeries = $scope.cpu.series[0].data.splice(0); … … 127 127 128 128 cpuSeries.push([$scope.status.Timestamp, Math.round(status.CpuUtilizationStatus.TotalCpuUtilization)]); 129 // charts are currently filled with old total/used data130 // start temporary131 var usedCores = status.CoreStatus.TotalCores - status.CoreStatus.FreeCores;132 var usedMemory = status.MemoryStatus.TotalMemory - status.MemoryStatus.FreeMemory;133 // end temporary134 129 coreSeries[0].push([$scope.status.Timestamp, status.CoreStatus.TotalCores]); 135 coreSeries[1].push([$scope.status.Timestamp, usedCores]);130 coreSeries[1].push([$scope.status.Timestamp, status.CoreStatus.UsedCores]); 136 131 memorySeries[0].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.TotalMemory / 1024)]); 137 memorySeries[1].push([$scope.status.Timestamp, Math.round( usedMemory / 1024)]);132 memorySeries[1].push([$scope.status.Timestamp, Math.round(status.MemoryStatus.UsedMemory / 1024)]); 138 133 $scope.cpu.series = [{ data: cpuSeries, label: " CPU Utilization", color: "#f7921d" }]; 139 134 $scope.core.series = [ … … 160 155 for (var i = 0; i < noOfStatus; ++i) { 161 156 var curStatus = status[i]; 162 var cpuData = Math.round(curStatus.CpuUtilizationStatus. ActiveCpuUtilization);157 var cpuData = Math.round(curStatus.CpuUtilizationStatus.TotalCpuUtilization); 163 158 cpuSeries.push([curStatus.Timestamp, cpuData]); 164 coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus. ActiveCores]);165 coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus. CalculatingCores]);166 memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus. ActiveMemory / 1024)]);159 coreSeries[0].push([curStatus.Timestamp, curStatus.CoreStatus.TotalCores]); 160 coreSeries[1].push([curStatus.Timestamp, curStatus.CoreStatus.UsedCores]); 161 memorySeries[0].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.TotalMemory / 1024)]); 167 162 memorySeries[1].push([curStatus.Timestamp, Math.round(curStatus.MemoryStatus.UsedMemory / 1024)]); 168 163 } -
trunk/sources/HeuristicLab.Services.WebApp.Status/3.3/status.js
r12557 r12878 23 23 name: 'History', 24 24 route: '#/status/history', 25 icon: 'glyphicon glyphicon- stats'25 icon: 'glyphicon glyphicon-calendar' 26 26 }] 27 27 }); -
trunk/sources/HeuristicLab.Services.WebApp/3.3
- Property svn:ignore
-
old new 1 1 Bin 2 HeuristicLab.Services.WebApp-3.3.csproj.user
-
- Property svn:ignore
-
trunk/sources/HeuristicLab.Services.WebApp/3.3/Configs/BundleConfig.cs
r12583 r12878 59 59 // bootstrap 60 60 "~/WebApp/libs/bootstrap/js/bootstrap.min.js", 61 // crypto 61 // cryptojs 62 62 "~/WebApp/libs/cryptojs/aes.js", 63 63 // angular js … … 77 77 "~/WebApp/libs/angularjs/loading-bar/loading-bar.js", 78 78 "~/WebApp/libs/angularjs/ocLazyLoad/ocLazyLoad.min.js", 79 "~/WebApp/libs/angularjs/fittext/ng-FitText.js", 79 80 // smoothScroll 80 81 "~/WebApp/libs/smoothScroll/smoothScroll.js" … … 105 106 PluginManager pluginManager = PluginManager.Instance; 106 107 foreach (var plugin in pluginManager.Plugins) { 107 if (File.Exists(string.Format(@"{0}\{1}\{1}.js", PluginManager.PluginsDirectory, plugin.Name))) { 108 var path = Path.Combine(PluginManager.PluginsDirectory, plugin.Name, string.Concat(plugin.Name, ".js")); 109 if (File.Exists(path)) { 108 110 jsFiles.Add(string.Format("WebApp/plugins/{0}/{0}.js", plugin.Name)); 109 111 } -
trunk/sources/HeuristicLab.Services.WebApp/3.3/Controllers/AppController.cs
r12556 r12878 20 20 #endregion 21 21 22 using System.Web; 22 23 using System.Web.Mvc; 23 24 … … 30 31 return RedirectPermanent(Request.Url + "/"); 31 32 } 33 Response.Cache.SetCacheability(HttpCacheability.NoCache); 32 34 return View("~/WebApp/shared/layout/layout.cshtml"); 33 35 } … … 38 40 39 41 public ActionResult LoadSharedView(string directory, string view, string dateTime) { 40 // dateTime is optional to avoid browser caching 42 Response.Cache.SetCacheability(HttpCacheability.NoCache); 43 // dateTime is optional to definitly avoid browser caching 41 44 return View(string.Format("~/WebApp/shared/{0}/{1}", directory, view)); 42 45 } 43 46 44 47 public ActionResult LoadPluginView(string plugin, string view, string dateTime) { 45 // dateTime is optional to avoid browser caching 48 Response.Cache.SetCacheability(HttpCacheability.NoCache); 49 // dateTime is optional to definitly avoid browser caching 46 50 return View(string.Format("~/WebApp/plugins/{0}/{1}", plugin, view)); 47 51 } -
trunk/sources/HeuristicLab.Services.WebApp/3.3/HeuristicLab.Services.WebApp-3.3.csproj
r12559 r12878 13 13 <AppDesignerFolder>Properties</AppDesignerFolder> 14 14 <RootNamespace>HeuristicLab.Services.WebApp</RootNamespace> 15 <AssemblyName>HeuristicLab.Services.WebApp </AssemblyName>15 <AssemblyName>HeuristicLab.Services.WebApp-3.3</AssemblyName> 16 16 <TargetFrameworkVersion>v4.5</TargetFrameworkVersion> 17 17 <MvcBuildViews>false</MvcBuildViews> … … 118 118 <Reference Include="System.Net.Http.WebRequest"> 119 119 </Reference> 120 <Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 121 <SpecificVersion>False</SpecificVersion> 120 <Reference Include="WebGrease"> 122 121 <HintPath>..\..\packages\WebGrease.1.6.0\lib\WebGrease.dll</HintPath> 123 122 </Reference> … … 146 145 <Content Include="WebApp\libs\angularjs\angular-tablesort\angular-tablesort.js" /> 147 146 <Content Include="WebApp\libs\angularjs\angular-tablesort\tablesort.css" /> 147 <Content Include="WebApp\libs\angularjs\fittext\ng-FitText.js" /> 148 <Content Include="WebApp\libs\cryptojs\aes.js" /> 148 149 <Content Include="WebApp\main.js" /> 149 150 <Content Include="WebApp\helper.js" /> … … 172 173 <Content Include="WebApp\plugins\about\about.js" /> 173 174 <Content Include="WebApp\plugins\about\aboutCtrl.js" /> 174 <Content Include="WebApp\plugins\login\login.css" /> 175 <Content Include="WebApp\plugins\login\login.js" /> 176 <Content Include="WebApp\plugins\login\loginCtrl.js" /> 177 <Content Include="WebApp\plugins\plugins\pluginsExceptionCtrl.js" /> 178 <Content Include="WebApp\plugins\plugins\plugins.js" /> 179 <Content Include="WebApp\plugins\plugins\pluginsCtrl.js" /> 175 <Content Include="WebApp\plugins\login\login.css"> 176 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 177 </Content> 178 <Content Include="WebApp\plugins\login\login.js"> 179 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 180 </Content> 181 <Content Include="WebApp\plugins\login\loginCtrl.js"> 182 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 183 </Content> 184 <Content Include="WebApp\plugins\plugins\pluginsExceptionCtrl.js"> 185 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 186 </Content> 187 <Content Include="WebApp\plugins\plugins\plugins.js"> 188 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 189 </Content> 190 <Content Include="WebApp\plugins\plugins\pluginsCtrl.js"> 191 <CopyToOutputDirectory>Always</CopyToOutputDirectory> 192 </Content> 180 193 <Content Include="WebApp\plugins\plugins\pluginsService.js" /> 181 194 <Content Include="WebApp\shared\directives\flot.js" /> … … 208 221 <Content Include="HeuristicLab.snk" /> 209 222 <Content Include="Properties\AssemblyInfo.cs.frame" /> 210 <Content Include="Web.config" /> 223 <Content Include="Web.config"> 224 <SubType>Designer</SubType> 225 </Content> 211 226 <Content Include="Web.Debug.config"> 212 227 <DependentUpon>Web.config</DependentUpon> … … 219 234 <Content Include="WebApp\libs\bootstrap\fonts\glyphicons-halflings-regular.woff" /> 220 235 <Content Include="WebApp\libs\bootstrap\fonts\glyphicons-halflings-regular.woff2" /> 236 <Content Include="WebApp\shared\directives\scrollToTop.js" /> 221 237 <Content Include="WebApp\shared\filter\filters.js" /> 222 238 <Content Include="WebApp\shared\images\HeuristicLab-Logo.png" /> … … 249 265 </ItemGroup> 250 266 <ItemGroup> 267 <None Include="Properties\PublishProfiles\WebApp.pubxml" /> 251 268 <Content Include="WebApp\plugins\about\about.cshtml" /> 252 269 </ItemGroup> -
trunk/sources/HeuristicLab.Services.WebApp/3.3/Plugin.cs
r12523 r12878 77 77 if (!assemblies.Any()) 78 78 return; 79 79 80 var assemblyPath = assemblies.First(); 80 81 AssemblyName = Path.GetFileName(assemblyPath); -
trunk/sources/HeuristicLab.Services.WebApp/3.3/PluginManager.cs
r12514 r12878 43 43 44 44 public static string PluginsDirectory { 45 get { return string.Format(@"{0}WebApp\plugins", HttpRuntime.AppDomainAppPath); } 45 get { 46 return Path.Combine(HttpRuntime.AppDomainAppPath, "WebApp", "plugins"); 47 } 46 48 } 47 49 … … 60 62 private void OnFilesChanged(object sender, FileSystemEventArgs args) { 61 63 string path = args.FullPath.Remove(0, PluginsDirectory.Length + 1); 62 var pathParts = path.Split(Path. PathSeparator);64 var pathParts = path.Split(Path.DirectorySeparatorChar); 63 65 string pluginName = pathParts[0]; 64 if (pathParts.Length == 1) {66 if (pathParts.Length <= 2) { 65 67 switch (args.ChangeType) { 66 68 case WatcherChangeTypes.Created: … … 75 77 RenamedEventArgs renamedArgs = (RenamedEventArgs)args; 76 78 string oldPath = renamedArgs.OldFullPath.Remove(0, PluginsDirectory.Length + 1); 77 var oldPathParts = oldPath.Split(Path. PathSeparator);79 var oldPathParts = oldPath.Split(Path.DirectorySeparatorChar); 78 80 string oldPluginName = oldPathParts[0]; 79 81 plugins.Remove(oldPluginName); … … 94 96 Plugin plugin = LookupPlugin(name); 95 97 if (plugin == null) { 96 string directory = string.Format(@"{0}\{1}",PluginsDirectory, name);98 string directory = Path.Combine(PluginsDirectory, name); 97 99 if (Directory.Exists(directory)) { 98 100 plugin = new Plugin(name, directory, Configuration); -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/app.css
r12514 r12878 352 352 } 353 353 354 [ng-click],355 [data-ng-click],356 [x-ng-click] {357 cursor: pointer;358 }359 354 360 355 .navbar-default .navbar-brand { … … 419 414 .default-view-container { 420 415 padding: 30px; 416 min-height: 300px; 417 } 418 419 .default-view-header { 420 padding: 30px; 421 background: #F5F5F5; 422 border-bottom: 1px solid #D3D3D3; 421 423 } 422 424 … … 434 436 text-decoration: none; 435 437 } 438 439 /*remove button gradient*/ 440 .btn { 441 background-image: none; 442 filter: none; 443 -webkit-box-shadow: none !important; 444 -moz-box-shadow: none !important; 445 -o-box-shadow: none !important; 446 box-shadow: none !important; 447 } 448 449 .btn-default { 450 background-image: none; 451 filter: none; 452 -webkit-box-shadow: none !important; 453 -moz-box-shadow: none !important; 454 -o-box-shadow: none !important; 455 box-shadow: none !important; 456 } 457 458 .btn .btn-default { 459 background-image: none; 460 filter: none; 461 -webkit-box-shadow: none !important; 462 -moz-box-shadow: none !important; 463 -o-box-shadow: none !important; 464 box-shadow: none !important; 465 } 466 467 .btn-default.active, .btn-default:active{ 468 border-color: #adadad; 469 } 470 471 472 473 .modal-dialog-center { 474 margin: 0; 475 position: absolute; 476 top: 50%; 477 left: 50%; 478 } 479 480 .modal-header { 481 background: #fafafa; 482 } 483 484 .modal-body { 485 overflow-y: auto; 486 } 487 .modal-footer { 488 margin-top: 0; 489 } 490 491 @media (max-width: 767px) { 492 .modal-dialog-center { 493 width: 100%; 494 } 495 } 496 497 body.modal-open { 498 overflow: visible; 499 } 500 501 .table .progress { 502 margin-bottom: 0px; 503 } 504 505 .default-filter-header { 506 padding: 30px; 507 background: #F5F5F5; 508 border-top: 1px solid #D3D3D3; 509 border-bottom: 1px solid #D3D3D3; 510 } 511 512 .default-tab-filter-header { 513 padding: 30px; 514 background: #F5F5F5; 515 border-bottom: 1px solid #D3D3D3; 516 } 517 518 .cursor-pointer:hover { 519 cursor: pointer 520 } 521 522 .app-modal-window .modal-dialog { 523 top: 15%; 524 z-index: 1050; 525 } 526 527 .pagination>li>a, 528 .pagination>li>span { 529 border-color: #ccc; 530 } 531 532 .pagination>.active>a, 533 .pagination>.active>a:focus, 534 .pagination>.active>span, 535 .pagination>.active>span:focus { 536 color: black; 537 background: #e0e0e0; 538 border-color: #adadad; 539 } 540 541 .pagination>.active>a:hover, 542 .pagination>.active>span:hover { 543 color: black; 544 border-color: #ccc; 545 background: #eeeeee; 546 } -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/app.js
r12428 r12878 2 2 var appName = 'app'; 3 3 var appPath = 'WebApp'; 4 var defaultPageUpdateInterval = 60000; 4 5 5 6 // route, plugin, menu, section and main app -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/helper.js
r12583 r12878 7 7 Number.prototype.zeropad = function (n) { 8 8 return (new Array(n + 1).join("0") + this).slice(-n); 9 }; 10 11 Number.prototype.toHHMMSS = function() { 12 d = this; 13 d = Number(d); 14 var years = Math.floor(d / 31536000); 15 var days = Math.floor(d / 86400 % 365); 16 var h = Math.floor(d / 3600 % 24); 17 var m = Math.floor(d % 3600 / 60); 18 var s = Math.floor(d % 3600 % 60); 19 var timeStr = ""; 20 if (years > 0) { 21 timeStr = years + "y "; 22 } 23 if (days > 0) { 24 timeStr = timeStr + days + "d "; 25 } 26 return timeStr + h.zeropad(2) + ":" + m.zeropad(2) + ":" + s.zeropad(2); 9 27 }; 10 28 … … 33 51 }; 34 52 35 36 53 var CSharpDateToString = function (datetime) { 37 54 var date = new Date(Date.parse(datetime)); -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/about/about.cshtml
r12583 r12878 28 28 <div class="panel-body"> 29 29 <p><strong>Support</strong>: <a href="App/RedirectUrl?url=http://groups.google.com/group/heuristiclab">HeuristicLab Google Group</a></p> 30 <p><strong>Inquiries</strong>: <a ng-click="mailToSupport()">support(at)heuristiclab.com</a></p>30 <p><strong>Inquiries</strong>: <a class="cursor-pointer" ng-click="mailToSupport()">support(at)heuristiclab.com</a></p> 31 31 <p><strong>Heuristic and Evolutionary Algorithms Laboratory (HEAL)</strong>: <a href="App/RedirectUrl?url=http://heal.heuristiclab.com">http://heal.heuristiclab.com</a></p> 32 32 <p><strong>HeuristicLab development site</strong>: <a href="App/RedirectUrl?url=http://dev.heuristiclab.com">http://dev.heuristiclab.com</a></p> … … 36 36 <span class="glyphicon glyphicon-phone-alt"></span> +43 50804 22030<br /> 37 37 <span class="glyphicon glyphicon-print"></span> +43 50804 21599<br /> 38 <span class="glyphicon glyphicon-envelope"></span> <a ng-click="mailToStefanWagner()">stefan.wagner(at)heuristiclab.com</a><br />38 <span class="glyphicon glyphicon-envelope"></span> <a class="cursor-pointer" ng-click="mailToStefanWagner()">stefan.wagner(at)heuristiclab.com</a><br /> 39 39 </p> 40 40 </div> -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/login/login.cshtml
r12428 r12878 14 14 <div class="input-group"> 15 15 <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span> 16 <input type="text" class="form-control" name="Username" placeholder="User "16 <input type="text" class="form-control" name="Username" placeholder="Username" 17 17 ng-model="user.Username"> 18 18 </div> -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/plugins/plugins/plugins.cshtml
r12557 r12878 21 21 <th>#</th> 22 22 <th ts-criteria="Name">Name</th> 23 <th ts-criteria 23 <th ts-criteria="AssemblyName">Assembly</th> 24 24 <th ts-criteria="LastReload">Last reload</th> 25 <th >Status</th>25 <th class="text-center">Status</th> 26 26 <th></th> 27 27 </tr> … … 33 33 <td>{{plugin.AssemblyName}}</td> 34 34 <td>{{plugin.LastReload}}</td> 35 <td >35 <td class="text-center"> 36 36 <span ng-hide="plugin.Exception" class="glyphicon glyphicon glyphicon-ok" style="color: green"></span> 37 37 <span ng-show="plugin.Exception" class="glyphicon glyphicon glyphicon-remove" style="color: darkred" … … 39 39 </td> 40 40 <td> 41 <a ng-href="" data-ng-click="reloadPlugin(plugin.Name)">Reload</a>41 <a ng-href="" class="cursor-pointer" data-ng-click="reloadPlugin(plugin.Name)">Reload</a> 42 42 </td> 43 43 </tr> -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/filter/filters.js
r12546 r12878 1 (function 1 (function() { 2 2 var module = appMainPlugin.getAngularModule(); 3 3 module.filter('kbToGB', function () { -
trunk/sources/HeuristicLab.Services.WebApp/3.3/WebApp/shared/layout/layout.cshtml
r12514 r12878 24 24 <meta charset="utf-8" /> 25 25 <meta name="viewport" content="width=device-width, initial-scale=1"> 26 <meta http-equiv="pragma" content="no-cache" /> 26 27 <title>HeuristicLab Hive</title> 27 28 <link href="~/WebApp/HeuristicLab.ico" rel="shortcut icon" type="image/x-icon" /> 28 29 @Styles.Render("~/Bundles/Vendors/css") 29 30 @Styles.Render("~/Bundles/WebApp/css") 30 <link rel="stylesheet" type="text/css" href=" http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700">31 <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600,700"> 31 32 <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries --> 32 33 <!--[if lt IE 9]> … … 63 64 <div class="navbar-content"> 64 65 <ul class="nav navbar-nav navbar-right"> 65 @if (Request.IsAuthenticated) 66 { 66 @if (Request.IsAuthenticated) { 67 67 <li> 68 68 <span class="navbar-text">Hello @User.Identity.Name!</span> 69 69 </li> 70 70 <li> 71 <a ng-href=" " data-ng-click="logout()">Logout</a>71 <a ng-href="#" data-ng-click="logout()">Logout</a> 72 72 </li> 73 } 74 else 75 { 73 } else { 76 74 <li> 77 75 <a ng-href="#/login" data-ng-click="hideMenu()">Login</a> … … 97 95 </div> 98 96 <script type="text/javascript"> 99 $('.navbar-collapse').on('click', 'li a', function () {100 $('.navbar-collapse').collapse('hide');101 });97 $('.navbar-collapse').on('click', 'li a', function () { 98 $('.navbar-collapse').collapse('hide'); 99 }); 102 100 </script> 103 101 </body> -
trunk/sources/Installers/HiveJanitorServiceInstaller.nsi
r12753 r12878 51 51 File "${JANITORBUILDPATH}\HeuristicLab.PluginInfrastructure-3.3.dll" 52 52 File "${JANITORBUILDPATH}\HeuristicLab.Services.Access.dll" 53 File "${JANITORBUILDPATH}\HeuristicLab.Services.Access.DataAccess.dll" 53 54 File "${JANITORBUILDPATH}\HeuristicLab.Services.Hive.DataAccess-3.3.dll" 54 55 File "${JANITORBUILDPATH}\HeuristicLab.Services.Hive.JanitorService-3.3.exe"
Note: See TracChangeset
for help on using the changeset viewer.