Changeset 3203


Ignore:
Timestamp:
03/23/10 10:50:26 (12 years ago)
Author:
kgrading
Message:

implemented the server on the client, using push & force push, added refresh buttons, added auto calender methods that traverse the tree... (#908)

Location:
trunk/sources
Files:
4 added
42 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/HeuristicLab.Hive.Client.Communication-3.2.csproj

    r2122 r3203  
    136136    <None Include="app.config" />
    137137    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.Response.datasource" />
     138    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseCalendar.datasource" />
    138139    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseHB.datasource" />
    139140    <None Include="Properties\DataSources\HeuristicLab.Hive.Contracts.ResponseJob.datasource" />
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/HeuristicLab.Hive.Contracts.BusinessObjects1.xsd

    r2122 r3203  
    44  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/" />
    55  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    6   <xs:complexType name="ClientInfo">
     6  <xs:complexType name="ClientDto">
    77    <xs:complexContent mixed="false">
    8       <xs:extension base="tns:Resource">
     8      <xs:extension base="tns:ResourceDto">
    99        <xs:sequence>
    10           <xs:element minOccurs="0" name="Config" nillable="true" type="tns:ClientConfig" />
     10          <xs:element minOccurs="0" name="CalendarSyncStatus" type="tns:CalendarState" />
     11          <xs:element minOccurs="0" name="Config" nillable="true" type="tns:ClientConfigDto" />
    1112          <xs:element minOccurs="0" name="CpuSpeedPerCore" type="xs:int" />
    1213          <xs:element minOccurs="0" name="FreeMemory" type="xs:int" />
     
    2021    </xs:complexContent>
    2122  </xs:complexType>
    22   <xs:element name="ClientInfo" nillable="true" type="tns:ClientInfo" />
    23   <xs:complexType name="Resource">
     23  <xs:element name="ClientDto" nillable="true" type="tns:ClientDto" />
     24  <xs:complexType name="ResourceDto">
    2425    <xs:complexContent mixed="false">
    2526      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q1:PersistableObject">
     
    3031    </xs:complexContent>
    3132  </xs:complexType>
    32   <xs:element name="Resource" nillable="true" type="tns:Resource" />
    33   <xs:complexType name="ClientConfig">
     33  <xs:element name="ResourceDto" nillable="true" type="tns:ResourceDto" />
     34  <xs:simpleType name="CalendarState">
     35    <xs:restriction base="xs:string">
     36      <xs:enumeration value="Fetch" />
     37      <xs:enumeration value="ForceFetch" />
     38      <xs:enumeration value="Fetching" />
     39      <xs:enumeration value="Fetched" />
     40      <xs:enumeration value="NotAllowedToFetch" />
     41    </xs:restriction>
     42  </xs:simpleType>
     43  <xs:element name="CalendarState" nillable="true" type="tns:CalendarState" />
     44  <xs:complexType name="ClientConfigDto">
    3445    <xs:complexContent mixed="false">
    3546      <xs:extension xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q2:PersistableObject">
    3647        <xs:sequence>
    37           <xs:element minOccurs="0" name="HeartBeatIntervall" type="xs:int" />
     48          <xs:element minOccurs="0" name="HeartBeatIntervall" nillable="true" type="xs:int" />
    3849          <xs:element minOccurs="0" name="UpDownTimeCalendar" nillable="true" type="xs:string" />
    3950        </xs:sequence>
     
    4152    </xs:complexContent>
    4253  </xs:complexType>
    43   <xs:element name="ClientConfig" nillable="true" type="tns:ClientConfig" />
     54  <xs:element name="ClientConfigDto" nillable="true" type="tns:ClientConfigDto" />
    4455  <xs:simpleType name="State">
    4556    <xs:restriction base="xs:string">
     
    6576  </xs:complexType>
    6677  <xs:element name="HeartBeatData" nillable="true" type="tns:HeartBeatData" />
    67   <xs:complexType name="Job">
     78  <xs:complexType name="JobDto">
    6879    <xs:complexContent mixed="false">
    6980      <xs:extension xmlns:q4="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q4:PersistableObject">
    7081        <xs:sequence>
    7182          <xs:element xmlns:q5="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="AssignedResourceIds" nillable="true" type="q5:ArrayOfguid" />
    72           <xs:element minOccurs="0" name="Client" nillable="true" type="tns:ClientInfo" />
     83          <xs:element minOccurs="0" name="Client" nillable="true" type="tns:ClientDto" />
    7384          <xs:element minOccurs="0" name="CoresNeeded" type="xs:int" />
    74           <xs:element minOccurs="0" name="DateCalculated" type="xs:dateTime" />
    75           <xs:element minOccurs="0" name="DateCreated" type="xs:dateTime" />
     85          <xs:element minOccurs="0" name="DateCalculated" nillable="true" type="xs:dateTime" />
     86          <xs:element minOccurs="0" name="DateCreated" nillable="true" type="xs:dateTime" />
    7687          <xs:element minOccurs="0" name="MemoryNeeded" type="xs:int" />
    77           <xs:element minOccurs="0" name="ParentJob" nillable="true" type="tns:Job" />
    78           <xs:element minOccurs="0" name="Percentage" type="xs:double" />
    79           <xs:element minOccurs="0" name="PluginsNeeded" nillable="true" type="tns:ArrayOfHivePluginInfo" />
     88          <xs:element minOccurs="0" name="ParentJob" nillable="true" type="tns:JobDto" />
     89          <xs:element minOccurs="0" name="Percentage" nillable="true" type="xs:double" />
     90          <xs:element minOccurs="0" name="PluginsNeeded" nillable="true" type="tns:ArrayOfHivePluginInfoDto" />
    8091          <xs:element minOccurs="0" name="Priority" type="xs:int" />
    81           <xs:element minOccurs="0" name="Project" nillable="true" type="tns:Project" />
     92          <xs:element minOccurs="0" name="Project" nillable="true" type="tns:ProjectDto" />
    8293          <xs:element minOccurs="0" name="State" type="tns:State" />
    8394          <xs:element minOccurs="0" name="UserId" type="ser:guid" />
     
    8697    </xs:complexContent>
    8798  </xs:complexType>
    88   <xs:element name="Job" nillable="true" type="tns:Job" />
    89   <xs:complexType name="ArrayOfHivePluginInfo">
     99  <xs:element name="JobDto" nillable="true" type="tns:JobDto" />
     100  <xs:complexType name="ArrayOfHivePluginInfoDto">
    90101    <xs:sequence>
    91       <xs:element minOccurs="0" maxOccurs="unbounded" name="HivePluginInfo" nillable="true" type="tns:HivePluginInfo" />
     102      <xs:element minOccurs="0" maxOccurs="unbounded" name="HivePluginInfoDto" nillable="true" type="tns:HivePluginInfoDto" />
    92103    </xs:sequence>
    93104  </xs:complexType>
    94   <xs:element name="ArrayOfHivePluginInfo" nillable="true" type="tns:ArrayOfHivePluginInfo" />
    95   <xs:complexType name="HivePluginInfo">
     105  <xs:element name="ArrayOfHivePluginInfoDto" nillable="true" type="tns:ArrayOfHivePluginInfoDto" />
     106  <xs:complexType name="HivePluginInfoDto">
    96107    <xs:complexContent mixed="false">
    97108      <xs:extension xmlns:q6="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q6:PersistableObject">
     
    104115    </xs:complexContent>
    105116  </xs:complexType>
    106   <xs:element name="HivePluginInfo" nillable="true" type="tns:HivePluginInfo" />
    107   <xs:complexType name="Project">
     117  <xs:element name="HivePluginInfoDto" nillable="true" type="tns:HivePluginInfoDto" />
     118  <xs:complexType name="ProjectDto">
    108119    <xs:complexContent mixed="false">
    109120      <xs:extension xmlns:q7="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q7:PersistableObject">
     
    114125    </xs:complexContent>
    115126  </xs:complexType>
    116   <xs:element name="Project" nillable="true" type="tns:Project" />
    117   <xs:complexType name="SerializedJob">
     127  <xs:element name="ProjectDto" nillable="true" type="tns:ProjectDto" />
     128  <xs:complexType name="ArrayOfAppointmentDto">
    118129    <xs:sequence>
    119       <xs:element minOccurs="0" name="JobInfo" nillable="true" type="tns:Job" />
    120       <xs:element minOccurs="0" name="SerializedJobData" nillable="true" type="xs:base64Binary" />
     130      <xs:element minOccurs="0" maxOccurs="unbounded" name="AppointmentDto" nillable="true" type="tns:AppointmentDto" />
    121131    </xs:sequence>
    122132  </xs:complexType>
    123   <xs:element name="SerializedJob" nillable="true" type="tns:SerializedJob" />
     133  <xs:element name="ArrayOfAppointmentDto" nillable="true" type="tns:ArrayOfAppointmentDto" />
     134  <xs:complexType name="AppointmentDto">
     135    <xs:complexContent mixed="false">
     136      <xs:extension xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.DataAccess" base="q8:PersistableObject">
     137        <xs:sequence>
     138          <xs:element minOccurs="0" name="AllDayEvent" type="xs:boolean" />
     139          <xs:element minOccurs="0" name="EndDate" type="xs:dateTime" />
     140          <xs:element minOccurs="0" name="Recurring" type="xs:boolean" />
     141          <xs:element minOccurs="0" name="RecurringId" type="ser:guid" />
     142          <xs:element minOccurs="0" name="ResourceId" type="ser:guid" />
     143          <xs:element minOccurs="0" name="StartDate" type="xs:dateTime" />
     144        </xs:sequence>
     145      </xs:extension>
     146    </xs:complexContent>
     147  </xs:complexType>
     148  <xs:element name="AppointmentDto" nillable="true" type="tns:AppointmentDto" />
    124149</xs:schema>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/HeuristicLab.Hive.Contracts1.xsd

    r2122 r3203  
    4646      <xs:enumeration value="JobFailed" />
    4747      <xs:enumeration value="UptimeLimitDisconnect" />
     48      <xs:enumeration value="FetchOrForceFetchCalendar" />
    4849    </xs:restriction>
    4950  </xs:simpleType>
     
    5354      <xs:extension base="tns:Response">
    5455        <xs:sequence>
    55           <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Job" nillable="true" type="q1:Job" />
     56          <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Job" nillable="true" type="q1:JobDto" />
    5657        </xs:sequence>
    5758      </xs:extension>
     
    5960  </xs:complexType>
    6061  <xs:element name="ResponseJob" nillable="true" type="tns:ResponseJob" />
    61   <xs:complexType name="ResponseSerializedJob">
    62     <xs:complexContent mixed="false">
    63       <xs:extension base="tns:Response">
    64         <xs:sequence>
    65           <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Job" nillable="true" type="q2:SerializedJob" />
    66         </xs:sequence>
    67       </xs:extension>
    68     </xs:complexContent>
    69   </xs:complexType>
    70   <xs:element name="ResponseSerializedJob" nillable="true" type="tns:ResponseSerializedJob" />
    7162  <xs:complexType name="ResponseResultReceived">
    7263    <xs:complexContent mixed="false">
     
    7465        <xs:sequence>
    7566          <xs:element minOccurs="0" name="JobId" type="ser:guid" />
    76           <xs:element minOccurs="0" name="JobResultId" type="ser:guid" />
    7767          <xs:element minOccurs="0" name="finished" type="xs:boolean" />
    7868        </xs:sequence>
     
    8575      <xs:extension base="tns:Response">
    8676        <xs:sequence>
    87           <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" minOccurs="0" name="Plugins" nillable="true" type="q3:ArrayOfCachedHivePluginInfo" />
     77          <xs:element xmlns:q2="http://schemas.datacontract.org/2004/07/HeuristicLab.PluginInfrastructure" minOccurs="0" name="Plugins" nillable="true" type="q2:ArrayOfCachedHivePluginInfoDto" />
    8878        </xs:sequence>
    8979      </xs:extension>
     
    9181  </xs:complexType>
    9282  <xs:element name="ResponsePlugin" nillable="true" type="tns:ResponsePlugin" />
     83  <xs:complexType name="ResponseCalendar">
     84    <xs:complexContent mixed="false">
     85      <xs:extension base="tns:Response">
     86        <xs:sequence>
     87          <xs:element xmlns:q3="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="Appointments" nillable="true" type="q3:ArrayOfAppointmentDto" />
     88          <xs:element minOccurs="0" name="ForceFetch" type="xs:boolean" />
     89        </xs:sequence>
     90      </xs:extension>
     91    </xs:complexContent>
     92  </xs:complexType>
     93  <xs:element name="ResponseCalendar" nillable="true" type="tns:ResponseCalendar" />
    9394</xs:schema>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/HeuristicLab.PluginInfrastructure2.xsd

    r1939 r3203  
    33  <xs:import namespace="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    44  <xs:import namespace="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" />
    5   <xs:complexType name="ArrayOfCachedHivePluginInfo">
     5  <xs:complexType name="ArrayOfCachedHivePluginInfoDto">
    66    <xs:sequence>
    7       <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
     7      <xs:element minOccurs="0" maxOccurs="unbounded" name="CachedHivePluginInfoDto" nillable="true" type="tns:CachedHivePluginInfoDto" />
    88    </xs:sequence>
    99  </xs:complexType>
    10   <xs:element name="ArrayOfCachedHivePluginInfo" nillable="true" type="tns:ArrayOfCachedHivePluginInfo" />
    11   <xs:complexType name="CachedHivePluginInfo">
     10  <xs:element name="ArrayOfCachedHivePluginInfoDto" nillable="true" type="tns:ArrayOfCachedHivePluginInfoDto" />
     11  <xs:complexType name="CachedHivePluginInfoDto">
    1212    <xs:complexContent mixed="false">
    13       <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfo">
     13      <xs:extension xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" base="q1:HivePluginInfoDto">
    1414        <xs:sequence>
    1515          <xs:element xmlns:q2="http://schemas.microsoft.com/2003/10/Serialization/Arrays" minOccurs="0" name="PluginFiles" nillable="true" type="q2:ArrayOfbase64Binary" />
     
    1818    </xs:complexContent>
    1919  </xs:complexType>
    20   <xs:element name="CachedHivePluginInfo" nillable="true" type="tns:CachedHivePluginInfo" />
     20  <xs:element name="CachedHivePluginInfoDto" nillable="true" type="tns:CachedHivePluginInfoDto" />
    2121</xs:schema>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/Reference.cs

    r3011 r3203  
    1 //------------------------------------------------------------------------------
     1//------------------------------------------------------------------------------
    22// <auto-generated>
    33//     This code was generated by a tool.
    4 //     Runtime Version:2.0.50727.3053
     4//     Runtime Version:2.0.50727.4927
    55//
    66//     Changes to this file may cause incorrect behavior and will be lost if
     
    1919        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseHB))]
    2020        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseJob))]
    21         [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseSerializedJob))]
    2221        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseResultReceived))]
    2322        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponsePlugin))]
     23        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseCalendar))]
    2424        HeuristicLab.Hive.Contracts.Response Login(HeuristicLab.Hive.Contracts.BusinessObjects.ClientDto clientInfo);
    2525       
     
    4444       
    4545        HeuristicLab.Hive.Contracts.ResponseJob EndSendJob(System.IAsyncResult result);
    46        
    47         [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/SendSerializedJob", ReplyAction="http://tempuri.org/IClientCommunicator/SendSerializedJobResponse")]
    48         HeuristicLab.Hive.Contracts.ResponseSerializedJob SendSerializedJob(System.Guid clientId);
    49        
    50         [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/SendSerializedJob", ReplyAction="http://tempuri.org/IClientCommunicator/SendSerializedJobResponse")]
    51         System.IAsyncResult BeginSendSerializedJob(System.Guid clientId, System.AsyncCallback callback, object asyncState);
    52        
    53         HeuristicLab.Hive.Contracts.ResponseSerializedJob EndSendSerializedJob(System.IAsyncResult result);
    5446       
    5547        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult", ReplyAction="http://tempuri.org/IClientCommunicator/StoreFinishedJobResultResponse")]
     
    7264        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseHB))]
    7365        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseJob))]
    74         [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseSerializedJob))]
    7566        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseResultReceived))]
    7667        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponsePlugin))]
     68        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseCalendar))]
    7769        HeuristicLab.Hive.Contracts.Response Logout(System.Guid clientId);
    7870       
     
    8577        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseHB))]
    8678        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseJob))]
    87         [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseSerializedJob))]
    8879        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseResultReceived))]
    8980        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponsePlugin))]
     81        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseCalendar))]
    9082        HeuristicLab.Hive.Contracts.Response IsJobStillNeeded(System.Guid jobId);
    9183       
     
    10395        HeuristicLab.Hive.Contracts.ResponsePlugin EndSendPlugins(System.IAsyncResult result);
    10496       
     97        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/GetCalendar", ReplyAction="http://tempuri.org/IClientCommunicator/GetCalendarResponse")]
     98        HeuristicLab.Hive.Contracts.ResponseCalendar GetCalendar(System.Guid clientId);
     99       
     100        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/GetCalendar", ReplyAction="http://tempuri.org/IClientCommunicator/GetCalendarResponse")]
     101        System.IAsyncResult BeginGetCalendar(System.Guid clientId, System.AsyncCallback callback, object asyncState);
     102       
     103        HeuristicLab.Hive.Contracts.ResponseCalendar EndGetCalendar(System.IAsyncResult result);
     104       
     105        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus", ReplyAction="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse")]
     106        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseHB))]
     107        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseJob))]
     108        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseResultReceived))]
     109        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponsePlugin))]
     110        [System.ServiceModel.ServiceKnownTypeAttribute(typeof(HeuristicLab.Hive.Contracts.ResponseCalendar))]
     111        HeuristicLab.Hive.Contracts.Response SetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state);
     112       
     113        [System.ServiceModel.OperationContractAttribute(AsyncPattern=true, Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus", ReplyAction="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse")]
     114        System.IAsyncResult BeginSetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state, System.AsyncCallback callback, object asyncState);
     115       
     116        HeuristicLab.Hive.Contracts.Response EndSetCalendarStatus(System.IAsyncResult result);
     117       
    105118        [System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IClientFacade/SendStreamedJob", ReplyAction="http://tempuri.org/IClientFacade/SendStreamedJobResponse")]
    106119        System.IO.Stream SendStreamedJob(System.Guid clientId);
     
    195208            }
    196209        }
     210      public byte[] Data {
     211        get {
     212          base.RaiseExceptionIfNecessary();
     213          return (byte[]) this.results[1];
     214        }
     215      }
    197216
    198         public byte[] Data {
    199           get {
    200             base.RaiseExceptionIfNecessary();
    201             return ((byte[])(this.results[1]));
    202           }
    203         }
    204     }
    205    
    206     [System.Diagnostics.DebuggerStepThroughAttribute()]
    207     [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    208     public partial class SendSerializedJobCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
    209        
    210         private object[] results;
    211        
    212         public SendSerializedJobCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
    213                 base(exception, cancelled, userState) {
    214             this.results = results;
    215         }
    216        
    217         public HeuristicLab.Hive.Contracts.ResponseSerializedJob Result {
    218             get {
    219                 base.RaiseExceptionIfNecessary();
    220                 return ((HeuristicLab.Hive.Contracts.ResponseSerializedJob)(this.results[0]));
    221             }
    222         }
    223217    }
    224218   
     
    320314    [System.Diagnostics.DebuggerStepThroughAttribute()]
    321315    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
     316    public partial class GetCalendarCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
     317       
     318        private object[] results;
     319       
     320        public GetCalendarCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
     321                base(exception, cancelled, userState) {
     322            this.results = results;
     323        }
     324       
     325        public HeuristicLab.Hive.Contracts.ResponseCalendar Result {
     326            get {
     327                base.RaiseExceptionIfNecessary();
     328                return ((HeuristicLab.Hive.Contracts.ResponseCalendar)(this.results[0]));
     329            }
     330        }
     331    }
     332   
     333    [System.Diagnostics.DebuggerStepThroughAttribute()]
     334    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
     335    public partial class SetCalendarStatusCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
     336       
     337        private object[] results;
     338       
     339        public SetCalendarStatusCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
     340                base(exception, cancelled, userState) {
     341            this.results = results;
     342        }
     343       
     344        public HeuristicLab.Hive.Contracts.Response Result {
     345            get {
     346                base.RaiseExceptionIfNecessary();
     347                return ((HeuristicLab.Hive.Contracts.Response)(this.results[0]));
     348            }
     349        }
     350    }
     351   
     352    [System.Diagnostics.DebuggerStepThroughAttribute()]
     353    [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
    322354    public partial class SendStreamedJobCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
    323355       
     
    416448        private System.Threading.SendOrPostCallback onSendJobCompletedDelegate;
    417449       
    418         private BeginOperationDelegate onBeginSendSerializedJobDelegate;
    419        
    420         private EndOperationDelegate onEndSendSerializedJobDelegate;
    421        
    422         private System.Threading.SendOrPostCallback onSendSerializedJobCompletedDelegate;
    423        
    424450        private BeginOperationDelegate onBeginStoreFinishedJobResultDelegate;
    425451       
     
    451477       
    452478        private System.Threading.SendOrPostCallback onSendPluginsCompletedDelegate;
     479       
     480        private BeginOperationDelegate onBeginGetCalendarDelegate;
     481       
     482        private EndOperationDelegate onEndGetCalendarDelegate;
     483       
     484        private System.Threading.SendOrPostCallback onGetCalendarCompletedDelegate;
     485       
     486        private BeginOperationDelegate onBeginSetCalendarStatusDelegate;
     487       
     488        private EndOperationDelegate onEndSetCalendarStatusDelegate;
     489       
     490        private System.Threading.SendOrPostCallback onSetCalendarStatusCompletedDelegate;
    453491       
    454492        private BeginOperationDelegate onBeginSendStreamedJobDelegate;
     
    501539        public event System.EventHandler<SendJobCompletedEventArgs> SendJobCompleted;
    502540       
    503         public event System.EventHandler<SendSerializedJobCompletedEventArgs> SendSerializedJobCompleted;
    504        
    505541        public event System.EventHandler<StoreFinishedJobResultCompletedEventArgs> StoreFinishedJobResultCompleted;
    506542       
     
    512548       
    513549        public event System.EventHandler<SendPluginsCompletedEventArgs> SendPluginsCompleted;
     550       
     551        public event System.EventHandler<GetCalendarCompletedEventArgs> GetCalendarCompleted;
     552       
     553        public event System.EventHandler<SetCalendarStatusCompletedEventArgs> SetCalendarStatusCompleted;
    514554       
    515555        public event System.EventHandler<SendStreamedJobCompletedEventArgs> SendStreamedJobCompleted;
     
    669709            base.InvokeAsync(this.onBeginSendJobDelegate, new object[] {
    670710                        clientId}, this.onEndSendJobDelegate, this.onSendJobCompletedDelegate, userState);
    671         }
    672        
    673         public HeuristicLab.Hive.Contracts.ResponseSerializedJob SendSerializedJob(System.Guid clientId) {
    674             return base.Channel.SendSerializedJob(clientId);
    675         }
    676        
    677         [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    678         public System.IAsyncResult BeginSendSerializedJob(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
    679             return base.Channel.BeginSendSerializedJob(clientId, callback, asyncState);
    680         }
    681        
    682         [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
    683         public HeuristicLab.Hive.Contracts.ResponseSerializedJob EndSendSerializedJob(System.IAsyncResult result) {
    684             return base.Channel.EndSendSerializedJob(result);
    685         }
    686        
    687         private System.IAsyncResult OnBeginSendSerializedJob(object[] inValues, System.AsyncCallback callback, object asyncState) {
    688             System.Guid clientId = ((System.Guid)(inValues[0]));
    689             return this.BeginSendSerializedJob(clientId, callback, asyncState);
    690         }
    691        
    692         private object[] OnEndSendSerializedJob(System.IAsyncResult result) {
    693             HeuristicLab.Hive.Contracts.ResponseSerializedJob retVal = this.EndSendSerializedJob(result);
    694             return new object[] {
    695                     retVal};
    696         }
    697        
    698         private void OnSendSerializedJobCompleted(object state) {
    699             if ((this.SendSerializedJobCompleted != null)) {
    700                 InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
    701                 this.SendSerializedJobCompleted(this, new SendSerializedJobCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
    702             }
    703         }
    704        
    705         public void SendSerializedJobAsync(System.Guid clientId) {
    706             this.SendSerializedJobAsync(clientId, null);
    707         }
    708        
    709         public void SendSerializedJobAsync(System.Guid clientId, object userState) {
    710             if ((this.onBeginSendSerializedJobDelegate == null)) {
    711                 this.onBeginSendSerializedJobDelegate = new BeginOperationDelegate(this.OnBeginSendSerializedJob);
    712             }
    713             if ((this.onEndSendSerializedJobDelegate == null)) {
    714                 this.onEndSendSerializedJobDelegate = new EndOperationDelegate(this.OnEndSendSerializedJob);
    715             }
    716             if ((this.onSendSerializedJobCompletedDelegate == null)) {
    717                 this.onSendSerializedJobCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSendSerializedJobCompleted);
    718             }
    719             base.InvokeAsync(this.onBeginSendSerializedJobDelegate, new object[] {
    720                         clientId}, this.onEndSendSerializedJobDelegate, this.onSendSerializedJobCompletedDelegate, userState);
    721711        }
    722712       
     
    987977        }
    988978       
     979        public HeuristicLab.Hive.Contracts.ResponseCalendar GetCalendar(System.Guid clientId) {
     980            return base.Channel.GetCalendar(clientId);
     981        }
     982       
     983        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
     984        public System.IAsyncResult BeginGetCalendar(System.Guid clientId, System.AsyncCallback callback, object asyncState) {
     985            return base.Channel.BeginGetCalendar(clientId, callback, asyncState);
     986        }
     987       
     988        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
     989        public HeuristicLab.Hive.Contracts.ResponseCalendar EndGetCalendar(System.IAsyncResult result) {
     990            return base.Channel.EndGetCalendar(result);
     991        }
     992       
     993        private System.IAsyncResult OnBeginGetCalendar(object[] inValues, System.AsyncCallback callback, object asyncState) {
     994            System.Guid clientId = ((System.Guid)(inValues[0]));
     995            return this.BeginGetCalendar(clientId, callback, asyncState);
     996        }
     997       
     998        private object[] OnEndGetCalendar(System.IAsyncResult result) {
     999            HeuristicLab.Hive.Contracts.ResponseCalendar retVal = this.EndGetCalendar(result);
     1000            return new object[] {
     1001                    retVal};
     1002        }
     1003       
     1004        private void OnGetCalendarCompleted(object state) {
     1005            if ((this.GetCalendarCompleted != null)) {
     1006                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
     1007                this.GetCalendarCompleted(this, new GetCalendarCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
     1008            }
     1009        }
     1010       
     1011        public void GetCalendarAsync(System.Guid clientId) {
     1012            this.GetCalendarAsync(clientId, null);
     1013        }
     1014       
     1015        public void GetCalendarAsync(System.Guid clientId, object userState) {
     1016            if ((this.onBeginGetCalendarDelegate == null)) {
     1017                this.onBeginGetCalendarDelegate = new BeginOperationDelegate(this.OnBeginGetCalendar);
     1018            }
     1019            if ((this.onEndGetCalendarDelegate == null)) {
     1020                this.onEndGetCalendarDelegate = new EndOperationDelegate(this.OnEndGetCalendar);
     1021            }
     1022            if ((this.onGetCalendarCompletedDelegate == null)) {
     1023                this.onGetCalendarCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnGetCalendarCompleted);
     1024            }
     1025            base.InvokeAsync(this.onBeginGetCalendarDelegate, new object[] {
     1026                        clientId}, this.onEndGetCalendarDelegate, this.onGetCalendarCompletedDelegate, userState);
     1027        }
     1028       
     1029        public HeuristicLab.Hive.Contracts.Response SetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state) {
     1030            return base.Channel.SetCalendarStatus(clientId, state);
     1031        }
     1032       
     1033        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
     1034        public System.IAsyncResult BeginSetCalendarStatus(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state, System.AsyncCallback callback, object asyncState) {
     1035            return base.Channel.BeginSetCalendarStatus(clientId, state, callback, asyncState);
     1036        }
     1037       
     1038        [System.ComponentModel.EditorBrowsableAttribute(System.ComponentModel.EditorBrowsableState.Advanced)]
     1039        public HeuristicLab.Hive.Contracts.Response EndSetCalendarStatus(System.IAsyncResult result) {
     1040            return base.Channel.EndSetCalendarStatus(result);
     1041        }
     1042       
     1043        private System.IAsyncResult OnBeginSetCalendarStatus(object[] inValues, System.AsyncCallback callback, object asyncState) {
     1044            System.Guid clientId = ((System.Guid)(inValues[0]));
     1045            HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state = ((HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState)(inValues[1]));
     1046            return this.BeginSetCalendarStatus(clientId, state, callback, asyncState);
     1047        }
     1048       
     1049        private object[] OnEndSetCalendarStatus(System.IAsyncResult result) {
     1050            HeuristicLab.Hive.Contracts.Response retVal = this.EndSetCalendarStatus(result);
     1051            return new object[] {
     1052                    retVal};
     1053        }
     1054       
     1055        private void OnSetCalendarStatusCompleted(object state) {
     1056            if ((this.SetCalendarStatusCompleted != null)) {
     1057                InvokeAsyncCompletedEventArgs e = ((InvokeAsyncCompletedEventArgs)(state));
     1058                this.SetCalendarStatusCompleted(this, new SetCalendarStatusCompletedEventArgs(e.Results, e.Error, e.Cancelled, e.UserState));
     1059            }
     1060        }
     1061       
     1062        public void SetCalendarStatusAsync(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state) {
     1063            this.SetCalendarStatusAsync(clientId, state, null);
     1064        }
     1065       
     1066        public void SetCalendarStatusAsync(System.Guid clientId, HeuristicLab.Hive.Contracts.BusinessObjects.CalendarState state, object userState) {
     1067            if ((this.onBeginSetCalendarStatusDelegate == null)) {
     1068                this.onBeginSetCalendarStatusDelegate = new BeginOperationDelegate(this.OnBeginSetCalendarStatus);
     1069            }
     1070            if ((this.onEndSetCalendarStatusDelegate == null)) {
     1071                this.onEndSetCalendarStatusDelegate = new EndOperationDelegate(this.OnEndSetCalendarStatus);
     1072            }
     1073            if ((this.onSetCalendarStatusCompletedDelegate == null)) {
     1074                this.onSetCalendarStatusCompletedDelegate = new System.Threading.SendOrPostCallback(this.OnSetCalendarStatusCompleted);
     1075            }
     1076            base.InvokeAsync(this.onBeginSetCalendarStatusDelegate, new object[] {
     1077                        clientId,
     1078                        state}, this.onEndSetCalendarStatusDelegate, this.onSetCalendarStatusCompletedDelegate, userState);
     1079        }
     1080       
    9891081        public System.IO.Stream SendStreamedJob(System.Guid clientId) {
    9901082            return base.Channel.SendStreamedJob(clientId);
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/Reference.svcmap

    r2122 r3203  
    1818  </ClientOptions>
    1919  <MetadataSources>
    20     <MetadataSource Address="net.tcp://10.0.2.15:9000/HiveServer/mex" Protocol="mex" SourceId="1" />
     20    <MetadataSource Address="net.tcp://10.0.0.52:9000/HiveServer/mex" Protocol="mex" SourceId="1" />
    2121  </MetadataSources>
    2222  <Metadata>
    23     <MetadataFile FileName="service1.wsdl" MetadataType="Wsdl" ID="67311a7a-922b-4675-a2bb-10ab57a84034" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    24     <MetadataFile FileName="service2.xsd" MetadataType="Schema" ID="b77a19d5-7c1f-453c-aab7-0899e51523ec" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    25     <MetadataFile FileName="service3.xsd" MetadataType="Schema" ID="f44e3d38-15e3-439c-87ef-f1fa9333bc3b" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    26     <MetadataFile FileName="HeuristicLab.Hive.Contracts.BusinessObjects1.xsd" MetadataType="Schema" ID="770b7a79-ce79-43dc-9a74-d3343aa63612" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    27     <MetadataFile FileName="HeuristicLab.DataAccess1.xsd" MetadataType="Schema" ID="fbac237d-3ab8-487d-af6c-0fe4280cfdf3" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    28     <MetadataFile FileName="HeuristicLab.Hive.Contracts1.xsd" MetadataType="Schema" ID="27f1b8eb-5d07-4ef1-949c-4d57e10b1301" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    29     <MetadataFile FileName="Arrays1.xsd" MetadataType="Schema" ID="17721bf1-192c-413b-9514-a9f214b3ae25" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    30     <MetadataFile FileName="System1.xsd" MetadataType="Schema" ID="69764c0a-dc15-4450-8089-3f7127023a79" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    31     <MetadataFile FileName="HeuristicLab.PluginInfrastructure2.xsd" MetadataType="Schema" ID="92730854-6687-4242-99b1-ce6d8282968e" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
    32     <MetadataFile FileName="Message1.xsd" MetadataType="Schema" ID="34654b8c-c376-4952-82c5-7a7ea739b2bd" SourceId="1" SourceUrl="net.tcp://10.0.2.15:9000/HiveServer/mex" />
     23    <MetadataFile FileName="service1.wsdl" MetadataType="Wsdl" ID="43f7abbb-1069-4460-b195-ca2cfad87502" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     24    <MetadataFile FileName="service2.xsd" MetadataType="Schema" ID="09a3b5fd-0200-4134-8cb5-ff0716494b94" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     25    <MetadataFile FileName="service3.xsd" MetadataType="Schema" ID="18c6d1c6-fb6b-4748-9cfb-e28ad6f1f524" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     26    <MetadataFile FileName="HeuristicLab.Hive.Contracts.BusinessObjects1.xsd" MetadataType="Schema" ID="f18d1d1a-53c9-43d9-8667-1e3d3c309a26" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     27    <MetadataFile FileName="HeuristicLab.DataAccess1.xsd" MetadataType="Schema" ID="8e533766-2123-4ac5-8c82-b952d5fb6f93" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     28    <MetadataFile FileName="HeuristicLab.Hive.Contracts1.xsd" MetadataType="Schema" ID="a9f321b3-f525-4e81-8c9a-45f99e4add67" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     29    <MetadataFile FileName="Arrays1.xsd" MetadataType="Schema" ID="bf61ad21-e8ff-49de-984d-bc1d09a4b367" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     30    <MetadataFile FileName="System1.xsd" MetadataType="Schema" ID="49213872-cd85-42dc-a191-d1db4c0681e6" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     31    <MetadataFile FileName="HeuristicLab.PluginInfrastructure2.xsd" MetadataType="Schema" ID="dd25c7c9-6881-4201-927d-11dada59c94e" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
     32    <MetadataFile FileName="Message1.xsd" MetadataType="Schema" ID="e6a864c6-eb46-42ab-a431-2ac11273fb64" SourceId="1" SourceUrl="net.tcp://10.0.0.52:9000/HiveServer/mex" />
    3333  </Metadata>
    3434  <Extensions>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/configuration.svcinfo

    r2122 r3203  
    33  <behaviors />
    44  <bindings>
    5     <binding digest="System.ServiceModel.Configuration.NetTcpBindingElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetTcpBinding_IClientFacade&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Streamed&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;reliableSession enabled=&quot;false&quot; inactivityTimeout=&quot;00:10:00&quot; ordered=&quot;true&quot; /&gt;&lt;security mode=&quot;Transport&quot;&gt;&lt;message clientCredentialType=&quot;Windows&quot; /&gt;&lt;transport clientCredentialType=&quot;Windows&quot; protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netTcpBinding" name="NetTcpBinding_IClientFacade" />
     5    <binding digest="System.ServiceModel.Configuration.NetTcpBindingElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089:&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data hostNameComparisonMode=&quot;StrongWildcard&quot; listenBacklog=&quot;10&quot; maxBufferSize=&quot;65536&quot; maxConnections=&quot;10&quot; name=&quot;NetTcpBinding_IClientFacade&quot; transactionFlow=&quot;false&quot; transactionProtocol=&quot;OleTransactions&quot; transferMode=&quot;Streamed&quot;&gt;&lt;readerQuotas maxArrayLength=&quot;16384&quot; maxBytesPerRead=&quot;4096&quot; maxDepth=&quot;32&quot; maxNameTableCharCount=&quot;16384&quot; maxStringContentLength=&quot;8192&quot; /&gt;&lt;reliableSession enabled=&quot;false&quot; inactivityTimeout=&quot;00:10:00&quot; ordered=&quot;true&quot; /&gt;&lt;security mode=&quot;None&quot;&gt;&lt;message clientCredentialType=&quot;Windows&quot; /&gt;&lt;transport clientCredentialType=&quot;Windows&quot; protectionLevel=&quot;EncryptAndSign&quot; /&gt;&lt;/security&gt;&lt;/Data&gt;" bindingType="netTcpBinding" name="NetTcpBinding_IClientFacade" />
    66  </bindings>
    77  <endpoints>
    8     <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;STEFAN-4710DBDB\Stefan&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot;&gt;&lt;identity&gt;&lt;userPrincipalName value=&quot;STEFAN-4710DBDB\Stefan&quot; /&gt;&lt;/identity&gt;&lt;/Data&gt;" contractName="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade" />
     8    <endpoint normalizedDigest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot; /&gt;" digest="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-16&quot;?&gt;&lt;Data address=&quot;net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator&quot; binding=&quot;netTcpBinding&quot; bindingConfiguration=&quot;NetTcpBinding_IClientFacade&quot; contract=&quot;ServerService.IClientFacade&quot; name=&quot;NetTcpBinding_IClientFacade&quot; /&gt;" contractName="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade" />
    99  </endpoints>
    1010</configurationSnapshot>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/configuration91.svcinfo

    r2122 r3203  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="kx3DG0eZsWj8OUKg2cLMJp8jj9s=">
     2<SavedWcfConfigurationInformation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="9.1" CheckSum="vFreNGGBW9Tx4nl3MVFjfcaMtKU=">
    33  <bindingConfigurations>
    44    <bindingConfiguration bindingType="netTcpBinding" name="NetTcpBinding_IClientFacade">
     
    8383        </property>
    8484        <property path="/security/mode" isComplexType="false" isExplicitlyDefined="true" clrType="System.ServiceModel.SecurityMode, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    85           <serializedValue>Transport</serializedValue>
     85          <serializedValue>None</serializedValue>
    8686        </property>
    8787        <property path="/security/transport" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.TcpTransportSecurityElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     
    9393        <property path="/security/transport/protectionLevel" isComplexType="false" isExplicitlyDefined="true" clrType="System.Net.Security.ProtectionLevel, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    9494          <serializedValue>EncryptAndSign</serializedValue>
     95        </property>
     96        <property path="/security/transport/extendedProtectionPolicy" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     97          <serializedValue>System.Security.Authentication.ExtendedProtection.Configuration.ExtendedProtectionPolicyElement</serializedValue>
     98        </property>
     99        <property path="/security/transport/extendedProtectionPolicy/policyEnforcement" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.PolicyEnforcement, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     100          <serializedValue>Never</serializedValue>
     101        </property>
     102        <property path="/security/transport/extendedProtectionPolicy/protectionScenario" isComplexType="false" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.ProtectionScenario, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     103          <serializedValue>TransportSelected</serializedValue>
     104        </property>
     105        <property path="/security/transport/extendedProtectionPolicy/customServiceNames" isComplexType="true" isExplicitlyDefined="false" clrType="System.Security.Authentication.ExtendedProtection.Configuration.ServiceNameElementCollection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     106          <serializedValue>(Collection)</serializedValue>
    95107        </property>
    96108        <property path="/security/message" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.MessageSecurityOverTcpElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     
    107119  </bindingConfigurations>
    108120  <endpoints>
    109     <endpoint name="NetTcpBinding_IClientFacade" contract="ServerService.IClientFacade" bindingType="netTcpBinding" address="net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator" bindingConfiguration="NetTcpBinding_IClientFacade">
     121    <endpoint name="NetTcpBinding_IClientFacade" contract="ServerService.IClientFacade" bindingType="netTcpBinding" address="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator" bindingConfiguration="NetTcpBinding_IClientFacade">
    110122      <properties>
    111123        <property path="/address" isComplexType="false" isExplicitlyDefined="true" clrType="System.Uri, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    112           <serializedValue>net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator</serializedValue>
     124          <serializedValue>net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator</serializedValue>
    113125        </property>
    114126        <property path="/behaviorConfiguration" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     
    136148          <serializedValue>System.ServiceModel.Configuration.UserPrincipalNameElement</serializedValue>
    137149        </property>
    138         <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="true" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
    139           <serializedValue>STEFAN-4710DBDB\Stefan</serializedValue>
     150        <property path="/identity/userPrincipalName/value" isComplexType="false" isExplicitlyDefined="false" clrType="System.String, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
     151          <serializedValue />
    140152        </property>
    141153        <property path="/identity/servicePrincipalName" isComplexType="true" isExplicitlyDefined="false" clrType="System.ServiceModel.Configuration.ServicePrincipalNameElement, System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/service1.wsdl

    r2122 r3203  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="ClientFacade" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
     2<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsap="http://schemas.xmlsoap.org/ws/2004/08/addressing/policy" xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msc="http://schemas.microsoft.com/ws/2005/12/wsdl/contract" xmlns:tns="http://tempuri.org/" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:wsa10="http://www.w3.org/2005/08/addressing" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" name="clientFacade" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
    33  <wsp:Policy wsu:Id="NetTcpBinding_IClientFacade_policy">
    44    <wsp:ExactlyOne>
     
    66        <msb:BinaryEncoding xmlns:msb="http://schemas.microsoft.com/ws/06/2004/mspolicy/netbinary1">
    77        </msb:BinaryEncoding>
    8         <sp:TransportBinding xmlns:sp="http://schemas.xmlsoap.org/ws/2005/07/securitypolicy">
    9           <wsp:Policy>
    10             <sp:TransportToken>
    11               <wsp:Policy>
    12                 <msf:WindowsTransportSecurity xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
    13                   <msf:ProtectionLevel>EncryptAndSign</msf:ProtectionLevel>
    14                 </msf:WindowsTransportSecurity>
    15               </wsp:Policy>
    16             </sp:TransportToken>
    17             <sp:AlgorithmSuite>
    18               <wsp:Policy>
    19                 <sp:Basic256>
    20                 </sp:Basic256>
    21               </wsp:Policy>
    22             </sp:AlgorithmSuite>
    23             <sp:Layout>
    24               <wsp:Policy>
    25                 <sp:Strict>
    26                 </sp:Strict>
    27               </wsp:Policy>
    28             </sp:Layout>
    29           </wsp:Policy>
    30         </sp:TransportBinding>
    318        <msf:Streamed xmlns:msf="http://schemas.microsoft.com/ws/2006/05/framing/policy">
    329        </msf:Streamed>
     
    6744    <wsdl:part name="parameters" element="tns:SendJobResponse" />
    6845  </wsdl:message>
    69   <wsdl:message name="IClientFacade_SendSerializedJob_InputMessage">
    70     <wsdl:part name="parameters" element="tns:SendSerializedJob" />
    71   </wsdl:message>
    72   <wsdl:message name="IClientFacade_SendSerializedJob_OutputMessage">
    73     <wsdl:part name="parameters" element="tns:SendSerializedJobResponse" />
    74   </wsdl:message>
    7546  <wsdl:message name="IClientFacade_StoreFinishedJobResult_InputMessage">
    7647    <wsdl:part name="parameters" element="tns:StoreFinishedJobResult" />
     
    10273  <wsdl:message name="IClientFacade_SendPlugins_OutputMessage">
    10374    <wsdl:part name="parameters" element="tns:SendPluginsResponse" />
     75  </wsdl:message>
     76  <wsdl:message name="IClientFacade_GetCalendar_InputMessage">
     77    <wsdl:part name="parameters" element="tns:GetCalendar" />
     78  </wsdl:message>
     79  <wsdl:message name="IClientFacade_GetCalendar_OutputMessage">
     80    <wsdl:part name="parameters" element="tns:GetCalendarResponse" />
     81  </wsdl:message>
     82  <wsdl:message name="IClientFacade_SetCalendarStatus_InputMessage">
     83    <wsdl:part name="parameters" element="tns:SetCalendarStatus" />
     84  </wsdl:message>
     85  <wsdl:message name="IClientFacade_SetCalendarStatus_OutputMessage">
     86    <wsdl:part name="parameters" element="tns:SetCalendarStatusResponse" />
    10487  </wsdl:message>
    10588  <wsdl:message name="IClientFacade_SendStreamedJob_InputMessage">
     
    140123      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendJobResponse" message="tns:IClientFacade_SendJob_OutputMessage" />
    141124    </wsdl:operation>
    142     <wsdl:operation name="SendSerializedJob">
    143       <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendSerializedJob" message="tns:IClientFacade_SendSerializedJob_InputMessage" />
    144       <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendSerializedJobResponse" message="tns:IClientFacade_SendSerializedJob_OutputMessage" />
    145     </wsdl:operation>
    146125    <wsdl:operation name="StoreFinishedJobResult">
    147126      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult" message="tns:IClientFacade_StoreFinishedJobResult_InputMessage" />
     
    163142      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SendPlugins" message="tns:IClientFacade_SendPlugins_InputMessage" />
    164143      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SendPluginsResponse" message="tns:IClientFacade_SendPlugins_OutputMessage" />
     144    </wsdl:operation>
     145    <wsdl:operation name="GetCalendar">
     146      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/GetCalendar" message="tns:IClientFacade_GetCalendar_InputMessage" />
     147      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/GetCalendarResponse" message="tns:IClientFacade_GetCalendar_OutputMessage" />
     148    </wsdl:operation>
     149    <wsdl:operation name="SetCalendarStatus">
     150      <wsdl:input wsaw:Action="http://tempuri.org/IClientCommunicator/SetCalendarStatus" message="tns:IClientFacade_SetCalendarStatus_InputMessage" />
     151      <wsdl:output wsaw:Action="http://tempuri.org/IClientCommunicator/SetCalendarStatusResponse" message="tns:IClientFacade_SetCalendarStatus_OutputMessage" />
    165152    </wsdl:operation>
    166153    <wsdl:operation name="SendStreamedJob">
     
    212199      </wsdl:output>
    213200    </wsdl:operation>
    214     <wsdl:operation name="SendSerializedJob">
    215       <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SendSerializedJob" style="document" />
    216       <wsdl:input>
    217         <soap12:body use="literal" />
    218       </wsdl:input>
    219       <wsdl:output>
    220         <soap12:body use="literal" />
    221       </wsdl:output>
    222     </wsdl:operation>
    223201    <wsdl:operation name="StoreFinishedJobResult">
    224202      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/StoreFinishedJobResult" style="document" />
     
    266244      </wsdl:output>
    267245    </wsdl:operation>
     246    <wsdl:operation name="GetCalendar">
     247      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/GetCalendar" style="document" />
     248      <wsdl:input>
     249        <soap12:body use="literal" />
     250      </wsdl:input>
     251      <wsdl:output>
     252        <soap12:body use="literal" />
     253      </wsdl:output>
     254    </wsdl:operation>
     255    <wsdl:operation name="SetCalendarStatus">
     256      <soap12:operation soapAction="http://tempuri.org/IClientCommunicator/SetCalendarStatus" style="document" />
     257      <wsdl:input>
     258        <soap12:body use="literal" />
     259      </wsdl:input>
     260      <wsdl:output>
     261        <soap12:body use="literal" />
     262      </wsdl:output>
     263    </wsdl:operation>
    268264    <wsdl:operation name="SendStreamedJob">
    269265      <soap12:operation soapAction="http://tempuri.org/IClientFacade/SendStreamedJob" style="document" />
     
    303299    </wsdl:operation>
    304300  </wsdl:binding>
    305   <wsdl:service name="ClientFacade">
     301  <wsdl:service name="clientFacade">
    306302    <wsdl:port name="NetTcpBinding_IClientFacade" binding="tns:NetTcpBinding_IClientFacade">
    307       <soap12:address location="net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator" />
     303      <soap12:address location="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator" />
    308304      <wsa10:EndpointReference>
    309         <wsa10:Address>net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator</wsa10:Address>
    310         <Identity xmlns="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
    311           <Upn>STEFAN-4710DBDB\Stefan</Upn>
    312         </Identity>
     305        <wsa10:Address>net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator</wsa10:Address>
    313306      </wsa10:EndpointReference>
    314307    </wsdl:port>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/Service References/ServerService/service2.xsd

    r2122 r3203  
    99    <xs:complexType>
    1010      <xs:sequence>
    11         <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="clientInfo" nillable="true" type="q1:ClientInfo" />
     11        <xs:element xmlns:q1="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="clientInfo" nillable="true" type="q1:ClientDto" />
    1212      </xs:sequence>
    1313    </xs:complexType>
     
    4848    </xs:complexType>
    4949  </xs:element>
    50   <xs:element name="SendSerializedJob">
     50  <xs:element name="StoreFinishedJobResult">
    5151    <xs:complexType>
    5252      <xs:sequence>
    5353        <xs:element xmlns:q7="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q7:guid" />
    54       </xs:sequence>
    55     </xs:complexType>
    56   </xs:element>
    57   <xs:element name="SendSerializedJobResponse">
    58     <xs:complexType>
    59       <xs:sequence>
    60         <xs:element xmlns:q8="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendSerializedJobResult" nillable="true" type="q8:ResponseSerializedJob" />
    61       </xs:sequence>
    62     </xs:complexType>
    63   </xs:element>
    64   <xs:element name="StoreFinishedJobResult">
    65     <xs:complexType>
    66       <xs:sequence>
    67         <xs:element xmlns:q9="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q9:guid" />
    68         <xs:element xmlns:q10="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q10:guid" />
     54        <xs:element xmlns:q8="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q8:guid" />
    6955        <xs:element minOccurs="0" name="result" nillable="true" type="xs:base64Binary" />
    7056        <xs:element minOccurs="0" name="percentage" type="xs:double" />
    71         <xs:element xmlns:q11="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q11:Exception" />
     57        <xs:element xmlns:q9="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q9:Exception" />
    7258      </xs:sequence>
    7359    </xs:complexType>
     
    7662    <xs:complexType>
    7763      <xs:sequence>
    78         <xs:element xmlns:q12="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultResult" nillable="true" type="q12:ResponseResultReceived" />
     64        <xs:element xmlns:q10="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultResult" nillable="true" type="q10:ResponseResultReceived" />
    7965      </xs:sequence>
    8066    </xs:complexType>
     
    8369    <xs:complexType>
    8470      <xs:sequence>
    85         <xs:element xmlns:q13="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q13:guid" />
    86         <xs:element xmlns:q14="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q14:guid" />
     71        <xs:element xmlns:q11="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q11:guid" />
     72        <xs:element xmlns:q12="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q12:guid" />
    8773        <xs:element minOccurs="0" name="result" nillable="true" type="xs:base64Binary" />
    8874        <xs:element minOccurs="0" name="percentage" type="xs:double" />
    89         <xs:element xmlns:q15="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q15:Exception" />
     75        <xs:element xmlns:q13="http://schemas.datacontract.org/2004/07/System" minOccurs="0" name="exception" nillable="true" type="q13:Exception" />
    9076      </xs:sequence>
    9177    </xs:complexType>
     
    9480    <xs:complexType>
    9581      <xs:sequence>
    96         <xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotResult" nillable="true" type="q16:ResponseResultReceived" />
     82        <xs:element xmlns:q14="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotResult" nillable="true" type="q14:ResponseResultReceived" />
    9783      </xs:sequence>
    9884    </xs:complexType>
     
    10187    <xs:complexType>
    10288      <xs:sequence>
    103         <xs:element xmlns:q17="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q17:guid" />
     89        <xs:element xmlns:q15="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q15:guid" />
    10490      </xs:sequence>
    10591    </xs:complexType>
     
    10894    <xs:complexType>
    10995      <xs:sequence>
    110         <xs:element xmlns:q18="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LogoutResult" nillable="true" type="q18:Response" />
     96        <xs:element xmlns:q16="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="LogoutResult" nillable="true" type="q16:Response" />
    11197      </xs:sequence>
    11298    </xs:complexType>
     
    115101    <xs:complexType>
    116102      <xs:sequence>
    117         <xs:element xmlns:q19="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q19:guid" />
     103        <xs:element xmlns:q17="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="jobId" type="q17:guid" />
    118104      </xs:sequence>
    119105    </xs:complexType>
     
    122108    <xs:complexType>
    123109      <xs:sequence>
    124         <xs:element xmlns:q20="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="IsJobStillNeededResult" nillable="true" type="q20:Response" />
     110        <xs:element xmlns:q18="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="IsJobStillNeededResult" nillable="true" type="q18:Response" />
    125111      </xs:sequence>
    126112    </xs:complexType>
     
    129115    <xs:complexType>
    130116      <xs:sequence>
    131         <xs:element xmlns:q21="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q21:ArrayOfHivePluginInfo" />
     117        <xs:element xmlns:q19="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q19:ArrayOfHivePluginInfoDto" />
    132118      </xs:sequence>
    133119    </xs:complexType>
     
    136122    <xs:complexType>
    137123      <xs:sequence>
    138         <xs:element xmlns:q22="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendPluginsResult" nillable="true" type="q22:ResponsePlugin" />
     124        <xs:element xmlns:q20="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SendPluginsResult" nillable="true" type="q20:ResponsePlugin" />
     125      </xs:sequence>
     126    </xs:complexType>
     127  </xs:element>
     128  <xs:element name="GetCalendar">
     129    <xs:complexType>
     130      <xs:sequence>
     131        <xs:element xmlns:q21="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q21:guid" />
     132      </xs:sequence>
     133    </xs:complexType>
     134  </xs:element>
     135  <xs:element name="GetCalendarResponse">
     136    <xs:complexType>
     137      <xs:sequence>
     138        <xs:element xmlns:q22="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="GetCalendarResult" nillable="true" type="q22:ResponseCalendar" />
     139      </xs:sequence>
     140    </xs:complexType>
     141  </xs:element>
     142  <xs:element name="SetCalendarStatus">
     143    <xs:complexType>
     144      <xs:sequence>
     145        <xs:element xmlns:q23="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q23:guid" />
     146        <xs:element xmlns:q24="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="state" type="q24:CalendarState" />
     147      </xs:sequence>
     148    </xs:complexType>
     149  </xs:element>
     150  <xs:element name="SetCalendarStatusResponse">
     151    <xs:complexType>
     152      <xs:sequence>
     153        <xs:element xmlns:q25="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="SetCalendarStatusResult" nillable="true" type="q25:Response" />
    139154      </xs:sequence>
    140155    </xs:complexType>
     
    143158    <xs:complexType>
    144159      <xs:sequence>
    145         <xs:element xmlns:q23="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q23:guid" />
     160        <xs:element xmlns:q26="http://schemas.microsoft.com/2003/10/Serialization/" minOccurs="0" name="clientId" type="q26:guid" />
    146161      </xs:sequence>
    147162    </xs:complexType>
     
    150165    <xs:complexType>
    151166      <xs:sequence>
    152         <xs:element xmlns:q24="http://schemas.microsoft.com/Message" name="SendStreamedJobResult" type="q24:StreamBody" />
     167        <xs:element xmlns:q27="http://schemas.microsoft.com/Message" name="SendStreamedJobResult" type="q27:StreamBody" />
    153168      </xs:sequence>
    154169    </xs:complexType>
     
    157172    <xs:complexType>
    158173      <xs:sequence>
    159         <xs:element xmlns:q25="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q25:ArrayOfHivePluginInfo" />
     174        <xs:element xmlns:q28="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts.BusinessObjects" minOccurs="0" name="pluginList" nillable="true" type="q28:ArrayOfHivePluginInfoDto" />
    160175      </xs:sequence>
    161176    </xs:complexType>
     
    164179    <xs:complexType>
    165180      <xs:sequence>
    166         <xs:element xmlns:q26="http://schemas.microsoft.com/Message" name="SendStreamedPluginsResult" type="q26:StreamBody" />
     181        <xs:element xmlns:q29="http://schemas.microsoft.com/Message" name="SendStreamedPluginsResult" type="q29:StreamBody" />
    167182      </xs:sequence>
    168183    </xs:complexType>
     
    171186    <xs:complexType>
    172187      <xs:sequence>
    173         <xs:element xmlns:q27="http://schemas.microsoft.com/Message" name="stream" type="q27:StreamBody" />
     188        <xs:element xmlns:q30="http://schemas.microsoft.com/Message" name="stream" type="q30:StreamBody" />
    174189      </xs:sequence>
    175190    </xs:complexType>
     
    178193    <xs:complexType>
    179194      <xs:sequence>
    180         <xs:element xmlns:q28="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultStreamedResult" nillable="true" type="q28:ResponseResultReceived" />
     195        <xs:element xmlns:q31="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="StoreFinishedJobResultStreamedResult" nillable="true" type="q31:ResponseResultReceived" />
    181196      </xs:sequence>
    182197    </xs:complexType>
     
    185200    <xs:complexType>
    186201      <xs:sequence>
    187         <xs:element xmlns:q29="http://schemas.microsoft.com/Message" name="stream" type="q29:StreamBody" />
     202        <xs:element xmlns:q32="http://schemas.microsoft.com/Message" name="stream" type="q32:StreamBody" />
    188203      </xs:sequence>
    189204    </xs:complexType>
     
    192207    <xs:complexType>
    193208      <xs:sequence>
    194         <xs:element xmlns:q30="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotStreamedResult" nillable="true" type="q30:ResponseResultReceived" />
     209        <xs:element xmlns:q33="http://schemas.datacontract.org/2004/07/HeuristicLab.Hive.Contracts" minOccurs="0" name="ProcessSnapshotStreamedResult" nillable="true" type="q33:ResponseResultReceived" />
    195210      </xs:sequence>
    196211    </xs:complexType>
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/WcfService.cs

    r3011 r3203  
    395395      }
    396396    }
     397
     398    public ResponseCalendar GetCalendarSync(Guid clientId) {
     399      try {
     400        return proxy.GetCalendar(clientId);       
     401      }
     402      catch (Exception e) {
     403        HandleNetworkError(e);
     404        return null;
     405      }
     406    }
     407
     408    public Response SetCalendarStatus (Guid clientId, CalendarState state) {
     409      try {
     410        return proxy.SetCalendarStatus(clientId, state);       
     411      } catch (Exception e) {
     412        HandleNetworkError(e);
     413        return null;
     414      }
     415    }
     416
    397417  }
    398418}
  • trunk/sources/HeuristicLab.Hive.Client.Communication/3.2/app.config

    r2122 r3203  
    1414                    <reliableSession ordered="true" inactivityTimeout="00:10:00"
    1515                        enabled="false" />
    16                     <security mode="Transport">
    17                         <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
     16                    <security mode="None">
     17                        <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
     18                            <extendedProtectionPolicy policyEnforcement="Never" />
     19                        </transport>
    1820                        <message clientCredentialType="Windows" />
    1921                    </security>
     
    2224        </bindings>
    2325        <client>
    24             <endpoint address="net.tcp://10.0.2.15:9000/HiveServer/ClientCommunicator"
     26            <endpoint address="net.tcp://10.0.0.52:9000/HiveServer/ClientCommunicator"
    2527                binding="netTcpBinding" bindingConfiguration="NetTcpBinding_IClientFacade"
    26                 contract="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade">
    27                 <identity>
    28                     <userPrincipalName value="STEFAN-4710DBDB\Stefan" />
    29                 </identity>
    30             </endpoint>
     28                contract="ServerService.IClientFacade" name="NetTcpBinding_IClientFacade" />
    3129        </client>
    3230    </system.serviceModel>
  • trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.Designer.cs

    r2069 r3203  
    4545    /// </summary>
    4646    private void InitializeComponent() {
    47         this.components = new System.ComponentModel.Container();
    48         Calendar.DrawTool drawTool1 = new Calendar.DrawTool();
    49         System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveClientConsole));
    50         this.dvOnline = new Calendar.DayView();
    51         this.tcClientConsole = new System.Windows.Forms.TabControl();
    52         this.tpConnection = new System.Windows.Forms.TabPage();
    53         this.gbServerConnection = new System.Windows.Forms.GroupBox();
    54         this.btn_clientShutdown = new System.Windows.Forms.Button();
    55         this.btnDisconnect = new System.Windows.Forms.Button();
    56         this.btConnect = new System.Windows.Forms.Button();
    57         this.tbPort = new System.Windows.Forms.TextBox();
    58         this.tbIPAdress = new System.Windows.Forms.TextBox();
    59         this.lbServerIPCaption = new System.Windows.Forms.Label();
    60         this.lbPortCaption = new System.Windows.Forms.Label();
    61         this.gbJobCommon = new System.Windows.Forms.GroupBox();
    62         this.lvJobDetail = new System.Windows.Forms.ListView();
    63         this.chJobId = new System.Windows.Forms.ColumnHeader();
    64         this.chSince = new System.Windows.Forms.ColumnHeader();
    65         this.chProgress = new System.Windows.Forms.ColumnHeader();
    66         this.gbCommon = new System.Windows.Forms.GroupBox();
    67         this.pbGraph = new System.Windows.Forms.PictureBox();
    68         this.lbJobsAborted = new System.Windows.Forms.Label();
    69         this.lbJobdone = new System.Windows.Forms.Label();
    70         this.lbJobsFetched = new System.Windows.Forms.Label();
    71         this.lbGuid = new System.Windows.Forms.Label();
    72         this.lbGuidCaption = new System.Windows.Forms.Label();
    73         this.lbCs = new System.Windows.Forms.Label();
    74         this.lbConnectionStatus = new System.Windows.Forms.Label();
    75         this.lbConnectionStatusCaption = new System.Windows.Forms.Label();
    76         this.lbJobsAbortedCaption = new System.Windows.Forms.Label();
    77         this.lbJobdoneCaption = new System.Windows.Forms.Label();
    78         this.lbJobsFetchedCaption = new System.Windows.Forms.Label();
    79         this.lbCsCaption = new System.Windows.Forms.Label();
    80         this.gbEventLog = new System.Windows.Forms.GroupBox();
    81         this.txtLog = new System.Windows.Forms.TextBox();
    82         this.tabPage2 = new System.Windows.Forms.TabPage();
    83         this.btnSaveCal = new System.Windows.Forms.Button();
    84         this.groupBox1 = new System.Windows.Forms.GroupBox();
    85         this.txttimeTo = new System.Windows.Forms.DateTimePicker();
    86         this.txttimeFrom = new System.Windows.Forms.DateTimePicker();
    87         this.dtpTo = new System.Windows.Forms.DateTimePicker();
    88         this.dtpFrom = new System.Windows.Forms.DateTimePicker();
    89         this.chbade = new System.Windows.Forms.CheckBox();
    90         this.btnRecurrence = new System.Windows.Forms.Button();
    91         this.btbDelete = new System.Windows.Forms.Button();
    92         this.label2 = new System.Windows.Forms.Label();
    93         this.label1 = new System.Windows.Forms.Label();
    94         this.btCreate = new System.Windows.Forms.Button();
    95         this.mcOnline = new System.Windows.Forms.MonthCalendar();
    96         this.pictureBox1 = new System.Windows.Forms.PictureBox();
    97         this.ilEventLog = new System.Windows.Forms.ImageList(this.components);
    98         this.tcClientConsole.SuspendLayout();
    99         this.tpConnection.SuspendLayout();
    100         this.gbServerConnection.SuspendLayout();
    101         this.gbJobCommon.SuspendLayout();
    102         this.gbCommon.SuspendLayout();
    103         ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).BeginInit();
    104         this.gbEventLog.SuspendLayout();
    105         this.tabPage2.SuspendLayout();
    106         this.groupBox1.SuspendLayout();
    107         ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
    108         this.SuspendLayout();
    109         //
    110         // dvOnline
    111         //
    112         drawTool1.DayView = this.dvOnline;
    113         this.dvOnline.ActiveTool = drawTool1;
    114         this.dvOnline.AmPmDisplay = false;
    115         this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
    116         this.dvOnline.AppointmentHeightMode = Calendar.AppHeightDrawMode.TrueHeightAll;
    117         this.dvOnline.DayHeadersHeight = 15;
    118         this.dvOnline.DaysToShow = 7;
    119         this.dvOnline.DrawAllAppBorder = false;
    120         this.dvOnline.EnableDurationDisplay = false;
    121         this.dvOnline.EnableRoundedCorners = false;
    122         this.dvOnline.EnableShadows = false;
    123         this.dvOnline.EnableTimeIndicator = false;
    124         this.dvOnline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
    125         this.dvOnline.Location = new System.Drawing.Point(9, 179);
    126         this.dvOnline.MinHalfHourApp = false;
    127         this.dvOnline.Name = "dvOnline";
    128         this.dvOnline.SelectionEnd = new System.DateTime(((long)(0)));
    129         this.dvOnline.SelectionStart = new System.DateTime(((long)(0)));
    130         this.dvOnline.Size = new System.Drawing.Size(823, 225);
    131         this.dvOnline.StartDate = new System.DateTime(((long)(0)));
    132         this.dvOnline.TabIndex = 18;
    133         this.dvOnline.OnSelectionChanged += new System.EventHandler<System.EventArgs>(this.dvOnline_OnSelectionChanged);
    134         //
    135         // tcClientConsole
    136         //
    137         this.tcClientConsole.Controls.Add(this.tpConnection);
    138         this.tcClientConsole.Controls.Add(this.tabPage2);
    139         this.tcClientConsole.Dock = System.Windows.Forms.DockStyle.Fill;
    140         this.tcClientConsole.ItemSize = new System.Drawing.Size(410, 21);
    141         this.tcClientConsole.Location = new System.Drawing.Point(0, 0);
    142         this.tcClientConsole.Name = "tcClientConsole";
    143         this.tcClientConsole.SelectedIndex = 0;
    144         this.tcClientConsole.Size = new System.Drawing.Size(853, 438);
    145         this.tcClientConsole.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
    146         this.tcClientConsole.TabIndex = 1;
    147         //
    148         // tpConnection
    149         //
    150         this.tpConnection.Controls.Add(this.gbServerConnection);
    151         this.tpConnection.Controls.Add(this.gbJobCommon);
    152         this.tpConnection.Controls.Add(this.gbCommon);
    153         this.tpConnection.Controls.Add(this.gbEventLog);
    154         this.tpConnection.Location = new System.Drawing.Point(4, 25);
    155         this.tpConnection.Name = "tpConnection";
    156         this.tpConnection.Padding = new System.Windows.Forms.Padding(3);
    157         this.tpConnection.RightToLeft = System.Windows.Forms.RightToLeft.No;
    158         this.tpConnection.Size = new System.Drawing.Size(845, 409);
    159         this.tpConnection.TabIndex = 0;
    160         this.tpConnection.Text = "Status";
    161         this.tpConnection.UseVisualStyleBackColor = true;
    162         //
    163         // gbServerConnection
    164         //
    165         this.gbServerConnection.Controls.Add(this.btn_clientShutdown);
    166         this.gbServerConnection.Controls.Add(this.btnDisconnect);
    167         this.gbServerConnection.Controls.Add(this.btConnect);
    168         this.gbServerConnection.Controls.Add(this.tbPort);
    169         this.gbServerConnection.Controls.Add(this.tbIPAdress);
    170         this.gbServerConnection.Controls.Add(this.lbServerIPCaption);
    171         this.gbServerConnection.Controls.Add(this.lbPortCaption);
    172         this.gbServerConnection.Location = new System.Drawing.Point(346, 6);
    173         this.gbServerConnection.Name = "gbServerConnection";
    174         this.gbServerConnection.Size = new System.Drawing.Size(216, 164);
    175         this.gbServerConnection.TabIndex = 15;
    176         this.gbServerConnection.TabStop = false;
    177         this.gbServerConnection.Text = "Connection";
    178         //
    179         // btn_clientShutdown
    180         //
    181         this.btn_clientShutdown.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.exit_48;
    182         this.btn_clientShutdown.Location = new System.Drawing.Point(144, 101);
    183         this.btn_clientShutdown.Name = "btn_clientShutdown";
    184         this.btn_clientShutdown.Size = new System.Drawing.Size(57, 57);
    185         this.btn_clientShutdown.TabIndex = 8;
    186         this.btn_clientShutdown.UseVisualStyleBackColor = true;
    187         this.btn_clientShutdown.Click += new System.EventHandler(this.btn_clientShutdown_Click);
    188         //
    189         // btnDisconnect
    190         //
    191         this.btnDisconnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Disaster_warning_48;
    192         this.btnDisconnect.Location = new System.Drawing.Point(79, 101);
    193         this.btnDisconnect.Name = "btnDisconnect";
    194         this.btnDisconnect.Size = new System.Drawing.Size(57, 57);
    195         this.btnDisconnect.TabIndex = 5;
    196         this.btnDisconnect.UseVisualStyleBackColor = true;
    197         this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
    198         //
    199         // btConnect
    200         //
    201         this.btConnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Global_network_48;
    202         this.btConnect.Location = new System.Drawing.Point(14, 101);
    203         this.btConnect.Name = "btConnect";
    204         this.btConnect.Size = new System.Drawing.Size(57, 57);
    205         this.btConnect.TabIndex = 4;
    206         this.btConnect.UseVisualStyleBackColor = true;
    207         this.btConnect.Click += new System.EventHandler(this.btConnect_Click);
    208         //
    209         // tbPort
    210         //
    211         this.tbPort.Location = new System.Drawing.Point(74, 59);
    212         this.tbPort.Name = "tbPort";
    213         this.tbPort.Size = new System.Drawing.Size(65, 20);
    214         this.tbPort.TabIndex = 3;
    215         this.tbPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
    216         //
    217         // tbIPAdress
    218         //
    219         this.tbIPAdress.Location = new System.Drawing.Point(74, 25);
    220         this.tbIPAdress.Name = "tbIPAdress";
    221         this.tbIPAdress.Size = new System.Drawing.Size(93, 20);
    222         this.tbIPAdress.TabIndex = 2;
    223         this.tbIPAdress.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
    224         //
    225         // lbServerIPCaption
    226         //
    227         this.lbServerIPCaption.AutoSize = true;
    228         this.lbServerIPCaption.Location = new System.Drawing.Point(17, 28);
    229         this.lbServerIPCaption.Name = "lbServerIPCaption";
    230         this.lbServerIPCaption.Size = new System.Drawing.Size(60, 13);
    231         this.lbServerIPCaption.TabIndex = 0;
    232         this.lbServerIPCaption.Text = "IP address:";
    233         //
    234         // lbPortCaption
    235         //
    236         this.lbPortCaption.AutoSize = true;
    237         this.lbPortCaption.Location = new System.Drawing.Point(48, 62);
    238         this.lbPortCaption.Name = "lbPortCaption";
    239         this.lbPortCaption.Size = new System.Drawing.Size(29, 13);
    240         this.lbPortCaption.TabIndex = 1;
    241         this.lbPortCaption.Text = "Port:";
    242         //
    243         // gbJobCommon
    244         //
    245         this.gbJobCommon.Controls.Add(this.lvJobDetail);
    246         this.gbJobCommon.Location = new System.Drawing.Point(568, 6);
    247         this.gbJobCommon.Name = "gbJobCommon";
    248         this.gbJobCommon.Size = new System.Drawing.Size(269, 164);
    249         this.gbJobCommon.TabIndex = 13;
    250         this.gbJobCommon.TabStop = false;
    251         this.gbJobCommon.Text = "Jobs detail";
    252         //
    253         // lvJobDetail
    254         //
    255         this.lvJobDetail.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
     47      this.components = new System.ComponentModel.Container();
     48      Calendar.DrawTool drawTool2 = new Calendar.DrawTool();
     49      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveClientConsole));
     50      this.dvOnline = new Calendar.DayView();
     51      this.tcClientConsole = new System.Windows.Forms.TabControl();
     52      this.tpConnection = new System.Windows.Forms.TabPage();
     53      this.gbServerConnection = new System.Windows.Forms.GroupBox();
     54      this.btn_clientShutdown = new System.Windows.Forms.Button();
     55      this.btnDisconnect = new System.Windows.Forms.Button();
     56      this.btConnect = new System.Windows.Forms.Button();
     57      this.tbPort = new System.Windows.Forms.TextBox();
     58      this.tbIPAdress = new System.Windows.Forms.TextBox();
     59      this.lbServerIPCaption = new System.Windows.Forms.Label();
     60      this.lbPortCaption = new System.Windows.Forms.Label();
     61      this.gbJobCommon = new System.Windows.Forms.GroupBox();
     62      this.lvJobDetail = new System.Windows.Forms.ListView();
     63      this.chJobId = new System.Windows.Forms.ColumnHeader();
     64      this.chSince = new System.Windows.Forms.ColumnHeader();
     65      this.chProgress = new System.Windows.Forms.ColumnHeader();
     66      this.gbCommon = new System.Windows.Forms.GroupBox();
     67      this.pbGraph = new System.Windows.Forms.PictureBox();
     68      this.lbJobsAborted = new System.Windows.Forms.Label();
     69      this.lbJobdone = new System.Windows.Forms.Label();
     70      this.lbJobsFetched = new System.Windows.Forms.Label();
     71      this.lbGuid = new System.Windows.Forms.Label();
     72      this.lbGuidCaption = new System.Windows.Forms.Label();
     73      this.lbCs = new System.Windows.Forms.Label();
     74      this.lbConnectionStatus = new System.Windows.Forms.Label();
     75      this.lbConnectionStatusCaption = new System.Windows.Forms.Label();
     76      this.lbJobsAbortedCaption = new System.Windows.Forms.Label();
     77      this.lbJobdoneCaption = new System.Windows.Forms.Label();
     78      this.lbJobsFetchedCaption = new System.Windows.Forms.Label();
     79      this.lbCsCaption = new System.Windows.Forms.Label();
     80      this.gbEventLog = new System.Windows.Forms.GroupBox();
     81      this.txtLog = new System.Windows.Forms.TextBox();
     82      this.tabPage2 = new System.Windows.Forms.TabPage();
     83      this.btnSaveCal = new System.Windows.Forms.Button();
     84      this.groupBox1 = new System.Windows.Forms.GroupBox();
     85      this.txttimeTo = new System.Windows.Forms.DateTimePicker();
     86      this.txttimeFrom = new System.Windows.Forms.DateTimePicker();
     87      this.dtpTo = new System.Windows.Forms.DateTimePicker();
     88      this.dtpFrom = new System.Windows.Forms.DateTimePicker();
     89      this.chbade = new System.Windows.Forms.CheckBox();
     90      this.btnRecurrence = new System.Windows.Forms.Button();
     91      this.btbDelete = new System.Windows.Forms.Button();
     92      this.label2 = new System.Windows.Forms.Label();
     93      this.label1 = new System.Windows.Forms.Label();
     94      this.btCreate = new System.Windows.Forms.Button();
     95      this.mcOnline = new System.Windows.Forms.MonthCalendar();
     96      this.pictureBox1 = new System.Windows.Forms.PictureBox();
     97      this.ilEventLog = new System.Windows.Forms.ImageList(this.components);
     98      this.btnUpdateCalender = new System.Windows.Forms.Button();
     99      this.tcClientConsole.SuspendLayout();
     100      this.tpConnection.SuspendLayout();
     101      this.gbServerConnection.SuspendLayout();
     102      this.gbJobCommon.SuspendLayout();
     103      this.gbCommon.SuspendLayout();
     104      ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).BeginInit();
     105      this.gbEventLog.SuspendLayout();
     106      this.tabPage2.SuspendLayout();
     107      this.groupBox1.SuspendLayout();
     108      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
     109      this.SuspendLayout();
     110      //
     111      // dvOnline
     112      //
     113      drawTool2.DayView = this.dvOnline;
     114      this.dvOnline.ActiveTool = drawTool2;
     115      this.dvOnline.AmPmDisplay = false;
     116      this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
     117      this.dvOnline.AppointmentHeightMode = Calendar.AppHeightDrawMode.TrueHeightAll;
     118      this.dvOnline.DayHeadersHeight = 15;
     119      this.dvOnline.DaysToShow = 7;
     120      this.dvOnline.DrawAllAppBorder = false;
     121      this.dvOnline.EnableDurationDisplay = false;
     122      this.dvOnline.EnableRoundedCorners = false;
     123      this.dvOnline.EnableShadows = false;
     124      this.dvOnline.EnableTimeIndicator = false;
     125      this.dvOnline.Font = new System.Drawing.Font("Microsoft Sans Serif", 8F);
     126      this.dvOnline.Location = new System.Drawing.Point(9, 179);
     127      this.dvOnline.MinHalfHourApp = false;
     128      this.dvOnline.Name = "dvOnline";
     129      this.dvOnline.SelectionEnd = new System.DateTime(((long)(0)));
     130      this.dvOnline.SelectionStart = new System.DateTime(((long)(0)));
     131      this.dvOnline.Size = new System.Drawing.Size(823, 225);
     132      this.dvOnline.StartDate = new System.DateTime(((long)(0)));
     133      this.dvOnline.TabIndex = 18;
     134      this.dvOnline.OnSelectionChanged += new System.EventHandler<System.EventArgs>(this.dvOnline_OnSelectionChanged);
     135      //
     136      // tcClientConsole
     137      //
     138      this.tcClientConsole.Controls.Add(this.tpConnection);
     139      this.tcClientConsole.Controls.Add(this.tabPage2);
     140      this.tcClientConsole.Dock = System.Windows.Forms.DockStyle.Fill;
     141      this.tcClientConsole.ItemSize = new System.Drawing.Size(410, 21);
     142      this.tcClientConsole.Location = new System.Drawing.Point(0, 0);
     143      this.tcClientConsole.Name = "tcClientConsole";
     144      this.tcClientConsole.SelectedIndex = 0;
     145      this.tcClientConsole.Size = new System.Drawing.Size(853, 438);
     146      this.tcClientConsole.SizeMode = System.Windows.Forms.TabSizeMode.Fixed;
     147      this.tcClientConsole.TabIndex = 1;
     148      //
     149      // tpConnection
     150      //
     151      this.tpConnection.Controls.Add(this.gbServerConnection);
     152      this.tpConnection.Controls.Add(this.gbJobCommon);
     153      this.tpConnection.Controls.Add(this.gbCommon);
     154      this.tpConnection.Controls.Add(this.gbEventLog);
     155      this.tpConnection.Location = new System.Drawing.Point(4, 25);
     156      this.tpConnection.Name = "tpConnection";
     157      this.tpConnection.Padding = new System.Windows.Forms.Padding(3);
     158      this.tpConnection.RightToLeft = System.Windows.Forms.RightToLeft.No;
     159      this.tpConnection.Size = new System.Drawing.Size(845, 409);
     160      this.tpConnection.TabIndex = 0;
     161      this.tpConnection.Text = "Status";
     162      this.tpConnection.UseVisualStyleBackColor = true;
     163      //
     164      // gbServerConnection
     165      //
     166      this.gbServerConnection.Controls.Add(this.btn_clientShutdown);
     167      this.gbServerConnection.Controls.Add(this.btnDisconnect);
     168      this.gbServerConnection.Controls.Add(this.btConnect);
     169      this.gbServerConnection.Controls.Add(this.tbPort);
     170      this.gbServerConnection.Controls.Add(this.tbIPAdress);
     171      this.gbServerConnection.Controls.Add(this.lbServerIPCaption);
     172      this.gbServerConnection.Controls.Add(this.lbPortCaption);
     173      this.gbServerConnection.Location = new System.Drawing.Point(346, 6);
     174      this.gbServerConnection.Name = "gbServerConnection";
     175      this.gbServerConnection.Size = new System.Drawing.Size(216, 164);
     176      this.gbServerConnection.TabIndex = 15;
     177      this.gbServerConnection.TabStop = false;
     178      this.gbServerConnection.Text = "Connection";
     179      //
     180      // btn_clientShutdown
     181      //
     182      this.btn_clientShutdown.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.exit_48;
     183      this.btn_clientShutdown.Location = new System.Drawing.Point(144, 101);
     184      this.btn_clientShutdown.Name = "btn_clientShutdown";
     185      this.btn_clientShutdown.Size = new System.Drawing.Size(57, 57);
     186      this.btn_clientShutdown.TabIndex = 8;
     187      this.btn_clientShutdown.UseVisualStyleBackColor = true;
     188      this.btn_clientShutdown.Click += new System.EventHandler(this.btn_clientShutdown_Click);
     189      //
     190      // btnDisconnect
     191      //
     192      this.btnDisconnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Disaster_warning_48;
     193      this.btnDisconnect.Location = new System.Drawing.Point(79, 101);
     194      this.btnDisconnect.Name = "btnDisconnect";
     195      this.btnDisconnect.Size = new System.Drawing.Size(57, 57);
     196      this.btnDisconnect.TabIndex = 5;
     197      this.btnDisconnect.UseVisualStyleBackColor = true;
     198      this.btnDisconnect.Click += new System.EventHandler(this.btnDisconnect_Click);
     199      //
     200      // btConnect
     201      //
     202      this.btConnect.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.Global_network_48;
     203      this.btConnect.Location = new System.Drawing.Point(14, 101);
     204      this.btConnect.Name = "btConnect";
     205      this.btConnect.Size = new System.Drawing.Size(57, 57);
     206      this.btConnect.TabIndex = 4;
     207      this.btConnect.UseVisualStyleBackColor = true;
     208      this.btConnect.Click += new System.EventHandler(this.btConnect_Click);
     209      //
     210      // tbPort
     211      //
     212      this.tbPort.Location = new System.Drawing.Point(74, 59);
     213      this.tbPort.Name = "tbPort";
     214      this.tbPort.Size = new System.Drawing.Size(65, 20);
     215      this.tbPort.TabIndex = 3;
     216      this.tbPort.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
     217      //
     218      // tbIPAdress
     219      //
     220      this.tbIPAdress.Location = new System.Drawing.Point(74, 25);
     221      this.tbIPAdress.Name = "tbIPAdress";
     222      this.tbIPAdress.Size = new System.Drawing.Size(93, 20);
     223      this.tbIPAdress.TabIndex = 2;
     224      this.tbIPAdress.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Connection_KeyPress);
     225      //
     226      // lbServerIPCaption
     227      //
     228      this.lbServerIPCaption.AutoSize = true;
     229      this.lbServerIPCaption.Location = new System.Drawing.Point(17, 28);
     230      this.lbServerIPCaption.Name = "lbServerIPCaption";
     231      this.lbServerIPCaption.Size = new System.Drawing.Size(60, 13);
     232      this.lbServerIPCaption.TabIndex = 0;
     233      this.lbServerIPCaption.Text = "IP address:";
     234      //
     235      // lbPortCaption
     236      //
     237      this.lbPortCaption.AutoSize = true;
     238      this.lbPortCaption.Location = new System.Drawing.Point(48, 62);
     239      this.lbPortCaption.Name = "lbPortCaption";
     240      this.lbPortCaption.Size = new System.Drawing.Size(29, 13);
     241      this.lbPortCaption.TabIndex = 1;
     242      this.lbPortCaption.Text = "Port:";
     243      //
     244      // gbJobCommon
     245      //
     246      this.gbJobCommon.Controls.Add(this.lvJobDetail);
     247      this.gbJobCommon.Location = new System.Drawing.Point(568, 6);
     248      this.gbJobCommon.Name = "gbJobCommon";
     249      this.gbJobCommon.Size = new System.Drawing.Size(269, 164);
     250      this.gbJobCommon.TabIndex = 13;
     251      this.gbJobCommon.TabStop = false;
     252      this.gbJobCommon.Text = "Jobs detail";
     253      //
     254      // lvJobDetail
     255      //
     256      this.lvJobDetail.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
    256257            this.chJobId,
    257258            this.chSince,
    258259            this.chProgress});
    259         this.lvJobDetail.Dock = System.Windows.Forms.DockStyle.Fill;
    260         this.lvJobDetail.FullRowSelect = true;
    261         this.lvJobDetail.GridLines = true;
    262         this.lvJobDetail.Location = new System.Drawing.Point(3, 16);
    263         this.lvJobDetail.Name = "lvJobDetail";
    264         this.lvJobDetail.Size = new System.Drawing.Size(263, 145);
    265         this.lvJobDetail.TabIndex = 0;
    266         this.lvJobDetail.UseCompatibleStateImageBehavior = false;
    267         this.lvJobDetail.View = System.Windows.Forms.View.Details;
    268         //
    269         // chJobId
    270         //
    271         this.chJobId.Text = "ID";
    272         //
    273         // chSince
    274         //
    275         this.chSince.Text = "Since";
    276         this.chSince.Width = 120;
    277         //
    278         // chProgress
    279         //
    280         this.chProgress.Text = "Progress";
    281         //
    282         // gbCommon
    283         //
    284         this.gbCommon.Controls.Add(this.pbGraph);
    285         this.gbCommon.Controls.Add(this.lbJobsAborted);
    286         this.gbCommon.Controls.Add(this.lbJobdone);
    287         this.gbCommon.Controls.Add(this.lbJobsFetched);
    288         this.gbCommon.Controls.Add(this.lbGuid);
    289         this.gbCommon.Controls.Add(this.lbGuidCaption);
    290         this.gbCommon.Controls.Add(this.lbCs);
    291         this.gbCommon.Controls.Add(this.lbConnectionStatus);
    292         this.gbCommon.Controls.Add(this.lbConnectionStatusCaption);
    293         this.gbCommon.Controls.Add(this.lbJobsAbortedCaption);
    294         this.gbCommon.Controls.Add(this.lbJobdoneCaption);
    295         this.gbCommon.Controls.Add(this.lbJobsFetchedCaption);
    296         this.gbCommon.Controls.Add(this.lbCsCaption);
    297         this.gbCommon.Location = new System.Drawing.Point(8, 6);
    298         this.gbCommon.Name = "gbCommon";
    299         this.gbCommon.Size = new System.Drawing.Size(332, 164);
    300         this.gbCommon.TabIndex = 14;
    301         this.gbCommon.TabStop = false;
    302         this.gbCommon.Text = "Common";
    303         //
    304         // pbGraph
    305         //
    306         this.pbGraph.Location = new System.Drawing.Point(211, 42);
    307         this.pbGraph.Name = "pbGraph";
    308         this.pbGraph.Size = new System.Drawing.Size(112, 108);
    309         this.pbGraph.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    310         this.pbGraph.TabIndex = 21;
    311         this.pbGraph.TabStop = false;
    312         //
    313         // lbJobsAborted
    314         //
    315         this.lbJobsAborted.AutoSize = true;
    316         this.lbJobsAborted.Location = new System.Drawing.Point(74, 137);
    317         this.lbJobsAborted.Name = "lbJobsAborted";
    318         this.lbJobsAborted.Size = new System.Drawing.Size(50, 13);
    319         this.lbJobsAborted.TabIndex = 20;
    320         this.lbJobsAborted.Text = "loading...";
    321         //
    322         // lbJobdone
    323         //
    324         this.lbJobdone.AutoSize = true;
    325         this.lbJobdone.Location = new System.Drawing.Point(62, 114);
    326         this.lbJobdone.Name = "lbJobdone";
    327         this.lbJobdone.Size = new System.Drawing.Size(50, 13);
    328         this.lbJobdone.TabIndex = 19;
    329         this.lbJobdone.Text = "loading...";
    330         //
    331         // lbJobsFetched
    332         //
    333         this.lbJobsFetched.AutoSize = true;
    334         this.lbJobsFetched.Location = new System.Drawing.Point(74, 90);
    335         this.lbJobsFetched.Name = "lbJobsFetched";
    336         this.lbJobsFetched.Size = new System.Drawing.Size(50, 13);
    337         this.lbJobsFetched.TabIndex = 18;
    338         this.lbJobsFetched.Text = "loading...";
    339         //
    340         // lbGuid
    341         //
    342         this.lbGuid.AutoSize = true;
    343         this.lbGuid.Location = new System.Drawing.Point(41, 16);
    344         this.lbGuid.Name = "lbGuid";
    345         this.lbGuid.Size = new System.Drawing.Size(50, 13);
    346         this.lbGuid.TabIndex = 15;
    347         this.lbGuid.Text = "loading...";
    348         //
    349         // lbGuidCaption
    350         //
    351         this.lbGuidCaption.AutoSize = true;
    352         this.lbGuidCaption.Location = new System.Drawing.Point(9, 16);
    353         this.lbGuidCaption.Name = "lbGuidCaption";
    354         this.lbGuidCaption.Size = new System.Drawing.Size(37, 13);
    355         this.lbGuidCaption.TabIndex = 8;
    356         this.lbGuidCaption.Text = "GUID:";
    357         //
    358         // lbCs
    359         //
    360         this.lbCs.AutoSize = true;
    361         this.lbCs.Location = new System.Drawing.Point(94, 40);
    362         this.lbCs.Name = "lbCs";
    363         this.lbCs.Size = new System.Drawing.Size(50, 13);
    364         this.lbCs.TabIndex = 17;
    365         this.lbCs.Text = "loading...";
    366         //
    367         // lbConnectionStatus
    368         //
    369         this.lbConnectionStatus.AutoSize = true;
    370         this.lbConnectionStatus.Location = new System.Drawing.Point(97, 66);
    371         this.lbConnectionStatus.Name = "lbConnectionStatus";
    372         this.lbConnectionStatus.Size = new System.Drawing.Size(50, 13);
    373         this.lbConnectionStatus.TabIndex = 16;
    374         this.lbConnectionStatus.Text = "loading...";
    375         //
    376         // lbConnectionStatusCaption
    377         //
    378         this.lbConnectionStatusCaption.AutoSize = true;
    379         this.lbConnectionStatusCaption.Location = new System.Drawing.Point(9, 66);
    380         this.lbConnectionStatusCaption.Name = "lbConnectionStatusCaption";
    381         this.lbConnectionStatusCaption.Size = new System.Drawing.Size(93, 13);
    382         this.lbConnectionStatusCaption.TabIndex = 13;
    383         this.lbConnectionStatusCaption.Text = "Connected status:";
    384         //
    385         // lbJobsAbortedCaption
    386         //
    387         this.lbJobsAbortedCaption.AutoSize = true;
    388         this.lbJobsAbortedCaption.Location = new System.Drawing.Point(8, 137);
    389         this.lbJobsAbortedCaption.Name = "lbJobsAbortedCaption";
    390         this.lbJobsAbortedCaption.Size = new System.Drawing.Size(71, 13);
    391         this.lbJobsAbortedCaption.TabIndex = 11;
    392         this.lbJobsAbortedCaption.Text = "Jobs aborted:";
    393         //
    394         // lbJobdoneCaption
    395         //
    396         this.lbJobdoneCaption.AutoSize = true;
    397         this.lbJobdoneCaption.Location = new System.Drawing.Point(9, 114);
    398         this.lbJobdoneCaption.Name = "lbJobdoneCaption";
    399         this.lbJobdoneCaption.Size = new System.Drawing.Size(59, 13);
    400         this.lbJobdoneCaption.TabIndex = 10;
    401         this.lbJobdoneCaption.Text = "Jobs done:";
    402         //
    403         // lbJobsFetchedCaption
    404         //
    405         this.lbJobsFetchedCaption.AutoSize = true;
    406         this.lbJobsFetchedCaption.Location = new System.Drawing.Point(9, 90);
    407         this.lbJobsFetchedCaption.Name = "lbJobsFetchedCaption";
    408         this.lbJobsFetchedCaption.Size = new System.Drawing.Size(71, 13);
    409         this.lbJobsFetchedCaption.TabIndex = 12;
    410         this.lbJobsFetchedCaption.Text = "Jobs fetched:";
    411         //
    412         // lbCsCaption
    413         //
    414         this.lbCsCaption.AutoSize = true;
    415         this.lbCsCaption.Location = new System.Drawing.Point(9, 40);
    416         this.lbCsCaption.Name = "lbCsCaption";
    417         this.lbCsCaption.Size = new System.Drawing.Size(90, 13);
    418         this.lbCsCaption.TabIndex = 9;
    419         this.lbCsCaption.Text = "Connected since:";
    420         //
    421         // gbEventLog
    422         //
    423         this.gbEventLog.Controls.Add(this.txtLog);
    424         this.gbEventLog.Location = new System.Drawing.Point(7, 176);
    425         this.gbEventLog.Name = "gbEventLog";
    426         this.gbEventLog.Size = new System.Drawing.Size(830, 230);
    427         this.gbEventLog.TabIndex = 7;
    428         this.gbEventLog.TabStop = false;
    429         this.gbEventLog.Text = "Log";
    430         //
    431         // txtLog
    432         //
    433         this.txtLog.Location = new System.Drawing.Point(6, 19);
    434         this.txtLog.Multiline = true;
    435         this.txtLog.Name = "txtLog";
    436         this.txtLog.ReadOnly = true;
    437         this.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
    438         this.txtLog.Size = new System.Drawing.Size(818, 205);
    439         this.txtLog.TabIndex = 0;
    440         //
    441         // tabPage2
    442         //
    443         this.tabPage2.Controls.Add(this.btnSaveCal);
    444         this.tabPage2.Controls.Add(this.groupBox1);
    445         this.tabPage2.Controls.Add(this.mcOnline);
    446         this.tabPage2.Controls.Add(this.dvOnline);
    447         this.tabPage2.Controls.Add(this.pictureBox1);
    448         this.tabPage2.Location = new System.Drawing.Point(4, 25);
    449         this.tabPage2.Name = "tabPage2";
    450         this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
    451         this.tabPage2.Size = new System.Drawing.Size(845, 409);
    452         this.tabPage2.TabIndex = 1;
    453         this.tabPage2.Text = "Schedule";
    454         this.tabPage2.UseVisualStyleBackColor = true;
    455         //
    456         // btnSaveCal
    457         //
    458         this.btnSaveCal.Location = new System.Drawing.Point(633, 138);
    459         this.btnSaveCal.Name = "btnSaveCal";
    460         this.btnSaveCal.Size = new System.Drawing.Size(199, 23);
    461         this.btnSaveCal.TabIndex = 41;
    462         this.btnSaveCal.Text = "Save calender";
    463         this.btnSaveCal.UseVisualStyleBackColor = true;
    464         this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
    465         //
    466         // groupBox1
    467         //
    468         this.groupBox1.Controls.Add(this.txttimeTo);
    469         this.groupBox1.Controls.Add(this.txttimeFrom);
    470         this.groupBox1.Controls.Add(this.dtpTo);
    471         this.groupBox1.Controls.Add(this.dtpFrom);
    472         this.groupBox1.Controls.Add(this.chbade);
    473         this.groupBox1.Controls.Add(this.btnRecurrence);
    474         this.groupBox1.Controls.Add(this.btbDelete);
    475         this.groupBox1.Controls.Add(this.label2);
    476         this.groupBox1.Controls.Add(this.label1);
    477         this.groupBox1.Controls.Add(this.btCreate);
    478         this.groupBox1.Location = new System.Drawing.Point(373, 7);
    479         this.groupBox1.Name = "groupBox1";
    480         this.groupBox1.Size = new System.Drawing.Size(254, 161);
    481         this.groupBox1.TabIndex = 21;
    482         this.groupBox1.TabStop = false;
    483         //
    484         // txttimeTo
    485         //
    486         this.txttimeTo.CustomFormat = "HH:00";
    487         this.txttimeTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
    488         this.txttimeTo.Location = new System.Drawing.Point(164, 45);
    489         this.txttimeTo.Name = "txttimeTo";
    490         this.txttimeTo.ShowUpDown = true;
    491         this.txttimeTo.Size = new System.Drawing.Size(73, 20);
    492         this.txttimeTo.TabIndex = 40;
    493         //
    494         // txttimeFrom
    495         //
    496         this.txttimeFrom.CustomFormat = "HH:00";
    497         this.txttimeFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
    498         this.txttimeFrom.Location = new System.Drawing.Point(164, 12);
    499         this.txttimeFrom.Name = "txttimeFrom";
    500         this.txttimeFrom.ShowUpDown = true;
    501         this.txttimeFrom.Size = new System.Drawing.Size(73, 20);
    502         this.txttimeFrom.TabIndex = 39;
    503         //
    504         // dtpTo
    505         //
    506         this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
    507         this.dtpTo.Location = new System.Drawing.Point(72, 45);
    508         this.dtpTo.Name = "dtpTo";
    509         this.dtpTo.Size = new System.Drawing.Size(89, 20);
    510         this.dtpTo.TabIndex = 33;
    511         //
    512         // dtpFrom
    513         //
    514         this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
    515         this.dtpFrom.Location = new System.Drawing.Point(72, 12);
    516         this.dtpFrom.Name = "dtpFrom";
    517         this.dtpFrom.Size = new System.Drawing.Size(89, 20);
    518         this.dtpFrom.TabIndex = 32;
    519         //
    520         // chbade
    521         //
    522         this.chbade.AutoSize = true;
    523         this.chbade.Location = new System.Drawing.Point(135, 70);
    524         this.chbade.Name = "chbade";
    525         this.chbade.Size = new System.Drawing.Size(90, 17);
    526         this.chbade.TabIndex = 31;
    527         this.chbade.Text = "All Day Event";
    528         this.chbade.UseVisualStyleBackColor = true;
    529         this.chbade.CheckedChanged += new System.EventHandler(this.chbade_CheckedChanged);
    530         //
    531         // btnRecurrence
    532         //
    533         this.btnRecurrence.Location = new System.Drawing.Point(135, 129);
    534         this.btnRecurrence.Name = "btnRecurrence";
    535         this.btnRecurrence.Size = new System.Drawing.Size(113, 26);
    536         this.btnRecurrence.TabIndex = 30;
    537         this.btnRecurrence.Text = "Recurrence";
    538         this.btnRecurrence.UseVisualStyleBackColor = true;
    539         this.btnRecurrence.Click += new System.EventHandler(this.btnRecurrence_Click);
    540         //
    541         // btbDelete
    542         //
    543         this.btbDelete.Location = new System.Drawing.Point(8, 129);
    544         this.btbDelete.Name = "btbDelete";
    545         this.btbDelete.Size = new System.Drawing.Size(114, 26);
    546         this.btbDelete.TabIndex = 25;
    547         this.btbDelete.Text = "Delete";
    548         this.btbDelete.UseVisualStyleBackColor = true;
    549         this.btbDelete.Click += new System.EventHandler(this.btbDelete_Click);
    550         //
    551         // label2
    552         //
    553         this.label2.AutoSize = true;
    554         this.label2.Location = new System.Drawing.Point(16, 46);
    555         this.label2.Name = "label2";
    556         this.label2.Size = new System.Drawing.Size(55, 13);
    557         this.label2.TabIndex = 23;
    558         this.label2.Text = "End Time:";
    559         //
    560         // label1
    561         //
    562         this.label1.AutoSize = true;
    563         this.label1.Location = new System.Drawing.Point(16, 15);
    564         this.label1.Name = "label1";
    565         this.label1.Size = new System.Drawing.Size(58, 13);
    566         this.label1.TabIndex = 21;
    567         this.label1.Text = "Start Time:";
    568         //
    569         // btCreate
    570         //
    571         this.btCreate.Location = new System.Drawing.Point(6, 93);
    572         this.btCreate.Name = "btCreate";
    573         this.btCreate.Size = new System.Drawing.Size(242, 26);
    574         this.btCreate.TabIndex = 20;
    575         this.btCreate.Text = "Save";
    576         this.btCreate.UseVisualStyleBackColor = true;
    577         this.btCreate.Click += new System.EventHandler(this.btCreate_Click);
    578         //
    579         // mcOnline
    580         //
    581         this.mcOnline.CalendarDimensions = new System.Drawing.Size(2, 1);
    582         this.mcOnline.Location = new System.Drawing.Point(9, 12);
    583         this.mcOnline.Name = "mcOnline";
    584         this.mcOnline.TabIndex = 19;
    585         this.mcOnline.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mcOnline_DateChanged);
    586         //
    587         // pictureBox1
    588         //
    589         this.pictureBox1.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.schedule;
    590         this.pictureBox1.Location = new System.Drawing.Point(633, 12);
    591         this.pictureBox1.Name = "pictureBox1";
    592         this.pictureBox1.Size = new System.Drawing.Size(199, 114);
    593         this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
    594         this.pictureBox1.TabIndex = 22;
    595         this.pictureBox1.TabStop = false;
    596         //
    597         // ilEventLog
    598         //
    599         this.ilEventLog.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilEventLog.ImageStream")));
    600         this.ilEventLog.TransparentColor = System.Drawing.Color.Transparent;
    601         this.ilEventLog.Images.SetKeyName(0, "Info.png");
    602         this.ilEventLog.Images.SetKeyName(1, "Error.png");
    603         //
    604         // HiveClientConsole
    605         //
    606         this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
    607         this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    608         this.BackColor = System.Drawing.SystemColors.Control;
    609         this.ClientSize = new System.Drawing.Size(853, 438);
    610         this.Controls.Add(this.tcClientConsole);
    611         this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
    612         this.MaximizeBox = false;
    613         this.MinimizeBox = false;
    614         this.Name = "HiveClientConsole";
    615         this.Text = "Client Console (loading...)";
    616         this.tcClientConsole.ResumeLayout(false);
    617         this.tpConnection.ResumeLayout(false);
    618         this.gbServerConnection.ResumeLayout(false);
    619         this.gbServerConnection.PerformLayout();
    620         this.gbJobCommon.ResumeLayout(false);
    621         this.gbCommon.ResumeLayout(false);
    622         this.gbCommon.PerformLayout();
    623         ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).EndInit();
    624         this.gbEventLog.ResumeLayout(false);
    625         this.gbEventLog.PerformLayout();
    626         this.tabPage2.ResumeLayout(false);
    627         this.groupBox1.ResumeLayout(false);
    628         this.groupBox1.PerformLayout();
    629         ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
    630         this.ResumeLayout(false);
     260      this.lvJobDetail.Dock = System.Windows.Forms.DockStyle.Fill;
     261      this.lvJobDetail.FullRowSelect = true;
     262      this.lvJobDetail.GridLines = true;
     263      this.lvJobDetail.Location = new System.Drawing.Point(3, 16);
     264      this.lvJobDetail.Name = "lvJobDetail";
     265      this.lvJobDetail.Size = new System.Drawing.Size(263, 145);
     266      this.lvJobDetail.TabIndex = 0;
     267      this.lvJobDetail.UseCompatibleStateImageBehavior = false;
     268      this.lvJobDetail.View = System.Windows.Forms.View.Details;
     269      //
     270      // chJobId
     271      //
     272      this.chJobId.Text = "ID";
     273      //
     274      // chSince
     275      //
     276      this.chSince.Text = "Since";
     277      this.chSince.Width = 120;
     278      //
     279      // chProgress
     280      //
     281      this.chProgress.Text = "Progress";
     282      //
     283      // gbCommon
     284      //
     285      this.gbCommon.Controls.Add(this.pbGraph);
     286      this.gbCommon.Controls.Add(this.lbJobsAborted);
     287      this.gbCommon.Controls.Add(this.lbJobdone);
     288      this.gbCommon.Controls.Add(this.lbJobsFetched);
     289      this.gbCommon.Controls.Add(this.lbGuid);
     290      this.gbCommon.Controls.Add(this.lbGuidCaption);
     291      this.gbCommon.Controls.Add(this.lbCs);
     292      this.gbCommon.Controls.Add(this.lbConnectionStatus);
     293      this.gbCommon.Controls.Add(this.lbConnectionStatusCaption);
     294      this.gbCommon.Controls.Add(this.lbJobsAbortedCaption);
     295      this.gbCommon.Controls.Add(this.lbJobdoneCaption);
     296      this.gbCommon.Controls.Add(this.lbJobsFetchedCaption);
     297      this.gbCommon.Controls.Add(this.lbCsCaption);
     298      this.gbCommon.Location = new System.Drawing.Point(8, 6);
     299      this.gbCommon.Name = "gbCommon";
     300      this.gbCommon.Size = new System.Drawing.Size(332, 164);
     301      this.gbCommon.TabIndex = 14;
     302      this.gbCommon.TabStop = false;
     303      this.gbCommon.Text = "Common";
     304      //
     305      // pbGraph
     306      //
     307      this.pbGraph.Location = new System.Drawing.Point(211, 42);
     308      this.pbGraph.Name = "pbGraph";
     309      this.pbGraph.Size = new System.Drawing.Size(112, 108);
     310      this.pbGraph.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
     311      this.pbGraph.TabIndex = 21;
     312      this.pbGraph.TabStop = false;
     313      //
     314      // lbJobsAborted
     315      //
     316      this.lbJobsAborted.AutoSize = true;
     317      this.lbJobsAborted.Location = new System.Drawing.Point(74, 137);
     318      this.lbJobsAborted.Name = "lbJobsAborted";
     319      this.lbJobsAborted.Size = new System.Drawing.Size(50, 13);
     320      this.lbJobsAborted.TabIndex = 20;
     321      this.lbJobsAborted.Text = "loading...";
     322      //
     323      // lbJobdone
     324      //
     325      this.lbJobdone.AutoSize = true;
     326      this.lbJobdone.Location = new System.Drawing.Point(62, 114);
     327      this.lbJobdone.Name = "lbJobdone";
     328      this.lbJobdone.Size = new System.Drawing.Size(50, 13);
     329      this.lbJobdone.TabIndex = 19;
     330      this.lbJobdone.Text = "loading...";
     331      //
     332      // lbJobsFetched
     333      //
     334      this.lbJobsFetched.AutoSize = true;
     335      this.lbJobsFetched.Location = new System.Drawing.Point(74, 90);
     336      this.lbJobsFetched.Name = "lbJobsFetched";
     337      this.lbJobsFetched.Size = new System.Drawing.Size(50, 13);
     338      this.lbJobsFetched.TabIndex = 18;
     339      this.lbJobsFetched.Text = "loading...";
     340      //
     341      // lbGuid
     342      //
     343      this.lbGuid.AutoSize = true;
     344      this.lbGuid.Location = new System.Drawing.Point(41, 16);
     345      this.lbGuid.Name = "lbGuid";
     346      this.lbGuid.Size = new System.Drawing.Size(50, 13);
     347      this.lbGuid.TabIndex = 15;
     348      this.lbGuid.Text = "loading...";
     349      //
     350      // lbGuidCaption
     351      //
     352      this.lbGuidCaption.AutoSize = true;
     353      this.lbGuidCaption.Location = new System.Drawing.Point(9, 16);
     354      this.lbGuidCaption.Name = "lbGuidCaption";
     355      this.lbGuidCaption.Size = new System.Drawing.Size(37, 13);
     356      this.lbGuidCaption.TabIndex = 8;
     357      this.lbGuidCaption.Text = "GUID:";
     358      //
     359      // lbCs
     360      //
     361      this.lbCs.AutoSize = true;
     362      this.lbCs.Location = new System.Drawing.Point(94, 40);
     363      this.lbCs.Name = "lbCs";
     364      this.lbCs.Size = new System.Drawing.Size(50, 13);
     365      this.lbCs.TabIndex = 17;
     366      this.lbCs.Text = "loading...";
     367      //
     368      // lbConnectionStatus
     369      //
     370      this.lbConnectionStatus.AutoSize = true;
     371      this.lbConnectionStatus.Location = new System.Drawing.Point(97, 66);
     372      this.lbConnectionStatus.Name = "lbConnectionStatus";
     373      this.lbConnectionStatus.Size = new System.Drawing.Size(50, 13);
     374      this.lbConnectionStatus.TabIndex = 16;
     375      this.lbConnectionStatus.Text = "loading...";
     376      //
     377      // lbConnectionStatusCaption
     378      //
     379      this.lbConnectionStatusCaption.AutoSize = true;
     380      this.lbConnectionStatusCaption.Location = new System.Drawing.Point(9, 66);
     381      this.lbConnectionStatusCaption.Name = "lbConnectionStatusCaption";
     382      this.lbConnectionStatusCaption.Size = new System.Drawing.Size(93, 13);
     383      this.lbConnectionStatusCaption.TabIndex = 13;
     384      this.lbConnectionStatusCaption.Text = "Connected status:";
     385      //
     386      // lbJobsAbortedCaption
     387      //
     388      this.lbJobsAbortedCaption.AutoSize = true;
     389      this.lbJobsAbortedCaption.Location = new System.Drawing.Point(8, 137);
     390      this.lbJobsAbortedCaption.Name = "lbJobsAbortedCaption";
     391      this.lbJobsAbortedCaption.Size = new System.Drawing.Size(71, 13);
     392      this.lbJobsAbortedCaption.TabIndex = 11;
     393      this.lbJobsAbortedCaption.Text = "Jobs aborted:";
     394      //
     395      // lbJobdoneCaption
     396      //
     397      this.lbJobdoneCaption.AutoSize = true;
     398      this.lbJobdoneCaption.Location = new System.Drawing.Point(9, 114);
     399      this.lbJobdoneCaption.Name = "lbJobdoneCaption";
     400      this.lbJobdoneCaption.Size = new System.Drawing.Size(59, 13);
     401      this.lbJobdoneCaption.TabIndex = 10;
     402      this.lbJobdoneCaption.Text = "Jobs done:";
     403      //
     404      // lbJobsFetchedCaption
     405      //
     406      this.lbJobsFetchedCaption.AutoSize = true;
     407      this.lbJobsFetchedCaption.Location = new System.Drawing.Point(9, 90);
     408      this.lbJobsFetchedCaption.Name = "lbJobsFetchedCaption";
     409      this.lbJobsFetchedCaption.Size = new System.Drawing.Size(71, 13);
     410      this.lbJobsFetchedCaption.TabIndex = 12;
     411      this.lbJobsFetchedCaption.Text = "Jobs fetched:";
     412      //
     413      // lbCsCaption
     414      //
     415      this.lbCsCaption.AutoSize = true;
     416      this.lbCsCaption.Location = new System.Drawing.Point(9, 40);
     417      this.lbCsCaption.Name = "lbCsCaption";
     418      this.lbCsCaption.Size = new System.Drawing.Size(90, 13);
     419      this.lbCsCaption.TabIndex = 9;
     420      this.lbCsCaption.Text = "Connected since:";
     421      //
     422      // gbEventLog
     423      //
     424      this.gbEventLog.Controls.Add(this.txtLog);
     425      this.gbEventLog.Location = new System.Drawing.Point(7, 176);
     426      this.gbEventLog.Name = "gbEventLog";
     427      this.gbEventLog.Size = new System.Drawing.Size(830, 230);
     428      this.gbEventLog.TabIndex = 7;
     429      this.gbEventLog.TabStop = false;
     430      this.gbEventLog.Text = "Log";
     431      //
     432      // txtLog
     433      //
     434      this.txtLog.Location = new System.Drawing.Point(6, 19);
     435      this.txtLog.Multiline = true;
     436      this.txtLog.Name = "txtLog";
     437      this.txtLog.ReadOnly = true;
     438      this.txtLog.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
     439      this.txtLog.Size = new System.Drawing.Size(818, 205);
     440      this.txtLog.TabIndex = 0;
     441      //
     442      // tabPage2
     443      //
     444      this.tabPage2.Controls.Add(this.btnUpdateCalender);
     445      this.tabPage2.Controls.Add(this.btnSaveCal);
     446      this.tabPage2.Controls.Add(this.groupBox1);
     447      this.tabPage2.Controls.Add(this.mcOnline);
     448      this.tabPage2.Controls.Add(this.dvOnline);
     449      this.tabPage2.Controls.Add(this.pictureBox1);
     450      this.tabPage2.Location = new System.Drawing.Point(4, 25);
     451      this.tabPage2.Name = "tabPage2";
     452      this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
     453      this.tabPage2.Size = new System.Drawing.Size(845, 409);
     454      this.tabPage2.TabIndex = 1;
     455      this.tabPage2.Text = "Schedule";
     456      this.tabPage2.UseVisualStyleBackColor = true;
     457      //
     458      // btnSaveCal
     459      //
     460      this.btnSaveCal.Location = new System.Drawing.Point(633, 100);
     461      this.btnSaveCal.Name = "btnSaveCal";
     462      this.btnSaveCal.Size = new System.Drawing.Size(199, 25);
     463      this.btnSaveCal.TabIndex = 41;
     464      this.btnSaveCal.Text = "Save Calender";
     465      this.btnSaveCal.UseVisualStyleBackColor = true;
     466      this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
     467      //
     468      // groupBox1
     469      //
     470      this.groupBox1.Controls.Add(this.txttimeTo);
     471      this.groupBox1.Controls.Add(this.txttimeFrom);
     472      this.groupBox1.Controls.Add(this.dtpTo);
     473      this.groupBox1.Controls.Add(this.dtpFrom);
     474      this.groupBox1.Controls.Add(this.chbade);
     475      this.groupBox1.Controls.Add(this.btnRecurrence);
     476      this.groupBox1.Controls.Add(this.btbDelete);
     477      this.groupBox1.Controls.Add(this.label2);
     478      this.groupBox1.Controls.Add(this.label1);
     479      this.groupBox1.Controls.Add(this.btCreate);
     480      this.groupBox1.Location = new System.Drawing.Point(373, 7);
     481      this.groupBox1.Name = "groupBox1";
     482      this.groupBox1.Size = new System.Drawing.Size(254, 161);
     483      this.groupBox1.TabIndex = 21;
     484      this.groupBox1.TabStop = false;
     485      //
     486      // txttimeTo
     487      //
     488      this.txttimeTo.CustomFormat = "HH:00";
     489      this.txttimeTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
     490      this.txttimeTo.Location = new System.Drawing.Point(164, 45);
     491      this.txttimeTo.Name = "txttimeTo";
     492      this.txttimeTo.ShowUpDown = true;
     493      this.txttimeTo.Size = new System.Drawing.Size(73, 20);
     494      this.txttimeTo.TabIndex = 40;
     495      //
     496      // txttimeFrom
     497      //
     498      this.txttimeFrom.CustomFormat = "HH:00";
     499      this.txttimeFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
     500      this.txttimeFrom.Location = new System.Drawing.Point(164, 12);
     501      this.txttimeFrom.Name = "txttimeFrom";
     502      this.txttimeFrom.ShowUpDown = true;
     503      this.txttimeFrom.Size = new System.Drawing.Size(73, 20);
     504      this.txttimeFrom.TabIndex = 39;
     505      //
     506      // dtpTo
     507      //
     508      this.dtpTo.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
     509      this.dtpTo.Location = new System.Drawing.Point(72, 45);
     510      this.dtpTo.Name = "dtpTo";
     511      this.dtpTo.Size = new System.Drawing.Size(89, 20);
     512      this.dtpTo.TabIndex = 33;
     513      //
     514      // dtpFrom
     515      //
     516      this.dtpFrom.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
     517      this.dtpFrom.Location = new System.Drawing.Point(72, 12);
     518      this.dtpFrom.Name = "dtpFrom";
     519      this.dtpFrom.Size = new System.Drawing.Size(89, 20);
     520      this.dtpFrom.TabIndex = 32;
     521      //
     522      // chbade
     523      //
     524      this.chbade.AutoSize = true;
     525      this.chbade.Location = new System.Drawing.Point(135, 70);
     526      this.chbade.Name = "chbade";
     527      this.chbade.Size = new System.Drawing.Size(90, 17);
     528      this.chbade.TabIndex = 31;
     529      this.chbade.Text = "All Day Event";
     530      this.chbade.UseVisualStyleBackColor = true;
     531      this.chbade.CheckedChanged += new System.EventHandler(this.chbade_CheckedChanged);
     532      //
     533      // btnRecurrence
     534      //
     535      this.btnRecurrence.Location = new System.Drawing.Point(135, 129);
     536      this.btnRecurrence.Name = "btnRecurrence";
     537      this.btnRecurrence.Size = new System.Drawing.Size(113, 26);
     538      this.btnRecurrence.TabIndex = 30;
     539      this.btnRecurrence.Text = "Recurrence";
     540      this.btnRecurrence.UseVisualStyleBackColor = true;
     541      this.btnRecurrence.Click += new System.EventHandler(this.btnRecurrence_Click);
     542      //
     543      // btbDelete
     544      //
     545      this.btbDelete.Location = new System.Drawing.Point(8, 129);
     546      this.btbDelete.Name = "btbDelete";
     547      this.btbDelete.Size = new System.Drawing.Size(114, 26);
     548      this.btbDelete.TabIndex = 25;
     549      this.btbDelete.Text = "Delete";
     550      this.btbDelete.UseVisualStyleBackColor = true;
     551      this.btbDelete.Click += new System.EventHandler(this.btbDelete_Click);
     552      //
     553      // label2
     554      //
     555      this.label2.AutoSize = true;
     556      this.label2.Location = new System.Drawing.Point(16, 46);
     557      this.label2.Name = "label2";
     558      this.label2.Size = new System.Drawing.Size(55, 13);
     559      this.label2.TabIndex = 23;
     560      this.label2.Text = "End Time:";
     561      //
     562      // label1
     563      //
     564      this.label1.AutoSize = true;
     565      this.label1.Location = new System.Drawing.Point(16, 15);
     566      this.label1.Name = "label1";
     567      this.label1.Size = new System.Drawing.Size(58, 13);
     568      this.label1.TabIndex = 21;
     569      this.label1.Text = "Start Time:";
     570      //
     571      // btCreate
     572      //
     573      this.btCreate.Location = new System.Drawing.Point(6, 93);
     574      this.btCreate.Name = "btCreate";
     575      this.btCreate.Size = new System.Drawing.Size(242, 26);
     576      this.btCreate.TabIndex = 20;
     577      this.btCreate.Text = "Save";
     578      this.btCreate.UseVisualStyleBackColor = true;
     579      this.btCreate.Click += new System.EventHandler(this.btCreate_Click);
     580      //
     581      // mcOnline
     582      //
     583      this.mcOnline.CalendarDimensions = new System.Drawing.Size(2, 1);
     584      this.mcOnline.Location = new System.Drawing.Point(9, 12);
     585      this.mcOnline.Name = "mcOnline";
     586      this.mcOnline.TabIndex = 19;
     587      this.mcOnline.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mcOnline_DateChanged);
     588      //
     589      // pictureBox1
     590      //
     591      this.pictureBox1.Image = global::HeuristicLab.Hive.Client.Console.Properties.Resources.schedule;
     592      this.pictureBox1.Location = new System.Drawing.Point(633, 12);
     593      this.pictureBox1.Name = "pictureBox1";
     594      this.pictureBox1.Size = new System.Drawing.Size(199, 82);
     595      this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
     596      this.pictureBox1.TabIndex = 22;
     597      this.pictureBox1.TabStop = false;
     598      //
     599      // ilEventLog
     600      //
     601      this.ilEventLog.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("ilEventLog.ImageStream")));
     602      this.ilEventLog.TransparentColor = System.Drawing.Color.Transparent;
     603      this.ilEventLog.Images.SetKeyName(0, "Info.png");
     604      this.ilEventLog.Images.SetKeyName(1, "Error.png");
     605      //
     606      // btnUpdateCalender
     607      //
     608      this.btnUpdateCalender.Location = new System.Drawing.Point(633, 136);
     609      this.btnUpdateCalender.Name = "btnUpdateCalender";
     610      this.btnUpdateCalender.Size = new System.Drawing.Size(199, 26);
     611      this.btnUpdateCalender.TabIndex = 42;
     612      this.btnUpdateCalender.Text = "Update Calender";
     613      this.btnUpdateCalender.UseVisualStyleBackColor = true;
     614      this.btnUpdateCalender.Click += new System.EventHandler(this.btnUpdateCalender_Click);
     615      //
     616      // HiveClientConsole
     617      //
     618      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
     619      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
     620      this.BackColor = System.Drawing.SystemColors.Control;
     621      this.ClientSize = new System.Drawing.Size(853, 438);
     622      this.Controls.Add(this.tcClientConsole);
     623      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
     624      this.MaximizeBox = false;
     625      this.MinimizeBox = false;
     626      this.Name = "HiveClientConsole";
     627      this.Text = "Client Console (loading...)";
     628      this.tcClientConsole.ResumeLayout(false);
     629      this.tpConnection.ResumeLayout(false);
     630      this.gbServerConnection.ResumeLayout(false);
     631      this.gbServerConnection.PerformLayout();
     632      this.gbJobCommon.ResumeLayout(false);
     633      this.gbCommon.ResumeLayout(false);
     634      this.gbCommon.PerformLayout();
     635      ((System.ComponentModel.ISupportInitialize)(this.pbGraph)).EndInit();
     636      this.gbEventLog.ResumeLayout(false);
     637      this.gbEventLog.PerformLayout();
     638      this.tabPage2.ResumeLayout(false);
     639      this.groupBox1.ResumeLayout(false);
     640      this.groupBox1.PerformLayout();
     641      ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
     642      this.ResumeLayout(false);
    631643
    632644    }
     
    682694    private System.Windows.Forms.TextBox txtLog;
    683695    private System.Windows.Forms.Button btnSaveCal;
     696    private System.Windows.Forms.Button btnUpdateCalender;
    684697  }
    685698}
  • trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.cs

    r2101 r3203  
    491491    }
    492492
     493    private void btnUpdateCalender_Click(object sender, EventArgs e) {
     494      clientCommunicator.GetUptimeCalendarAsync();
     495    }
     496
    493497    private void dvOnline_OnNewAppointment(object sender, NewAppointmentEventArgs e)
    494498    {
     
    672676    #endregion
    673677
     678
     679
    674680  }
    675681}
  • trunk/sources/HeuristicLab.Hive.Client.Console/3.2/HiveClientConsole.resx

    r2069 r3203  
    125125        AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
    126126        LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
    127         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABQ
    128         CgAAAk1TRnQBSQFMAgEBAgEAAQQBAAEEAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
    129         AwABEAMAAQEBAAEgBgABECoAAUMCAQF0AWYCCQHxAzAB/wFiAgMB1AEgAgEBLCwAAUMCAQF0AWYCCQHx
    130         AzAB/wFiAgMB1AEgAgEBLKQAAWACCgHyAZMBgQEwAf8BvwGBATAB/wG9AYEBMAH/AboBgQEwAf8BuAGB
    131         ATAB/wG2AYEBMAH/AWQBTQEwAf8BPQIBAWUcAAFgAgoB8gIwAaQB/wIwAdYB/wIwAdQB/wIwAdIB/wIw
    132         AdAB/wIwAc4B/wIwAWsB/wE9AgEBZZgAAToBNgEwAf8BxwGBATAB/wHDAYEBMAH/AbEBgQEwAf8BsQGB
    133         ATAB/wGxAYEBMAH/AbEBgQEwAf8BswGBATAB/wG2AYEBMAH/AbQBgQEwAf8BZAIFAeQUAAIwATsB/wIw
    134         AdwB/wIwAdkB/wIwAcoB/wIwAcoB/wIwAcoB/wIwAcoB/wIwAcsB/wIwAc4B/wIwAcwB/wFkAgUB5JAA
    135         AzAB/wHLAYEBMAH/AbsBgQEwAf8BtgGBATAB/wG2AYEBMAH/Ae4B3AHEBf8BvgGBAU0B/wG2AYEBMAH/
    136         AbYBgQEwAf8BtgGBATAB/wG0AYEBMAH/AUkCAgGGDAADMAH/AjAB4AH/AjAB0gH/AjABzgH/Al0B1gH/
    137         AjABzgH/AjABzgH/AjABzgH/AjMBzgH/AjABzgH/AjABzgH/AjABzAH/AUkCAgGGiAABLAIBAUIB0AGG
    138         ATAB/wHHAYEBMAH/AboBgQEwAf8BugGBATAB/wG6AYEBMAH/AdABnAGBBf8BugGBATAB/wG6AYEBMAH/
    139         AboBgQEwAf8BugGBATAB/wG2AYEBMAH/AYEBXwEwAf8IAAEsAgEBQgIwAeQB/wIwAdwB/wIwAdIB/wKf
    140         Ae0F/wJ2Ad4B/wIwAdIB/wL0Af0F/wIzAdIB/wIwAdIB/wIwAc4B/wIwAYEB/4gAAzAB/wHSAYkBMAH/
    141         Ab8BgQEwAf8BvwGBATAB/wG/AYEBMAH/Ab8BgQEwAf8B0wGfAYEF/wG/AYEBMAH/Ab8BgQEwAf8BvwGB
    142         ATAB/wG/AYEBMAH/Ab4BgQEwAf8BtgGBATAB/wE2AgEBVwQAAzAB/wIwAeUB/wIwAdYB/wIwAdYN/wL1
    143         Af0J/wLiAfoB/wIwAdYB/wIwAdUB/wIwAc4B/wE2AgEBV4QAAXgBYAEwAf8B1AGMATAB/wHEAYEBMAH/
    144         AcQBgQEwAf8BxAGBATAB/wHEAYEBMAH/AdcBpAGBBf8BxAGBATAB/wHEAYEBMAH/AcQBgQEwAf8BxAGB
    145         ATAB/wHEAYEBMAH/AbgBgQEwAf8BZQIHAewEAAIwAX4B/wIwAegB/wIwAdoB/wIwAdoB/wIwAdoR/wLi
    146         AfoB/wIwAdoB/wIwAdoB/wIwAdoB/wIwAdAB/wFlAgcB7IQAAYEBdQEwAf8B1wGOATAB/wHJAYEBMAH/
    147         AckBgQEwAf8ByQGBATAB/wHJAYEBMAn/AckBgQEwAf8ByQGBATAB/wHJAYEBMAH/AckBgQEwAf8ByQGB
    148         ATAB/wG6AYEBMAH/AzAB/wQAAjABgQH/AjAB6QH/AjAB3gH/AjAB3gH/AjAB3gH/AvQB/Q3/AnYB5wH/
    149         AjAB3gH/AjAB3gH/AjAB3gH/AjAB0gH/AzAB/4QAAYEBZgEwAf8B2QGRATAB/wHOAYMBMAH/Ac4BgwEw
    150         Af8BzgGDATAB/wHOAYMBMAH/Ac4BgwEwAf8B1wGcAWEB/wHOAYMBMAH/Ac4BgwEwAf8BzgGDATAB/wHO
    151         AYMBMAH/Ac4BgwEwAf8BvQGBATAB/wFiAhMB+QQAATABNQGBAf8CMAHsAf8CMAHiAf8CMAHiAf8C9AH9
    152         Ff8CdgHqAf8CMAHiAf8CMAHiAf8CMAHUAf8BYgITAfmEAAEzATEBMAH/AdsBlAEwAf8B0gGJATAB/wHS
    153         AYkBMAH/AdIBiQEwAf8B0gGJATAB/wHSAYkBMAH/AesBywGQAf8B0gGJATAB/wHSAYkBMAH/AdIBiQEw
    154         Af8B0gGJATAB/wHEAYEBMAH/Ab8BgQEwAf8BUQICAZsEAAIwATMB/wIwAe0B/wIwAeYB/wIwAeUB/wL9
    155         Af4F/wLiAfwB/wIwAeUJ/wKBAfEB/wIwAeUB/wIwAdoB/wIwAdYB/wFRAgIBm4QAAVgCAgGyAd4BmAEw
    156         Af8B2wGUATAB/wHXAY4BMAH/AdcBjgEwAf8B1wGOATAB/wH7AfYB6wX/AdcBjgEwAf8B1wGOATAB/wHX
    157         AY4BMAH/AdYBjQEwAf8BxAGBATAB/wGpAYEBMAH/CAABWAICAbIBMAE6Ae8B/wIwAe0B/wIwAekB/wIw
    158         AekB/wLhAfwB/wIwAekB/wIwAekB/wIwAekB/wKBAfMB/wIwAekB/wIwAegB/wIwAdoB/wEwATgBnQH/
    159         jAABagFPATAB/wHdAZcBMAH/AdsBlAEwAf8B2wGUATAB/wHbAZQBMAH/AdsBlAEwAf8B3AGXATYB/wHb
    160         AZQBMAH/AdsBlAEwAf8B1QGMATAB/wHJAYEBMAH/AdEBiAEwAf8BLAIhAfwMAAIwAWQB/wIwAe8B/wIw
    161         Ae0B/wIwAe0B/wIwAe0B/wIwAe0B/wIwAe0B/wIwAe0B/wIwAe0B/wIwAegB/wIwAd4B/wEwAUMB4gH/
    162         ASwCIQH8jAABGQIBASEBkAGBATAB/wHfAZkBMAH/AdsBlAEwAf8B2QGRATAB/wHYAZABMAH/AdgBkAEw
    163         Af8B0wGKATAB/wHQAYYBMAH/Ac4BgwEwAf8B2gGSATAB/wE7ATYBMAH/EAABGQIBASECMAGHAf8BMAE2
    164         AfEB/wIwAe0B/wIwAewB/wIwAesB/wIwAesB/wIwAeYB/wIwAeQB/wIwAeIB/wEwAU0B5gH/AjABOgH/
    165         lAABEgIBARYBVQFHATAB/wHSAYkBMAH/AeIBnQEwAf8B2QGRATAB/wHXAY4BMAH/AdUBjAEwAf8B4QGb
    166         ATAB/wHOAYQBMAH/AVACMAH+GAABEgIBARYCMAFUAf8BMAE2AdMB/wEwAUcB9AH/AjAB7AH/AjAB6QH/
    167         ATABMQHoAf8BMAFPAfAB/wIwAcwB/wFQAjAB/qAAAUYCAQF9AzAB/wGBAWgBMAH/AoEBMAH/AWIBUwEw
    168         Af8BUAIwAf4BFAIBARokAAFGAgEBfQMwAf8CMAGBAf8CMAGBAf8CMAFkAf8BUAIwAf4BFAIBARr/AJEA
    169         AUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcAA/8BAAH8AR8B/AEfBAAB8AEHAfABBwQA
    170         AeABAwHgAQMEAAHAAQEBwAEBBAABgAEBAYABAQQAAYABAAGABQABgAEAAYAFAAGAAQABgAUAAYABAAGA
    171         BQABgAEAAYAFAAGAAQEBgAEBBAABwAEBAcABAQQAAcABAwHAAQMEAAHgAQcB4AEHBAAB+AEPAfgBDwQA
    172         BP8EAAs=
     127        ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABI
     128        CgAAAk1TRnQBSQFMAgEBAgEAAQwBAAEMAQABEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
     129        AwABEAMAAQEBAAEgBgABECoAAUICNAF0AWQCEwHxAy8B/wFgAh8B1AEfAh4BLCwAAUICNAF0AWQCEwHx
     130        Ay8B/wFgAh8B1AEfAh4BLKQAAV8CEgHyAZMBgQEvAf8BvwGBAS8B/wG9AYEBLwH/AboBgQEvAf8BuAGB
     131        AS8B/wG2AYEBLwH/AWMBTAEvAf8BOwIyAWUcAAFfAhIB8gIvAaQB/wIvAdYB/wIvAdQB/wIvAdIB/wIv
     132        AdAB/wIvAc4B/wIvAWoB/wE7AjIBZZgAATkBNQEvAf8BxwGBAS8B/wHDAYEBLwH/AbEBgQEvAf8BsQGB
     133        AS8B/wGxAYEBLwH/AbEBgQEvAf8BswGBAS8B/wG2AYEBLwH/AbQBgQEvAf8BYgIXAeQUAAIvAToB/wIv
     134        AdwB/wIvAdkB/wIvAcoB/wIvAcoB/wIvAcoB/wIvAcoB/wIvAcsB/wIvAc4B/wIvAcwB/wFiAhcB5JAA
     135        Ay8B/wHLAYEBLwH/AbsBgQEvAf8BtgGBAS8B/wG2AYEBLwH/Ae4B3AHEBf8BvgGBAUwB/wG2AYEBLwH/
     136        AbYBgQEvAf8BtgGBAS8B/wG0AYEBLwH/AUgCNAGGDAADLwH/Ai8B4AH/Ai8B0gH/Ai8BzgH/AlwB1gH/
     137        Ai8BzgH/Ai8BzgH/Ai8BzgH/AjIBzgH/Ai8BzgH/Ai8BzgH/Ai8BzAH/AUgCNAGGiAABKwIoAUIB0AGG
     138        AS8B/wHHAYEBLwH/AboBgQEvAf8BugGBAS8B/wG6AYEBLwH/AdABnAGBBf8BugGBAS8B/wG6AYEBLwH/
     139        AboBgQEvAf8BugGBAS8B/wG2AYEBLwH/AYEBXgEvAf8IAAErAigBQgIvAeQB/wIvAdwB/wIvAdIB/wKf
     140        Ae0F/wJ1Ad4B/wIvAdIB/wL0Af0F/wIyAdIB/wIvAdIB/wIvAc4B/wIvAYEB/4gAAy8B/wHSAYkBLwH/
     141        Ab8BgQEvAf8BvwGBAS8B/wG/AYEBLwH/Ab8BgQEvAf8B0wGfAYEF/wG/AYEBLwH/Ab8BgQEvAf8BvwGB
     142        AS8B/wG/AYEBLwH/Ab4BgQEvAf8BtgGBAS8B/wE1Ai8BVwQAAy8B/wIvAeUB/wIvAdYB/wIvAdYN/wL1
     143        Af0J/wLiAfoB/wIvAdYB/wIvAdUB/wIvAc4B/wE1Ai8BV4QAAXcBXwEvAf8B1AGMAS8B/wHEAYEBLwH/
     144        AcQBgQEvAf8BxAGBAS8B/wHEAYEBLwH/AdcBpAGBBf8BxAGBAS8B/wHEAYEBLwH/AcQBgQEvAf8BxAGB
     145        AS8B/wHEAYEBLwH/AbgBgQEvAf8BZAIUAewEAAIvAX0B/wIvAegB/wIvAdoB/wIvAdoB/wIvAdoR/wLi
     146        AfoB/wIvAdoB/wIvAdoB/wIvAdoB/wIvAdAB/wFkAhQB7IQAAYEBdAEvAf8B1wGOAS8B/wHJAYEBLwH/
     147        AckBgQEvAf8ByQGBAS8B/wHJAYEBLwn/AckBgQEvAf8ByQGBAS8B/wHJAYEBLwH/AckBgQEvAf8ByQGB
     148        AS8B/wG6AYEBLwH/Ay8B/wQAAi8BgQH/Ai8B6QH/Ai8B3gH/Ai8B3gH/Ai8B3gH/AvQB/Q3/AnUB5wH/
     149        Ai8B3gH/Ai8B3gH/Ai8B3gH/Ai8B0gH/Ay8B/4QAAYEBZQEvAf8B2QGRAS8B/wHOAYMBLwH/Ac4BgwEv
     150        Af8BzgGDAS8B/wHOAYMBLwH/Ac4BgwEvAf8B1wGcAWAB/wHOAYMBLwH/Ac4BgwEvAf8BzgGDAS8B/wHO
     151        AYMBLwH/Ac4BgwEvAf8BvQGBAS8B/wFiAhcB+QQAAS8BNAGBAf8CLwHsAf8CLwHiAf8CLwHiAf8C9AH9
     152        Ff8CdQHqAf8CLwHiAf8CLwHiAf8CLwHUAf8BYgIXAfmEAAEyATABLwH/AdsBlAEvAf8B0gGJAS8B/wHS
     153        AYkBLwH/AdIBiQEvAf8B0gGJAS8B/wHSAYkBLwH/AesBywGQAf8B0gGJAS8B/wHSAYkBLwH/AdIBiQEv
     154        Af8B0gGJAS8B/wHEAYEBLwH/Ab8BgQEvAf8BUAIyAZsEAAIvATIB/wIvAe0B/wIvAeYB/wIvAeUB/wL9
     155        Af4F/wLiAfwB/wIvAeUJ/wKBAfEB/wIvAeUB/wIvAdoB/wIvAdYB/wFQAjIBm4QAAVYCLQGyAd4BmAEv
     156        Af8B2wGUAS8B/wHXAY4BLwH/AdcBjgEvAf8B1wGOAS8B/wH7AfYB6wX/AdcBjgEvAf8B1wGOAS8B/wHX
     157        AY4BLwH/AdYBjQEvAf8BxAGBAS8B/wGpAYEBLwH/CAABVgItAbIBLwE5Ae8B/wIvAe0B/wIvAekB/wIv
     158        AekB/wLhAfwB/wIvAekB/wIvAekB/wIvAekB/wKBAfMB/wIvAekB/wIvAegB/wIvAdoB/wEvATcBnQH/
     159        jAABaQFOAS8B/wHdAZcBLwH/AdsBlAEvAf8B2wGUAS8B/wHbAZQBLwH/AdsBlAEvAf8B3AGXATUB/wHb
     160        AZQBLwH/AdsBlAEvAf8B1QGMAS8B/wHJAYEBLwH/AdEBiAEvAf8BKwIiAfwMAAIvAWMB/wIvAe8B/wIv
     161        Ae0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAe0B/wIvAegB/wIvAd4B/wEvAUIB4gH/
     162        ASsCIgH8jAABGAIXASEBkAGBAS8B/wHfAZkBLwH/AdsBlAEvAf8B2QGRAS8B/wHYAZABLwH/AdgBkAEv
     163        Af8B0wGKAS8B/wHQAYYBLwH/Ac4BgwEvAf8B2gGSAS8B/wE6ATUBLwH/EAABGAIXASECLwGHAf8BLwE1
     164        AfEB/wIvAe0B/wIvAewB/wIvAesB/wIvAesB/wIvAeYB/wIvAeQB/wIvAeIB/wEvAUwB5gH/Ai8BOQH/
     165        lAADEAEWAVQBRgEvAf8B0gGJAS8B/wHiAZ0BLwH/AdkBkQEvAf8B1wGOAS8B/wHVAYwBLwH/AeEBmwEv
     166        Af8BzgGEAS8B/wFQAjAB/hgAAxABFgIvAVMB/wEvATUB0wH/AS8BRgH0Af8CLwHsAf8CLwHpAf8BLwEw
     167        AegB/wEvAU4B8AH/Ai8BzAH/AVACMAH+oAABRQI0AX0DLwH/AYEBZwEvAf8CgQEvAf8BYQFSAS8B/wFQ
     168        AjAB/gMTARokAAFFAjQBfQMvAf8CLwGBAf8CLwGBAf8CLwFjAf8BUAIwAf4DEwEa/wCRAAFCAU0BPgcA
     169        AT4DAAEoAwABQAMAARADAAEBAQABAQUAAYAXAAP/AQAB/AEfAfwBHwQAAfABBwHwAQcEAAHgAQMB4AED
     170        BAABwAEBAcABAQQAAYABAQGAAQEEAAGAAQABgAUAAYABAAGABQABgAEAAYAFAAGAAQABgAUAAYABAAGA
     171        BQABgAEBAYABAQQAAcABAQHAAQEEAAHAAQMBwAEDBAAB4AEHAeABBwQAAfgBDwH4AQ8EAAT/BAAL
    173172</value>
    174173  </data>
  • trunk/sources/HeuristicLab.Hive.Client.Core/3.2/ClientConsoleService/ClientConsoleCommunicator.cs

    r2009 r3203  
    3636
    3737    public void SetUptimeCalendar(List<Appointment> appointments) {
    38       UptimeManager.Instance.Appointments = appointments;
     38      UptimeManager.Instance.SetAppointments(true, false, appointments);
    3939    }
    4040
    4141    public List<Appointment> GetUptimeCalendar() {
    42       return UptimeManager.Instance.Appointments;
     42      return UptimeManager.Instance.AppContainer.Appointments;
    4343    }
    4444
  • trunk/sources/HeuristicLab.Hive.Client.Core/3.2/ConfigurationManager/UptimeManager.cs

    r2025 r3203  
    77using System.IO;
    88using HeuristicLab.Hive.Client.Common;
     9using HeuristicLab.Hive.Contracts.BusinessObjects;
     10using HeuristicLab.Hive.Contracts;
    911
    1012namespace HeuristicLab.Hive.Client.Core.ConfigurationManager {
    1113  public class UptimeManager {
    1214
    13     private List<Appointment> appointments = null;
    14     public List<Appointment> Appointments {
     15    private AppointmentContainer _appContainer = null;
     16    public AppointmentContainer AppContainer {
    1517      get {
    16         if (appointments == null)
     18        if (_appContainer == null)
    1719          RestoreFromHDD();
    18         return appointments;
     20        return _appContainer;
    1921      }
    20       set {
    21         appointments = value;
    22         PersistToHDD();
    23       }
    24     }
    25     private static String path = System.IO.Directory.GetCurrentDirectory()+"\\plugins\\Hive.Client.Jobs\\";
     22    }   
     23    public bool CalendarAvailable { get; set; }
     24
     25    private static String path = System.IO.Directory.GetCurrentDirectory() + "\\plugins\\Hive.Client.Jobs\\";
    2626
    2727    private static UptimeManager instance = null;
     
    3636
    3737    private void PersistToHDD() {
    38       XmlSerializer s = new XmlSerializer(typeof(List<Appointment>));
     38      XmlSerializer s = new XmlSerializer(typeof(AppointmentContainer));
    3939      if (!Directory.Exists(path))
    4040        Directory.CreateDirectory(path);
     
    4242      try {
    4343        w = new StreamWriter(path + "calendar.xml");
    44         s.Serialize(w, Appointments); 
    45       } catch(Exception e) {
     44        s.Serialize(w, AppContainer);
     45      }
     46      catch (Exception e) {
    4647        Logging.Instance.Error(this.ToString(), "Persistance of the Calendar failed!", e);
    47       } finally {
    48         if(w!=null)
     48      }
     49      finally {
     50        if (w != null)
    4951          w.Close();
    5052      }
     
    5254
    5355    private void RestoreFromHDD() {
    54       XmlSerializer s = new XmlSerializer(typeof(List<Appointment>));
    55       if(File.Exists(Path.Combine(path, "calendar.xml"))) {
     56      XmlSerializer s = new XmlSerializer(typeof(AppointmentContainer));
     57      if (File.Exists(Path.Combine(path, "calendar.xml"))) {
    5658        TextReader r = null;
    57        
     59
    5860        try {
    5961          r = new StreamReader(path + "calendar.xml");
    60           Appointments = (List<Appointment>)s.Deserialize(r);       
    61         } catch (Exception e) {
     62          _appContainer = (AppointmentContainer)s.Deserialize(r);
     63          CalendarAvailable = true;
     64        }
     65        catch (Exception e) {
    6266          Logging.Instance.Error(this.ToString(), "Deserialization of Calendar failed", e);
    6367          Logging.Instance.Info(this.ToString(), "Starting with a new one");
    64           appointments = new List<Appointment>();
    65         } finally {
    66           if(r!=null)
    67             r.Close();         
     68          _appContainer = new AppointmentContainer();
     69          CalendarAvailable = false;
     70        }
     71        finally {
     72          if (r != null)
     73            r.Close();
    6874        }
    6975      } else {
    70         Appointments = new List<Appointment>();
     76        _appContainer = new AppointmentContainer();
    7177      }
    7278    }
    7379
    74     public bool isOnline() {
    75       foreach (Appointment app in Appointments)
    76         if ((DateTime.Now >= app.StartDate) &&
    77             (DateTime.Now <= app.EndDate))
    78           return true;
    79       return false;
     80    public bool IsOnline() {
     81      return AppContainer.Appointments.Any(app => (DateTime.Now >= app.StartDate) && (DateTime.Now <= app.EndDate));
     82    }
     83
     84    public bool SetAppointments(bool isLocal, bool isForced, IEnumerable<Appointment> appointments) {
     85      if (!isForced && !isLocal && AppContainer.IsLocal)
     86        return false;
     87
     88      AppContainer.Appointments = new List<Appointment>(appointments);
     89      AppContainer.IsLocal = isLocal;
     90      AppContainer.Updated = DateTime.Now;
     91      CalendarAvailable = true;
     92     
     93      PersistToHDD();
     94     
     95      return true;
     96    }
     97
     98    internal bool SetAppointments(bool isLocal, ResponseCalendar response) {
     99      IList<Appointment> app = new List<Appointment>();
     100      foreach (AppointmentDto appointmentDto in response.Appointments) {
     101        app.Add(new Appointment {
     102          AllDayEvent = appointmentDto.AllDayEvent,
     103          EndDate = appointmentDto.EndDate,
     104          StartDate = appointmentDto.StartDate,
     105          Recurring = appointmentDto.Recurring,
     106
     107          RecurringId = appointmentDto.RecurringId,
     108          Locked = true,
     109          Subject = "Online",
     110        });
     111      }
     112      return SetAppointments(isLocal, response.ForceFetch, app);
    80113    }
    81114  }
  • trunk/sources/HeuristicLab.Hive.Client.Core/3.2/Core.cs

    r3022 r3203  
    8888        wcfService.SetIPAndPort(cc.IPAdress, cc.Port);
    8989
    90       if (UptimeManager.Instance.isOnline())
     90      if (!UptimeManager.Instance.CalendarAvailable || UptimeManager.Instance.IsOnline())
    9191        wcfService.Connect();
    9292
     
    191191          break;
    192192
     193          //Fetch or Force Fetch Calendar!
     194        case MessageContainer.MessageType.FetchOrForceFetchCalendar:
     195          ResponseCalendar rescal = wcfService.GetCalendarSync(ConfigManager.Instance.GetClientInfo().Id);
     196          if(rescal.Success) {
     197            if(!UptimeManager.Instance.SetAppointments(false, rescal)) {
     198              wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.NotAllowedToFetch);             
     199            } else {
     200              wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.Fetched);             
     201            }
     202          } else {
     203            wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.NotAllowedToFetch);
     204          }
     205        break;
    193206
    194207        //Hard shutdown of the client
     
    263276      Logging.Instance.Info(this.ToString(), "END: Sended snapshot sync");
    264277      //Uptime Limit reached, now is a good time to destroy this jobs.
    265       if (!UptimeManager.Instance.isOnline()) {
     278      if (!UptimeManager.Instance.IsOnline()) {
    266279        KillAppDomain(jId);
    267280        //Still anything running?
     
    381394    /// <param name="e"></param>
    382395    void wcfService_Connected(object sender, EventArgs e) {
    383       wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());
    384       JobStorageManager.CheckAndSubmitJobsFromDisc();
    385       currentlyFetching = false;
     396      if (!UptimeManager.Instance.CalendarAvailable) {
     397        ResponseCalendar calres = wcfService.GetCalendarSync(ConfigManager.Instance.GetClientInfo().Id);
     398        if(calres.Success) {
     399          if (UptimeManager.Instance.SetAppointments(false, calres))
     400            wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.Fetched);
     401          else
     402            wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.NotAllowedToFetch);
     403        }
     404        else {
     405          wcfService.SetCalendarStatus(ConfigManager.Instance.GetClientInfo().Id, CalendarState.NotAllowedToFetch);
     406        }
     407      }
     408      //if the fetching from the server failed - still set the client online... maybe we get
     409      //a result within the next few heartbeats
     410      if (!UptimeManager.Instance.CalendarAvailable || UptimeManager.Instance.IsOnline()) {
     411        wcfService.LoginSync(ConfigManager.Instance.GetClientInfo());
     412        JobStorageManager.CheckAndSubmitJobsFromDisc();
     413        currentlyFetching = false;
     414      }
    386415    }
    387416
  • trunk/sources/HeuristicLab.Hive.Client.Core/3.2/Heartbeat.cs

    r3011 r3203  
    8989      TimeSpan span = DateTime.Now - lastFullHour;
    9090      if (span.TotalSeconds < (Interval/1000)) {
    91         if (UptimeManager.Instance.isOnline()) {
     91        if (UptimeManager.Instance.IsOnline() && UptimeManager.Instance.CalendarAvailable) {
    9292          //That's quiet simple: Just reconnect and you're good for new jobs
    9393          if (wcfService.ConnState != NetworkEnum.WcfConnState.Loggedin) {
  • trunk/sources/HeuristicLab.Hive.Client.Core/3.2/HeuristicLab.Hive.Client.Core-3.2.csproj

    r3022 r3203  
    9696    <Compile Include="ClientConsoleService\TransferObjects\JobStatus.cs" />
    9797    <Compile Include="ClientConsoleService\TransferObjects\StatusCommons.cs" />
     98    <Compile Include="ConfigurationManager\AppointmentContainer.cs" />
    9899    <Compile Include="ConfigurationManager\ClientStatusInfo.cs" />
    99100    <Compile Include="ConfigurationManager\ConfigManager.cs" />
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/ApplicationConstants.cs

    r2005 r3203  
    8282    public static string RESPONSE_COMMUNICATOR_JOB_WAS_ABORTED = "Job was aborted";
    8383
     84    public static string RESPONSE_COMMUNICATOR_FETCH_OR_FORCEFETCH_CALENDAR =
     85      "new Calendar must be fetched / force fetched";
     86
    8487    public static string RESPONSE_JOB_ALL_JOBS = "Job.AllJobs";
    8588    public static string RESPONSE_JOB_GET_JOB_BY_ID = "Job.GetJobById";
     
    101104    public static string RESPONSE_JOB_PROJECT_DOESNT_EXIST = "The specified project doesn't exist";
    102105    public static string RESPONSE_JOB_PROJECT_DELETED = "The project was sucessfully deleted";
     106
     107    public static string RESPONSE_UPTIMECALENDAR_NO_CALENDAR_FOUND = "No Calendar could be found anywhere in the tree";
     108    public static string RESPONSE_UPTIMECALENDAR_STATUS_UPDATED = "Calendar status has been updated";
    103109  }
    104110}
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/BusinessObjects/ClientDto.cs

    r3011 r3203  
    2929
    3030  public enum State { nullState, idle, calculating, offline, finished, abort, requestSnapshot, requestSnapshotSent, pending };
     31  public enum CalendarState { Fetch, ForceFetch, Fetching, Fetched, NotAllowedToFetch };
    3132
    3233  [DataContract]
     
    4849    public State State { get; set; }
    4950    [DataMember]
     51    public CalendarState CalendarSyncStatus { get; set; }
     52    [DataMember]
    5053    public ClientConfigDto Config { get; set; }
    5154
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/HeuristicLab.Hive.Contracts-3.2.csproj

    r3022 r3203  
    102102    <Compile Include="BusinessObjects\ClientConfigDto.cs" />
    103103    <Compile Include="RecurrentEvent.cs" />
     104    <Compile Include="ResponseCalendar.cs" />
    104105    <Compile Include="ResponseSerializedJob.cs" />
    105106    <Compile Include="MultiStream.cs" />
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IClientCommunicator.cs

    r3011 r3203  
    6060    [OperationContract]
    6161    ResponsePlugin SendPlugins(List<HivePluginInfoDto> pluginList);
     62
     63    [OperationContract]
     64    ResponseCalendar GetCalendar(Guid clientId);
     65    [OperationContract]
     66    Response SetCalendarStatus(Guid clientId, CalendarState state);
     67
    6268  }
    6369}
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/Interfaces/IClientManager.cs

    r3022 r3203  
    5757    [OperationContract]
    5858    ResponseList<AppointmentDto> GetUptimeCalendarForResource(Guid guid);
    59 
    6059    [OperationContract]
    61     Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments);
     60    Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments, bool isForced);
    6261  }
    6362}
  • trunk/sources/HeuristicLab.Hive.Contracts/3.2/MessageContainer.cs

    r2025 r3203  
    3333  public class MessageContainer {
    3434
    35     public enum MessageType { FetchJob, AbortJob, JobAborted, RequestSnapshot, FinishedJob, NoMessage, SnapshotReady, Shutdown, JobFailed, UptimeLimitDisconnect };
     35    public enum MessageType { FetchJob, AbortJob, JobAborted, RequestSnapshot, FinishedJob, NoMessage, SnapshotReady, Shutdown, JobFailed, UptimeLimitDisconnect,
     36      FetchOrForceFetchCalendar
     37    };
    3638
    3739    public MessageType Message { get; set; }
  • trunk/sources/HeuristicLab.Hive.Server.Console/3.2/CgCalendar.Designer.cs

    r3022 r3203  
    2424    /// </summary>
    2525    private void InitializeComponent() {
    26       Calendar.DrawTool drawTool6 = new Calendar.DrawTool();
     26      Calendar.DrawTool drawTool2 = new Calendar.DrawTool();
    2727      this.dvOnline = new Calendar.DayView();
    2828      this.btnSaveCal = new System.Windows.Forms.Button();
     
    3939      this.btCreate = new System.Windows.Forms.Button();
    4040      this.mcOnline = new System.Windows.Forms.MonthCalendar();
     41      this.btnClearCal = new System.Windows.Forms.Button();
     42      this.cbx_forcePush = new System.Windows.Forms.CheckBox();
    4143      this.groupBox1.SuspendLayout();
    4244      this.SuspendLayout();
     
    4446      // dvOnline
    4547      //
    46       drawTool6.DayView = this.dvOnline;
    47       this.dvOnline.ActiveTool = drawTool6;
     48      drawTool2.DayView = this.dvOnline;
     49      this.dvOnline.ActiveTool = drawTool2;
    4850      this.dvOnline.AmPmDisplay = false;
    4951      this.dvOnline.AppointmentDuration = Calendar.AppointmentSlotDuration.SixtyMinutes;
     
    6870      // btnSaveCal
    6971      //
    70       this.btnSaveCal.Location = new System.Drawing.Point(642, 144);
     72      this.btnSaveCal.Location = new System.Drawing.Point(642, 49);
    7173      this.btnSaveCal.Name = "btnSaveCal";
    7274      this.btnSaveCal.Size = new System.Drawing.Size(199, 23);
    7375      this.btnSaveCal.TabIndex = 45;
    74       this.btnSaveCal.Text = "Save calender";
     76      this.btnSaveCal.Text = "Save Calendar";
    7577      this.btnSaveCal.UseVisualStyleBackColor = true;
    7678      this.btnSaveCal.Click += new System.EventHandler(this.btnSaveCal_Click);
     
    185187      this.btCreate.Size = new System.Drawing.Size(242, 26);
    186188      this.btCreate.TabIndex = 20;
    187       this.btCreate.Text = "Save";
     189      this.btCreate.Text = "Save Appointment";
    188190      this.btCreate.UseVisualStyleBackColor = true;
    189191      this.btCreate.Click += new System.EventHandler(this.btCreate_Click);
     
    197199      this.mcOnline.DateChanged += new System.Windows.Forms.DateRangeEventHandler(this.mcOnline_DateChanged);
    198200      //
     201      // btnClearCal
     202      //
     203      this.btnClearCal.Location = new System.Drawing.Point(642, 18);
     204      this.btnClearCal.Name = "btnClearCal";
     205      this.btnClearCal.Size = new System.Drawing.Size(199, 23);
     206      this.btnClearCal.TabIndex = 46;
     207      this.btnClearCal.Text = "Clear Calendar";
     208      this.btnClearCal.UseVisualStyleBackColor = true;
     209      this.btnClearCal.Click += new System.EventHandler(this.btnClearCal_Click);
     210      //
     211      // cbx_forcePush
     212      //
     213      this.cbx_forcePush.AutoSize = true;
     214      this.cbx_forcePush.Location = new System.Drawing.Point(642, 78);
     215      this.cbx_forcePush.Name = "cbx_forcePush";
     216      this.cbx_forcePush.Size = new System.Drawing.Size(80, 17);
     217      this.cbx_forcePush.TabIndex = 47;
     218      this.cbx_forcePush.Text = "Force Push";
     219      this.cbx_forcePush.UseVisualStyleBackColor = true;
     220      //
    199221      // CgCalendar
    200222      //
     
    202224      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    203225      this.ClientSize = new System.Drawing.Size(859, 558);
     226      this.Controls.Add(this.cbx_forcePush);
     227      this.Controls.Add(this.btnClearCal);
    204228      this.Controls.Add(this.btnSaveCal);
    205229      this.Controls.Add(this.groupBox1);
     
    207231      this.Controls.Add(this.dvOnline);
    208232      this.Name = "CgCalendar";
    209       this.Text = "CgCalendar";
     233      this.Text = "Calendar";
    210234      this.groupBox1.ResumeLayout(false);
    211235      this.groupBox1.PerformLayout();
    212236      this.ResumeLayout(false);
     237      this.PerformLayout();
    213238
    214239    }
     
    230255    private System.Windows.Forms.MonthCalendar mcOnline;
    231256    private Calendar.DayView dvOnline;
     257    private System.Windows.Forms.Button btnClearCal;
     258    private System.Windows.Forms.CheckBox cbx_forcePush;
    232259  }
    233260}
  • trunk/sources/HeuristicLab.Hive.Server.Console/3.2/CgCalendar.cs

    r3022 r3203  
    261261        appointments.Add(apdto);
    262262      }
    263       ServiceLocator.GetClientManager().SetUptimeCalendarForResource(ResourceId, appointments);     
     263      ServiceLocator.GetClientManager().SetUptimeCalendarForResource(ResourceId, appointments, cbx_forcePush.Checked);     
    264264    }
    265265
     
    282282      onlineTimes.Add(Appointment);
    283283    }
     284
     285    private void btnClearCal_Click(object sender, EventArgs e) {
     286      onlineTimes.Clear();
     287    }
    284288  }
    285289}
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientCommunicator.cs

    r3018 r3203  
    6161    private ILifecycleManager lifecycleManager;
    6262    private IInternalJobManager jobManager;
    63     private IScheduler scheduler;   
     63    private IScheduler scheduler;
    6464
    6565    private static int PENDING_TIMEOUT = 100;
     
    109109                jobManager.ResetJobsDependingOnResults(job);
    110110              }
    111             }
    112             else {
     111            } else {
    113112              DateTime lastHbOfClient = lastHeartbeats[client.Id];
    114113
     
    139138
    140139            heartbeatLock.ExitUpgradeableReadLock();
    141           }
    142           else {
     140          } else {
    143141            //TODO: RLY neccesary?
    144142            //HiveLogger.Info(this.ToString() + ": Client " + client.Id + " has wrong state: Shouldn't have offline or nullstate, has " + client.State);
     
    155153        CheckForPendingJobs();
    156154        DaoLocator.DestroyContext();
    157         scope.Complete();       
     155        scope.Complete();
    158156      }
    159157    }
     
    167165            if (pendingJobs[currJob.Id] <= 0) {
    168166              currJob.State = State.offline;
    169               DaoLocator.JobDao.Update(currJob);
    170               //jobAdapter.Update(currJob);
     167              DaoLocator.JobDao.Update(currJob);             
    171168            } else {
    172169              pendingJobs[currJob.Id]--;
     
    186183    /// <returns></returns>
    187184    public Response Login(ClientDto clientInfo) {
    188     //  ISession session = factory.GetSessionForCurrentThread();
    189     //  ITransaction tx = null;
    190 
    191     //  try {
    192     //    IClientAdapter clientAdapter =
    193     //      session.GetDataAdapter<ClientInfo, IClientAdapter>();
    194 
    195     //    tx = session.BeginTransaction();
    196 
    197         Response response = new Response();
    198 
    199         heartbeatLock.EnterWriteLock();
    200         if (lastHeartbeats.ContainsKey(clientInfo.Id)) {
    201           lastHeartbeats[clientInfo.Id] = DateTime.Now;
    202         } else {
    203           lastHeartbeats.Add(clientInfo.Id, DateTime.Now);
    204         }
    205         heartbeatLock.ExitWriteLock();
    206 
    207         clientInfo.State = State.idle;
    208 
    209         if (DaoLocator.ClientDao.FindById(clientInfo.Id) == null)
    210           DaoLocator.ClientDao.Insert(clientInfo);
    211         else
    212           DaoLocator.ClientDao.Update(clientInfo);       
     185      Response response = new Response();
     186
     187      heartbeatLock.EnterWriteLock();
     188      if (lastHeartbeats.ContainsKey(clientInfo.Id)) {
     189        lastHeartbeats[clientInfo.Id] = DateTime.Now;
     190      } else {
     191        lastHeartbeats.Add(clientInfo.Id, DateTime.Now);
     192      }
     193      heartbeatLock.ExitWriteLock();
     194
     195      clientInfo.State = State.idle;
     196
     197      if (DaoLocator.ClientDao.FindById(clientInfo.Id) == null)
     198        DaoLocator.ClientDao.Insert(clientInfo);
     199      else
     200        DaoLocator.ClientDao.Update(clientInfo);
     201      response.Success = true;
     202      response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGIN_SUCCESS;
     203      return response;
     204    }
     205
     206    public ResponseCalendar GetCalendar(Guid clientId) {
     207      ResponseCalendar response = new ResponseCalendar();
     208
     209      ClientDto client = DaoLocator.ClientDao.FindById(clientId);
     210      if(client == null) {
     211        response.Success = false;
     212        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_NOT_FOUND;
     213        return response;
     214      }
     215     
     216      response.ForceFetch = (client.CalendarSyncStatus == CalendarState.ForceFetch);
     217     
     218      IEnumerable<AppointmentDto> appointments = DaoLocator.UptimeCalendarDao.GetCalendarForClient(client);
     219      if (appointments.Count() == 0) {
     220        response.StatusMessage = ApplicationConstants.RESPONSE_UPTIMECALENDAR_NO_CALENDAR_FOUND;
     221        response.Success = false;
     222      } else {
    213223        response.Success = true;
    214         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGIN_SUCCESS;
    215 
    216         //tx.Commit();
    217         return response;
    218       //}
    219       /*catch (Exception ex) {
    220         if (tx != null)
    221           tx.Rollback();
    222         throw ex;
    223       }
    224       finally {
    225         if (session != null)
    226           session.EndSession();
    227       } */
     224        response.Appointments = appointments;
     225      }
     226
     227      client.CalendarSyncStatus = CalendarState.Fetched;
     228      DaoLocator.ClientDao.Update(client);
     229      return response;
     230    }
     231
     232    public Response SetCalendarStatus(Guid clientId, CalendarState state) {
     233      Response response = new Response();     
     234      ClientDto client = DaoLocator.ClientDao.FindById(clientId);
     235      if (client == null) {
     236        response.Success = false;
     237        response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_NOT_FOUND;
     238      }
     239     
     240      client.CalendarSyncStatus = state;
     241      DaoLocator.ClientDao.Update(client);
     242     
     243      response.Success = true;
     244      response.StatusMessage = ApplicationConstants.RESPONSE_UPTIMECALENDAR_STATUS_UPDATED;
     245     
     246      return response;
    228247    }
    229248
     
    243262      HiveLogger.Debug(this.ToString() + ": END Started Transaction");
    244263
    245         ResponseHB response = new ResponseHB();
    246         response.ActionRequest = new List<MessageContainer>();
    247 
    248         HiveLogger.Debug(this.ToString() + ": BEGIN Started Client Fetching");
    249         ClientDto client = DaoLocator.ClientDao.FindById(hbData.ClientId);
    250         HiveLogger.Debug(this.ToString() + ": END Finished Client Fetching");
    251         // check if the client is logged in
    252         if (client.State == State.offline || client.State == State.nullState) {
    253           response.Success = false;
    254           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_USER_NOT_LOGGED_IN;         
    255           response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.NoMessage));
    256 
    257           HiveLogger.Error(this.ToString() + " ProcessHeartBeat: Client state null or offline: " + client);
    258 
    259           return response;
    260         }
    261 
    262         client.NrOfFreeCores = hbData.FreeCores;
    263         client.FreeMemory = hbData.FreeMemory;
    264 
    265         // save timestamp of this heartbeat
    266         HiveLogger.Debug(this.ToString() + ": BEGIN Locking for Heartbeats");
    267         heartbeatLock.EnterWriteLock();
    268         HiveLogger.Debug(this.ToString() + ": END Locked for Heartbeats");
    269         if (lastHeartbeats.ContainsKey(hbData.ClientId)) {
    270           lastHeartbeats[hbData.ClientId] = DateTime.Now;
    271         } else {
    272           lastHeartbeats.Add(hbData.ClientId, DateTime.Now);
    273         }
    274         heartbeatLock.ExitWriteLock();
    275 
    276         // check if client has a free core for a new job
    277         // if true, ask scheduler for a new job for this client
    278         HiveLogger.Debug(this.ToString() + ": BEGIN Looking for Client Jobs");
    279         if (hbData.FreeCores > 0 && scheduler.ExistsJobForClient(hbData)) {
    280           response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.FetchJob));
    281         } else {
    282           response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.NoMessage));
    283         }
    284         HiveLogger.Debug(this.ToString() + ": END Looked for Client Jobs");
     264      ResponseHB response = new ResponseHB();
     265      response.ActionRequest = new List<MessageContainer>();
     266
     267      HiveLogger.Debug(this.ToString() + ": BEGIN Started Client Fetching");
     268      ClientDto client = DaoLocator.ClientDao.FindById(hbData.ClientId);
     269      HiveLogger.Debug(this.ToString() + ": END Finished Client Fetching");
     270      // check if the client is logged in
     271      if (client.State == State.offline || client.State == State.nullState) {
     272        response.Success = false;
     273        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_USER_NOT_LOGGED_IN;
     274        response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.NoMessage));
     275
     276        HiveLogger.Error(this.ToString() + " ProcessHeartBeat: Client state null or offline: " + client);
     277
     278        return response;
     279      }
     280
     281      client.NrOfFreeCores = hbData.FreeCores;
     282      client.FreeMemory = hbData.FreeMemory;
     283
     284      // save timestamp of this heartbeat
     285      HiveLogger.Debug(this.ToString() + ": BEGIN Locking for Heartbeats");
     286      heartbeatLock.EnterWriteLock();
     287      HiveLogger.Debug(this.ToString() + ": END Locked for Heartbeats");
     288      if (lastHeartbeats.ContainsKey(hbData.ClientId)) {
     289        lastHeartbeats[hbData.ClientId] = DateTime.Now;
     290      } else {
     291        lastHeartbeats.Add(hbData.ClientId, DateTime.Now);
     292      }
     293      heartbeatLock.ExitWriteLock();
     294
     295      HiveLogger.Debug(this.ToString() + ": BEGIN Processing Heartbeat Jobs");
     296      processJobProcess(hbData, response);
     297      HiveLogger.Debug(this.ToString() + ": END Processed Heartbeat Jobs");
     298
     299      //check if new Cal must be loaded
     300      if (client.CalendarSyncStatus == CalendarState.Fetch || client.CalendarSyncStatus == CalendarState.ForceFetch) {
    285301        response.Success = true;
    286         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_HEARTBEAT_RECEIVED;
    287 
    288         HiveLogger.Debug(this.ToString() + ": BEGIN Processing Heartbeat Jobs");
    289         processJobProcess(hbData, response);
    290         HiveLogger.Debug(this.ToString() + ": END Processed Heartbeat Jobs");
     302        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_FETCH_OR_FORCEFETCH_CALENDAR;
     303        response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.FetchOrForceFetchCalendar));
    291304       
    292         DaoLocator.ClientDao.Update(client);
    293 
    294         //tx.Commit();
    295         HiveLogger.Debug(this.ToString() + ": END Processed Heartbeat for Client " + hbData.ClientId);
    296         return response;
    297       }
     305        //client.CalendarSyncStatus = CalendarState.Fetching;
     306       
     307        HiveLogger.Info(this.ToString() + " fetch or forcefetch sent");       
     308      }
     309
     310      // check if client has a free core for a new job
     311      // if true, ask scheduler for a new job for this client
     312      HiveLogger.Debug(this.ToString() + ": BEGIN Looking for Client Jobs");
     313      if (hbData.FreeCores > 0 && scheduler.ExistsJobForClient(hbData)) {
     314        response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.FetchJob));
     315      } else {
     316        response.ActionRequest.Add(new MessageContainer(MessageContainer.MessageType.NoMessage));
     317      }
     318      HiveLogger.Debug(this.ToString() + ": END Looked for Client Jobs");
     319      response.Success = true;
     320      response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_HEARTBEAT_RECEIVED;
     321
     322      DaoLocator.ClientDao.Update(client);
     323
     324      //tx.Commit();
     325      HiveLogger.Debug(this.ToString() + ": END Processed Heartbeat for Client " + hbData.ClientId);
     326      return response;
     327    }
    298328
    299329    /// <summary>
     
    305335    /// <param name="response"></param>
    306336    private void processJobProcess(HeartBeatData hbData, ResponseHB response) {
    307       HiveLogger.Info(this.ToString() + " processJobProcess: Started for Client " + hbData.ClientId);     
    308      
     337      HiveLogger.Info(this.ToString() + " processJobProcess: Started for Client " + hbData.ClientId);
     338
    309339      if (hbData.JobProgress != null && hbData.JobProgress.Count > 0) {
    310340        List<JobDto> jobsOfClient = new List<JobDto>(DaoLocator.JobDao.FindActiveJobsOfClient(DaoLocator.ClientDao.FindById(hbData.ClientId)));
     
    312342          response.Success = false;
    313343          response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED;
    314           HiveLogger.Error(this.ToString() + " processJobProcess: There is no job calculated by this user " + hbData.ClientId);     
     344          HiveLogger.Error(this.ToString() + " processJobProcess: There is no job calculated by this user " + hbData.ClientId);
    315345          return;
    316346        }
     
    322352            response.Success = false;
    323353            response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED;
    324             HiveLogger.Error(this.ToString() + " processJobProcess: There is no job calculated by this user " + hbData.ClientId + " Job: " + curJob);     
     354            HiveLogger.Error(this.ToString() + " processJobProcess: There is no job calculated by this user " + hbData.ClientId + " Job: " + curJob);
    325355          } else if (curJob.State == State.abort) {
    326356            // a request to abort the job has been set
     
    351381              if (newAssignedJobs.ContainsKey(currJob.Id)) {
    352382                newAssignedJobs[currJob.Id]--;
    353                 HiveLogger.Error(this.ToString() + " processJobProcess: Job TTL Reduced by one for job: " + currJob + "and is now: " + newAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Client);                     
     383                HiveLogger.Error(this.ToString() + " processJobProcess: Job TTL Reduced by one for job: " + currJob + "and is now: " + newAssignedJobs[currJob.Id] + ". User that sucks: " + currJob.Client);
    354384                if (newAssignedJobs[currJob.Id] <= 0) {
    355                   HiveLogger.Error(this.ToString() + " processJobProcess: Job TTL reached Zero, Job gets removed: " + currJob + " and set back to offline. User that sucks: " + currJob.Client);                 
     385                  HiveLogger.Error(this.ToString() + " processJobProcess: Job TTL reached Zero, Job gets removed: " + currJob + " and set back to offline. User that sucks: " + currJob.Client);
    356386
    357387                  currJob.State = State.offline;
     
    363393                }
    364394              } else {
    365                 HiveLogger.Error(this.ToString() + " processJobProcess: Job ID wasn't with the heartbeats:  " + currJob);                     
     395                HiveLogger.Error(this.ToString() + " processJobProcess: Job ID wasn't with the heartbeats:  " + currJob);
    366396                currJob.State = State.offline;
    367397                DaoLocator.JobDao.Update(currJob);
     
    372402
    373403              if (newAssignedJobs.ContainsKey(currJob.Id)) {
    374                 HiveLogger.Info(this.ToString() + " processJobProcess: Job is sending a heart beat, removing it from the newAssignedJobList: " + currJob);                     
     404                HiveLogger.Info(this.ToString() + " processJobProcess: Job is sending a heart beat, removing it from the newAssignedJobList: " + currJob);
    375405                newAssignedJobs.Remove(currJob.Id);
    376406              }
     
    454484            newAssignedJobs.Add(job2Calculate.Id, ApplicationConstants.JOB_TIME_TO_LIVE);
    455485        }
    456       }
    457       else {
     486      } else {
    458487        response.Success = false;
    459488        response.Job = null;
     
    472501
    473502      HiveLogger.Info(this.ToString() + " ProcessJobResult: BEGIN Job received for Storage - main method:");
    474      
    475      
     503
     504
    476505      Stream jobResultStream = null;
    477506      Stream jobStream = null;
    478507
    479508      //try {
    480         BinaryFormatter formatter =
    481           new BinaryFormatter();
    482 
    483         JobResult result =
    484           (JobResult)formatter.Deserialize(stream);
    485 
    486         //important - repeatable read isolation level is required here,
    487         //otherwise race conditions could occur when writing the stream into the DB
    488         //just removed TransactionIsolationLevel.RepeatableRead
    489         //tx = session.BeginTransaction();
    490 
    491         ResponseResultReceived response =
    492           ProcessJobResult(
    493           result.ClientId,
    494           result.JobId,
    495           new byte[] { },
    496           result.Percentage,
    497           result.Exception,
    498           finished);
    499 
    500         if (response.Success) {
    501           jobStream = DaoLocator.JobDao.GetSerializedJobStream(result.JobId);
    502 
    503           byte[] buffer = new byte[3024];
    504           int read = 0;
    505           while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) {           
    506             jobStream.Write(buffer, 0, read);
    507           }
    508           jobStream.Close();         
    509         }                   
    510         HiveLogger.Info(this.ToString() + " ProcessJobResult: END Job received for Storage:");
    511         return response;
    512       }
     509      BinaryFormatter formatter =
     510        new BinaryFormatter();
     511
     512      JobResult result =
     513        (JobResult)formatter.Deserialize(stream);
     514
     515      //important - repeatable read isolation level is required here,
     516      //otherwise race conditions could occur when writing the stream into the DB
     517      //just removed TransactionIsolationLevel.RepeatableRead
     518      //tx = session.BeginTransaction();
     519
     520      ResponseResultReceived response =
     521        ProcessJobResult(
     522        result.ClientId,
     523        result.JobId,
     524        new byte[] { },
     525        result.Percentage,
     526        result.Exception,
     527        finished);
     528
     529      if (response.Success) {
     530        jobStream = DaoLocator.JobDao.GetSerializedJobStream(result.JobId);
     531
     532        byte[] buffer = new byte[3024];
     533        int read = 0;
     534        while ((read = stream.Read(buffer, 0, buffer.Length)) > 0) {
     535          jobStream.Write(buffer, 0, read);
     536        }
     537        jobStream.Close();
     538      }
     539      HiveLogger.Info(this.ToString() + " ProcessJobResult: END Job received for Storage:");
     540      return response;
     541    }
    513542
    514543
     
    519548      Exception exception,
    520549      bool finished) {
    521      
     550
    522551      HiveLogger.Info(this.ToString() + " ProcessJobResult: BEGIN Job received for Storage - SUB method: " + jobId);
    523552
    524         ResponseResultReceived response = new ResponseResultReceived();
    525         ClientDto client =
    526           DaoLocator.ClientDao.FindById(clientId);
    527 
    528         SerializedJob job =
    529           new SerializedJob();
    530 
    531         if (job != null) {
    532           job.JobInfo =
    533             DaoLocator.JobDao.FindById(jobId);         
    534           job.JobInfo.Client = job.JobInfo.Client = DaoLocator.ClientDao.GetClientForJob(jobId);
    535         }
    536 
    537         if (job == null && job.JobInfo != null) {
    538           response.Success = false;
    539           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_NO_JOB_WITH_THIS_ID;
    540           response.JobId = jobId;
    541          
    542           HiveLogger.Error(this.ToString() + " ProcessJobResult: No job with Id " + jobId);                     
    543          
    544           //tx.Rollback();
    545           return response;
    546         }
    547         if (job.JobInfo.State == State.abort) {
    548           response.Success = false;
    549           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_WAS_ABORTED;
    550          
    551           HiveLogger.Error(this.ToString() + " ProcessJobResult: Job was aborted! " + job.JobInfo);                     
    552          
    553           //tx.Rollback();
    554           return response;
    555         }
    556         if (job.JobInfo.Client == null) {
    557           response.Success = false;
    558           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED;
    559           response.JobId = jobId;
    560 
    561           HiveLogger.Error(this.ToString() + " ProcessJobResult: Job is not being calculated (client = null)! " + job.JobInfo);                     
    562 
    563           //tx.Rollback();
    564           return response;
    565         }
    566         if (job.JobInfo.Client.Id != clientId) {
    567           response.Success = false;
    568           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_WRONG_CLIENT_FOR_JOB;
    569           response.JobId = jobId;
    570 
    571           HiveLogger.Error(this.ToString() + " ProcessJobResult: Wrong Client for this Job! " + job.JobInfo + ", Sending Client is: " + clientId);                     
    572 
    573           //tx.Rollback();
    574           return response;
    575         }
    576         if (job.JobInfo.State == State.finished) {
    577           response.Success = true;
    578           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOBRESULT_RECEIVED;
    579           response.JobId = jobId;
    580 
    581           HiveLogger.Error(this.ToString() + " ProcessJobResult: Job already finished! " + job.JobInfo + ", Sending Client is: " + clientId);                     
    582 
    583           //tx.Rollback();
    584           return response;
    585         }
    586         if (job.JobInfo.State == State.requestSnapshotSent) {
    587           job.JobInfo.State = State.calculating;
    588         }
    589         if (job.JobInfo.State != State.calculating &&
    590           job.JobInfo.State != State.pending) {
    591           response.Success = false;
    592           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_WRONG_JOB_STATE;
    593           response.JobId = jobId;
    594 
    595           HiveLogger.Error(this.ToString() + " ProcessJobResult: Wrong Job State, job is: " + job.JobInfo);                     
    596 
    597           //tx.Rollback();
    598           return response;
    599         }
    600         job.JobInfo.Percentage = percentage;
    601 
    602         if (finished) {
    603           job.JobInfo.State = State.finished;
    604         }
    605 
    606         job.SerializedJobData = result;
    607        
    608         DaoLocator.JobDao.Update(job.JobInfo);
    609 
     553      ResponseResultReceived response = new ResponseResultReceived();
     554      ClientDto client =
     555        DaoLocator.ClientDao.FindById(clientId);
     556
     557      SerializedJob job =
     558        new SerializedJob();
     559
     560      if (job != null) {
     561        job.JobInfo =
     562          DaoLocator.JobDao.FindById(jobId);
     563        job.JobInfo.Client = job.JobInfo.Client = DaoLocator.ClientDao.GetClientForJob(jobId);
     564      }
     565
     566      if (job == null && job.JobInfo != null) {
     567        response.Success = false;
     568        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_NO_JOB_WITH_THIS_ID;
     569        response.JobId = jobId;
     570
     571        HiveLogger.Error(this.ToString() + " ProcessJobResult: No job with Id " + jobId);
     572
     573        //tx.Rollback();
     574        return response;
     575      }
     576      if (job.JobInfo.State == State.abort) {
     577        response.Success = false;
     578        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_WAS_ABORTED;
     579
     580        HiveLogger.Error(this.ToString() + " ProcessJobResult: Job was aborted! " + job.JobInfo);
     581
     582        //tx.Rollback();
     583        return response;
     584      }
     585      if (job.JobInfo.Client == null) {
     586        response.Success = false;
     587        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_IS_NOT_BEEING_CALCULATED;
     588        response.JobId = jobId;
     589
     590        HiveLogger.Error(this.ToString() + " ProcessJobResult: Job is not being calculated (client = null)! " + job.JobInfo);
     591
     592        //tx.Rollback();
     593        return response;
     594      }
     595      if (job.JobInfo.Client.Id != clientId) {
     596        response.Success = false;
     597        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_WRONG_CLIENT_FOR_JOB;
     598        response.JobId = jobId;
     599
     600        HiveLogger.Error(this.ToString() + " ProcessJobResult: Wrong Client for this Job! " + job.JobInfo + ", Sending Client is: " + clientId);
     601
     602        //tx.Rollback();
     603        return response;
     604      }
     605      if (job.JobInfo.State == State.finished) {
    610606        response.Success = true;
    611607        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOBRESULT_RECEIVED;
    612608        response.JobId = jobId;
    613         response.finished = finished;       
    614                
    615         HiveLogger.Info(this.ToString() + " ProcessJobResult: END Job received for Storage - SUB method: " + jobId);       
    616         return response;
     609
     610        HiveLogger.Error(this.ToString() + " ProcessJobResult: Job already finished! " + job.JobInfo + ", Sending Client is: " + clientId);
     611
     612        //tx.Rollback();
     613        return response;
     614      }
     615      if (job.JobInfo.State == State.requestSnapshotSent) {
     616        job.JobInfo.State = State.calculating;
     617      }
     618      if (job.JobInfo.State != State.calculating &&
     619        job.JobInfo.State != State.pending) {
     620        response.Success = false;
     621        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_WRONG_JOB_STATE;
     622        response.JobId = jobId;
     623
     624        HiveLogger.Error(this.ToString() + " ProcessJobResult: Wrong Job State, job is: " + job.JobInfo);
     625
     626        //tx.Rollback();
     627        return response;
     628      }
     629      job.JobInfo.Percentage = percentage;
     630
     631      if (finished) {
     632        job.JobInfo.State = State.finished;
     633      }
     634
     635      job.SerializedJobData = result;
     636
     637      DaoLocator.JobDao.Update(job.JobInfo);
     638
     639      response.Success = true;
     640      response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOBRESULT_RECEIVED;
     641      response.JobId = jobId;
     642      response.finished = finished;
     643
     644      HiveLogger.Info(this.ToString() + " ProcessJobResult: END Job received for Storage - SUB method: " + jobId);
     645      return response;
    617646
    618647    }
     
    654683      HiveLogger.Info("Client logged out " + clientId);
    655684     
    656       /*ISession session = factory.GetSessionForCurrentThread();
    657       ITransaction tx = null;
    658 
    659       try {
    660         IClientAdapter clientAdapter =
    661           session.GetDataAdapter<ClientDto, IClientAdapter>();
    662         IJobAdapter jobAdapter =
    663           session.GetDataAdapter<JobDto, IJobAdapter>();
    664 
    665         tx = session.BeginTransaction();
    666            */
    667         Response response = new Response();
    668 
    669         heartbeatLock.EnterWriteLock();
    670         if (lastHeartbeats.ContainsKey(clientId))
    671           lastHeartbeats.Remove(clientId);
    672         heartbeatLock.ExitWriteLock();
     685      Response response = new Response();
     686
     687      heartbeatLock.EnterWriteLock();
     688      if (lastHeartbeats.ContainsKey(clientId))
     689        lastHeartbeats.Remove(clientId);
     690      heartbeatLock.ExitWriteLock();
    673691
    674692      ClientDto client = DaoLocator.ClientDao.FindById(clientId);
    675         if (client == null) {
    676           response.Success = false;
    677           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGOUT_CLIENT_NOT_REGISTERED;
    678           return response;
    679         }
    680         if (client.State == State.calculating) {
    681           // check wich job the client was calculating and reset it
    682           IEnumerable<JobDto> jobsOfClient = DaoLocator.JobDao.FindActiveJobsOfClient(client);
    683           foreach (JobDto job in jobsOfClient) {
    684             if (job.State != State.finished)
    685               jobManager.ResetJobsDependingOnResults(job);
    686           }
    687         }
    688 
    689         client.State = State.offline;
    690         DaoLocator.ClientDao.Update(client);
    691 
    692         response.Success = true;
    693         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGOUT_SUCCESS;
    694 
    695         //tx.Commit();
    696         return response;
    697       } /*
    698       catch (Exception ex) {
    699         if (tx != null)
    700           tx.Rollback();
    701         throw ex;
    702       }
    703       finally {
    704         if (session != null)
    705           session.EndSession();
    706       }
    707     }     */
     693      if (client == null) {
     694        response.Success = false;
     695        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGOUT_CLIENT_NOT_REGISTERED;
     696        return response;
     697      }
     698      if (client.State == State.calculating) {
     699        // check wich job the client was calculating and reset it
     700        IEnumerable<JobDto> jobsOfClient = DaoLocator.JobDao.FindActiveJobsOfClient(client);
     701        foreach (JobDto job in jobsOfClient) {
     702          if (job.State != State.finished)
     703            jobManager.ResetJobsDependingOnResults(job);
     704        }
     705      }
     706
     707      client.State = State.offline;
     708      DaoLocator.ClientDao.Update(client);
     709
     710      response.Success = true;
     711      response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_LOGOUT_SUCCESS;
     712
     713      return response;
     714    }
    708715
    709716    /// <summary>
     
    714721    /// <returns></returns>
    715722    public Response IsJobStillNeeded(Guid jobId) {
    716       /*ISession session = factory.GetSessionForCurrentThread();
    717       ITransaction tx = null;
    718 
    719       try {
    720         IJobAdapter jobAdapter =
    721           session.GetDataAdapter<JobDto, IJobAdapter>();
    722         tx = session.BeginTransaction();                */
    723 
    724         Response response = new Response();
     723      Response response = new Response();
    725724      JobDto job = DaoLocator.JobDao.FindById(jobId);
    726         if (job == null) {
    727           response.Success = false;
    728           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_DOESNT_EXIST;
    729           HiveLogger.Error(this.ToString() + " IsJobStillNeeded: Job doesn't exist (anymore)! " + jobId);
    730           return response;
    731         }
    732         if (job.State == State.finished) {
    733           response.Success = true;
    734           response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_ALLREADY_FINISHED;
    735           HiveLogger.Error(this.ToString() + " IsJobStillNeeded: already finished! " + job);
    736           return response;
    737         }
    738         job.State = State.pending;
    739         lock (pendingJobs) {
    740           pendingJobs.Add(job.Id, PENDING_TIMEOUT);
    741         }
    742 
    743         DaoLocator.JobDao.Update(job);
    744 
     725      if (job == null) {
     726        response.Success = false;
     727        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_DOESNT_EXIST;
     728        HiveLogger.Error(this.ToString() + " IsJobStillNeeded: Job doesn't exist (anymore)! " + jobId);
     729        return response;
     730      }
     731      if (job.State == State.finished) {
    745732        response.Success = true;
    746         response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_SEND_JOBRESULT;
    747         //tx.Commit();
    748         return response;
    749       }
    750       /*catch (Exception ex) {
    751         if (tx != null)
    752           tx.Rollback();
    753         throw ex;
    754       }
    755       finally {
    756         if (session != null)
    757           session.EndSession();
    758       }
    759     }   */
     733        response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_JOB_ALLREADY_FINISHED;
     734        HiveLogger.Error(this.ToString() + " IsJobStillNeeded: already finished! " + job);
     735        return response;
     736      }
     737      job.State = State.pending;
     738      lock (pendingJobs) {
     739        pendingJobs.Add(job.Id, PENDING_TIMEOUT);
     740      }
     741
     742      DaoLocator.JobDao.Update(job);
     743
     744      response.Success = true;
     745      response.StatusMessage = ApplicationConstants.RESPONSE_COMMUNICATOR_SEND_JOBRESULT;
     746      return response;
     747    }
    760748
    761749    public ResponsePlugin SendPlugins(List<HivePluginInfoDto> pluginList) {
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientFacade.cs

    r3011 r3203  
    5454    }
    5555
     56
    5657    public ResponseJob SendJob(Guid clientId) {
    5758      return clientCommunicator.SendJob(clientId);
     
    8687    }
    8788
     89
     90    public ResponseCalendar GetCalendar(Guid clientId) {
     91      return clientCommunicator.GetCalendar(clientId);
     92    }
     93
     94    public Response SetCalendarStatus(Guid clientId, CalendarState state) {
     95      return clientCommunicator.SetCalendarStatus(clientId, state);     
     96    }
    8897    #endregion
    8998
     
    136145    }
    137146
     147
     148
    138149    #endregion
    139150  }
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ClientManager.cs

    r3022 r3203  
    128128        return response;
    129129      }
     130
    130131      clientGroup.Resources.Add(resource);
    131132      DaoLocator.ClientGroupDao.AddRessourceToClientGroup(resource.Id, clientGroup.Id);
    132       //clientGroupAdapter.Update(clientGroup);
     133
     134      //If our resource is in fact a client => set the callendar from the resource as current one.
     135     
     136      ClientDto dbr = DaoLocator.ClientDao.FindById(resource.Id);
     137      if(dbr != null) {
     138        DaoLocator.ClientDao.SetServerSideCalendar(dbr, clientGroup.Id); 
     139      }
    133140
    134141      response.Success = true;
     
    153160        return response;
    154161      }
    155       foreach (ResourceDto resource in clientGroup.Resources) {
    156         if (resource.Id == resourceId) {
    157           clientGroup.Resources.Remove(resource);
    158           DaoLocator.ClientGroupDao.RemoveRessourceFromClientGroup(resource.Id, clientGroup.Id);
    159           //clientGroupAdapter.Update(clientGroup);
    160           response.Success = true;
    161           response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_REMOVED;
    162           return response;
    163         }
    164       }
    165       response.Success = false;
    166       response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_NOT_FOUND;
    167 
    168       return response;
     162     
     163      DaoLocator.ClientGroupDao.RemoveRessourceFromClientGroup(resourceId, clientGroup.Id);
     164     
     165      response.Success = true;
     166      response.StatusMessage = ApplicationConstants.RESPONSE_CLIENT_RESOURCE_REMOVED;
     167      return response;               
    169168    }
    170169
     
    212211    }
    213212
    214     public Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments) {
     213    public Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments, bool isForced) {
    215214      DaoLocator.UptimeCalendarDao.SetUptimeCalendarForResource(guid, appointments);
     215      DaoLocator.UptimeCalendarDao.NotifyClientsOfNewCalendar(guid, isForced);
    216216      return new Response {Success = true};
    217217    }
  • trunk/sources/HeuristicLab.Hive.Server.Core/3.2/ServerConsoleFacade.cs

    r3022 r3203  
    176176    }
    177177
    178     public Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments) {
    179       return clientManager.SetUptimeCalendarForResource(guid, appointments);
     178    public Response SetUptimeCalendarForResource(Guid guid, IEnumerable<AppointmentDto> appointments, bool isForced) {
     179      return clientManager.SetUptimeCalendarForResource(guid, appointments, isForced);
    180180    }
     181
    181182  }
    182183}
  • trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IClientDao.cs

    r3011 r3203  
    77  public interface IClientDao: IGenericDao<ClientDto> {
    88    IEnumerable<ClientDto> FindAllClientsWithoutGroup();
    9 
    109    ClientDto GetClientForJob(Guid jobId);
     10    void SetServerSideCalendar(ClientDto client, Guid clientGroupId);   
    1111  }
    1212}
  • trunk/sources/HeuristicLab.Hive.Server.DataAccess/3.2/IUptimeCalendarDao.cs

    r3022 r3203  
    88    IEnumerable<AppointmentDto> GetUptimeCalendarForResource(Guid resourceId);
    99    void SetUptimeCalendarForResource(Guid resourceId, IEnumerable<AppointmentDto> appointments);
    10    
     10    void NotifyClientsOfNewCalendar(Guid groupId, bool forcePush);
     11    IEnumerable<AppointmentDto> GetCalendarForClient(ClientDto client);
    1112  }
    1213}
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/ClientDao.cs

    r3011 r3203  
    3838              select EntityToDto(job.Client, null)).SingleOrDefault();
    3939    }
    40  
     40
     41    public void SetServerSideCalendar(ClientDto client, Guid clientGroupId) {
     42      Client dbclient = Context.Clients.SingleOrDefault(c => c.ResourceId.Equals(client.Id));
     43      dbclient.UseCalendarFromResourceId = clientGroupId;
     44      dbclient.CalendarSyncStatus = Enum.GetName(typeof(CalendarState), CalendarState.Fetch);
     45      Context.SubmitChanges();
     46    }
     47
    4148    public ClientDto Insert(ClientDto info) {
    4249      Client c = DtoToEntity(info, null);     
     
    7986      target.Resource.Name = source.Name;
    8087      target.Resource.ResourceId = source.Id;
    81 
     88      target.CalendarSyncStatus = Enum.GetName(typeof(CalendarState), source.CalendarSyncStatus);
    8289      target.Login = source.Login;
    8390      target.Memory = source.Memory;
     
    96103      target.FreeMemory = source.FreeMemory;
    97104      target.Id = source.ResourceId;
     105      target.CalendarSyncStatus = (CalendarState) Enum.Parse(typeof (CalendarState), source.CalendarSyncStatus);
    98106      target.Login = source.Login;
    99107      target.Memory = source.Memory;
     
    103111      target.State = (State) Enum.Parse(typeof (State), source.Status);
    104112      return target;
    105     }
     113    } 
    106114  }
    107115}
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/ClientGroupDao.cs

    r3018 r3203  
    5656      ClientGroup cg = Context.ClientGroups.SingleOrDefault(c => c.ResourceId.Equals(clientGroupId));
    5757      Resource res = Context.Resources.SingleOrDefault(r => r.ResourceId.Equals(resource));
    58       cg.ClientGroup_Resources.Add(new ClientGroup_Resource { ClientGroup = cg, Resource = res });
     58      cg.ClientGroup_Resources.Add(new ClientGroup_Resource { ClientGroup = cg, Resource = res });     
    5959      Context.SubmitChanges();
    6060    }
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/Hive.dbml

    r3022 r3203  
    7676      <Association Name="Resource_ClientGroup" Member="ClientGroup" ThisKey="ResourceId" OtherKey="ResourceId" Type="ClientGroup" Cardinality="One" />
    7777      <Association Name="Resource_ClientGroup_Resource" Member="ClientGroup_Resources" ThisKey="ResourceId" OtherKey="ResourceId" Type="ClientGroup_Resource" />
     78      <Association Name="Resource_UptimeCalendar" Member="UptimeCalendars" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeCalendar" />
    7879      <Association Name="Resource_Client" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" Cardinality="One" />
    79       <Association Name="Resource_UptimeCalendar" Member="UptimeCalendars" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeCalendar" />
    80     </Type>
    81   </Table>
    82   <Table Name="dbo.Client" Member="Clients">
    83     <Type Name="Client">
    84       <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
    85       <Column Name="CPUSpeed" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
    86       <Column Name="Memory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
    87       <Column Name="Login" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
    88       <Column Name="Status" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
    89       <Column Name="ClientConfigId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
    90       <Column Name="NumberOfCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
    91       <Column Name="NumberOfFreeCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
    92       <Column Name="FreeMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
    93       <Association Name="Client_UptimeStatistic" Member="UptimeStatistics" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeStatistic" />
    94       <Association Name="Client_Job" Member="Jobs" ThisKey="ResourceId" OtherKey="ResourceId" Type="Job" />
    95       <Association Name="Resource_Client" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
    96       <Association Name="ClientConfig_Client" Member="ClientConfig" ThisKey="ClientConfigId" OtherKey="ClientConfigId" Type="ClientConfig" IsForeignKey="true" DeleteRule="SET NULL" />
     80      <Association Name="Resource_Client1" Member="Client1" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" Cardinality="One" />
    9781    </Type>
    9882  </Table>
     
    116100      <Association Name="Job_RequiredPlugin" Member="RequiredPlugins" ThisKey="JobId" OtherKey="JobId" Type="RequiredPlugin" />
    117101      <Association Name="Job_Job" Member="Jobs" ThisKey="JobId" OtherKey="ParentJobId" Type="Job" />
    118       <Association Name="Client_Job" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" IsForeignKey="true" DeleteRule="SET NULL" />
    119102      <Association Name="Job_Job" Member="Job1" ThisKey="ParentJobId" OtherKey="JobId" Type="Job" IsForeignKey="true" />
    120103      <Association Name="Project_Job" Member="Project" ThisKey="ProjectId" OtherKey="ProjectId" Type="Project" IsForeignKey="true" DeleteRule="SET NULL" />
     104      <Association Name="Client_Job" Member="Client" ThisKey="ResourceId" OtherKey="ResourceId" Type="Client" IsForeignKey="true" DeleteRule="SET NULL" />
    121105    </Type>
    122106  </Table>
     
    133117    </Type>
    134118  </Table>
     119  <Table Name="dbo.Client" Member="Clients">
     120    <Type Name="Client">
     121      <Column Name="ResourceId" Type="System.Guid" DbType="UniqueIdentifier NOT NULL" IsPrimaryKey="true" CanBeNull="false" />
     122      <Column Name="CPUSpeed" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
     123      <Column Name="Memory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
     124      <Column Name="Login" Type="System.DateTime" DbType="DateTime NOT NULL" CanBeNull="false" />
     125      <Column Name="Status" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
     126      <Column Name="CalendarSyncStatus" Type="System.String" DbType="VarChar(MAX)" CanBeNull="true" />
     127      <Column Name="UseCalendarFromResourceId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
     128      <Column Name="ClientConfigId" Type="System.Guid" DbType="UniqueIdentifier" CanBeNull="true" />
     129      <Column Name="NumberOfCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
     130      <Column Name="NumberOfFreeCores" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
     131      <Column Name="FreeMemory" Type="System.Int32" DbType="Int NOT NULL" CanBeNull="false" />
     132      <Association Name="Client_UptimeStatistic" Member="UptimeStatistics" ThisKey="ResourceId" OtherKey="ResourceId" Type="UptimeStatistic" />
     133      <Association Name="Client_Job" Member="Jobs" ThisKey="ResourceId" OtherKey="ResourceId" Type="Job" />
     134      <Association Name="Resource_Client" Member="Resource" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" DeleteRule="CASCADE" DeleteOnNull="true" />
     135      <Association Name="Resource_Client1" Member="Resource1" ThisKey="ResourceId" OtherKey="ResourceId" Type="Resource" IsForeignKey="true" />
     136      <Association Name="ClientConfig_Client" Member="ClientConfig" ThisKey="ClientConfigId" OtherKey="ClientConfigId" Type="ClientConfig" IsForeignKey="true" DeleteRule="SET NULL" />
     137    </Type>
     138  </Table>
    135139</Database>
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/Hive.dbml.layout

    r3022 r3203  
    11<?xml version="1.0" encoding="utf-8"?>
    2 <ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 14.25, 12.625" name="DataClasses1">
     2<ordesignerObjectsDiagram dslVersion="1.0.0.0" absoluteBounds="0, 0, 14.25, 13.625" name="DataClasses1">
    33  <DataContextMoniker Name="/HiveDataContext" />
    44  <nestedChildShapes>
     
    99      </nestedChildShapes>
    1010    </classShape>
    11     <classShape Id="93016de7-5896-4132-9db6-bc2fe38230fe" absoluteBounds="0.75, 9.25, 2, 1.5785953776041666">
     11    <classShape Id="93016de7-5896-4132-9db6-bc2fe38230fe" absoluteBounds="0.5, 10.125, 2, 1.5785953776041666">
    1212      <DataClassMoniker Name="/HiveDataContext/UptimeStatistic" />
    1313      <nestedChildShapes>
    14         <elementListCompartment Id="c1f9c6c9-81a2-4007-8bd0-bcadb42ee3d5" absoluteBounds="0.76499999999999968, 9.71, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
     14        <elementListCompartment Id="c1f9c6c9-81a2-4007-8bd0-bcadb42ee3d5" absoluteBounds="0.51499999999999968, 10.585, 1.9700000000000002, 1.0185953776041665" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
    1515      </nestedChildShapes>
    1616    </classShape>
    17     <classShape Id="5f1881a6-9a97-4298-a30e-bc434b948d15" absoluteBounds="3.625, 11, 2, 1.3862939453124987">
     17    <classShape Id="5f1881a6-9a97-4298-a30e-bc434b948d15" absoluteBounds="3.625, 12, 2, 1.3862939453124987">
    1818      <DataClassMoniker Name="/HiveDataContext/ClientConfig" />
    1919      <nestedChildShapes>
    20         <elementListCompartment Id="3dbf7375-bb24-421c-a581-712b9ba03996" absoluteBounds="3.64, 11.46, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
     20        <elementListCompartment Id="3dbf7375-bb24-421c-a581-712b9ba03996" absoluteBounds="3.64, 12.46, 1.9700000000000002, 0.8262939453125" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
    2121      </nestedChildShapes>
    2222    </classShape>
     
    9292      </nodes>
    9393    </associationConnector>
    94     <classShape Id="a2f0b500-6e5f-4de0-b608-64e4b55a73c4" absoluteBounds="3.625, 7.625, 2, 2.5401025390625">
    95       <DataClassMoniker Name="/HiveDataContext/Client" />
    96       <nestedChildShapes>
    97         <elementListCompartment Id="73aab418-5f1d-4648-a326-abf68f213f0e" absoluteBounds="3.64, 8.085, 1.9700000000000002, 1.9801025390625" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
    98       </nestedChildShapes>
    99     </classShape>
    100     <associationConnector edgePoints="[(3.625 : 9.70755126953125); (2.75 : 9.70755126953125)]" fixedFrom="NotFixed" fixedTo="NotFixed">
    101       <AssociationMoniker Name="/HiveDataContext/Client/Client_UptimeStatistic" />
    102       <nodes>
    103         <classShapeMoniker Id="a2f0b500-6e5f-4de0-b608-64e4b55a73c4" />
    104         <classShapeMoniker Id="93016de7-5896-4132-9db6-bc2fe38230fe" />
    105       </nodes>
    106     </associationConnector>
    107     <associationConnector edgePoints="[(4.78125 : 6.94399251302083); (4.78125 : 7.625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
    108       <AssociationMoniker Name="/HiveDataContext/Resource/Resource_Client" />
    109       <nodes>
    110         <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
    111         <classShapeMoniker Id="a2f0b500-6e5f-4de0-b608-64e4b55a73c4" />
    112       </nodes>
    113     </associationConnector>
    114     <associationConnector edgePoints="[(4.625 : 11); (4.625 : 10.1651025390625)]" fixedFrom="NotFixed" fixedTo="NotFixed">
    115       <AssociationMoniker Name="/HiveDataContext/ClientConfig/ClientConfig_Client" />
    116       <nodes>
    117         <classShapeMoniker Id="5f1881a6-9a97-4298-a30e-bc434b948d15" />
    118         <classShapeMoniker Id="a2f0b500-6e5f-4de0-b608-64e4b55a73c4" />
    119       </nodes>
    120     </associationConnector>
    12194    <classShape Id="9af04358-a545-4e37-bb13-d249fecfa769" absoluteBounds="9, 6.5, 2, 3.5016097005208326">
    12295      <DataClassMoniker Name="/HiveDataContext/Job" />
     
    137110        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
    138111        <classShapeMoniker Id="59a84aec-bc57-49b5-a709-71cdf7612b31" />
    139       </nodes>
    140     </associationConnector>
    141     <associationConnector edgePoints="[(5.625 : 8.91270182291667); (9 : 8.91270182291667)]" fixedFrom="NotFixed" fixedTo="NotFixed">
    142       <AssociationMoniker Name="/HiveDataContext/Client/Client_Job" />
    143       <nodes>
    144         <classShapeMoniker Id="a2f0b500-6e5f-4de0-b608-64e4b55a73c4" />
    145         <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
    146112      </nodes>
    147113    </associationConnector>
     
    166132      </nestedChildShapes>
    167133    </classShape>
    168     <associationConnector edgePoints="[(3.375 : 6.34699625651042); (2.625 : 6.34699625651042)]" fixedFrom="Algorithm" fixedTo="Algorithm">
     134    <associationConnector edgePoints="[(3.375 : 6.34699625651042); (2.625 : 6.34699625651042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
    169135      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_UptimeCalendar" />
    170136      <nodes>
     
    173139      </nodes>
    174140    </associationConnector>
     141    <classShape Id="51cb317e-413a-4e25-a9b6-e903322f0371" absoluteBounds="3.875, 8.25, 2, 2.9247054036458331">
     142      <DataClassMoniker Name="/HiveDataContext/Client" />
     143      <nestedChildShapes>
     144        <elementListCompartment Id="0103eb78-0280-47ac-a748-9c6593a9640b" absoluteBounds="3.89, 8.71, 1.9700000000000002, 2.364705403645833" name="DataPropertiesCompartment" titleTextColor="Black" itemTextColor="Black" />
     145      </nestedChildShapes>
     146    </classShape>
     147    <associationConnector edgePoints="[(3.875 : 10.6498527018229); (2.5 : 10.6498527018229)]" fixedFrom="NotFixed" fixedTo="NotFixed">
     148      <AssociationMoniker Name="/HiveDataContext/Client/Client_UptimeStatistic" />
     149      <nodes>
     150        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
     151        <classShapeMoniker Id="93016de7-5896-4132-9db6-bc2fe38230fe" />
     152      </nodes>
     153    </associationConnector>
     154    <associationConnector edgePoints="[(5.875 : 9.12580485026042); (9 : 9.12580485026042)]" fixedFrom="NotFixed" fixedTo="NotFixed">
     155      <AssociationMoniker Name="/HiveDataContext/Client/Client_Job" />
     156      <nodes>
     157        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
     158        <classShapeMoniker Id="9af04358-a545-4e37-bb13-d249fecfa769" />
     159      </nodes>
     160    </associationConnector>
     161    <associationConnector edgePoints="[(4.625 : 6.94399251302083); (4.625 : 8.25)]" fixedFrom="NotFixed" fixedTo="NotFixed">
     162      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_Client" />
     163      <nodes>
     164        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
     165        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
     166      </nodes>
     167    </associationConnector>
     168    <associationConnector edgePoints="[(5.0625 : 6.94399251302083); (5.0625 : 8.25)]" fixedFrom="NotFixed" fixedTo="NotFixed">
     169      <AssociationMoniker Name="/HiveDataContext/Resource/Resource_Client1" />
     170      <nodes>
     171        <classShapeMoniker Id="e44e8355-4290-42f0-8b46-4473e91e504b" />
     172        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
     173      </nodes>
     174    </associationConnector>
     175    <associationConnector edgePoints="[(4.75 : 12); (4.75 : 11.1747054036458)]" fixedFrom="NotFixed" fixedTo="NotFixed">
     176      <AssociationMoniker Name="/HiveDataContext/ClientConfig/ClientConfig_Client" />
     177      <nodes>
     178        <classShapeMoniker Id="5f1881a6-9a97-4298-a30e-bc434b948d15" />
     179        <classShapeMoniker Id="51cb317e-413a-4e25-a9b6-e903322f0371" />
     180      </nodes>
     181    </associationConnector>
    175182  </nestedChildShapes>
    176183</ordesignerObjectsDiagram>
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/Hive.designer.cs

    r3022 r3203  
    5858    partial void UpdateResource(Resource instance);
    5959    partial void DeleteResource(Resource instance);
    60     partial void InsertClient(Client instance);
    61     partial void UpdateClient(Client instance);
    62     partial void DeleteClient(Client instance);
    6360    partial void InsertJob(Job instance);
    6461    partial void UpdateJob(Job instance);
     
    6764    partial void UpdateUptimeCalendar(UptimeCalendar instance);
    6865    partial void DeleteUptimeCalendar(UptimeCalendar instance);
     66    partial void InsertClient(Client instance);
     67    partial void UpdateClient(Client instance);
     68    partial void DeleteClient(Client instance);
    6969    #endregion
    7070   
     
    171171    }
    172172   
     173    public System.Data.Linq.Table<Job> Jobs
     174    {
     175      get
     176      {
     177        return this.GetTable<Job>();
     178      }
     179    }
     180   
     181    public System.Data.Linq.Table<UptimeCalendar> UptimeCalendars
     182    {
     183      get
     184      {
     185        return this.GetTable<UptimeCalendar>();
     186      }
     187    }
     188   
    173189    public System.Data.Linq.Table<Client> Clients
    174190    {
     
    176192      {
    177193        return this.GetTable<Client>();
    178       }
    179     }
    180    
    181     public System.Data.Linq.Table<Job> Jobs
    182     {
    183       get
    184       {
    185         return this.GetTable<Job>();
    186       }
    187     }
    188    
    189     public System.Data.Linq.Table<UptimeCalendar> UptimeCalendars
    190     {
    191       get
    192       {
    193         return this.GetTable<UptimeCalendar>();
    194194      }
    195195    }
     
    15081508    private EntitySet<ClientGroup_Resource> _ClientGroup_Resources;
    15091509   
     1510    private EntitySet<UptimeCalendar> _UptimeCalendars;
     1511   
    15101512    private EntityRef<Client> _Client;
    15111513   
    1512     private EntitySet<UptimeCalendar> _UptimeCalendars;
     1514    private EntityRef<Client> _Client1;
    15131515   
    15141516    #region Extensibility Method Definitions
     
    15271529      this._ClientGroup = default(EntityRef<ClientGroup>);
    15281530      this._ClientGroup_Resources = new EntitySet<ClientGroup_Resource>(new Action<ClientGroup_Resource>(this.attach_ClientGroup_Resources), new Action<ClientGroup_Resource>(this.detach_ClientGroup_Resources));
     1531      this._UptimeCalendars = new EntitySet<UptimeCalendar>(new Action<UptimeCalendar>(this.attach_UptimeCalendars), new Action<UptimeCalendar>(this.detach_UptimeCalendars));
    15291532      this._Client = default(EntityRef<Client>);
    1530       this._UptimeCalendars = new EntitySet<UptimeCalendar>(new Action<UptimeCalendar>(this.attach_UptimeCalendars), new Action<UptimeCalendar>(this.detach_UptimeCalendars));
     1533      this._Client1 = default(EntityRef<Client>);
    15311534      OnCreated();
    15321535    }
     
    16271630    }
    16281631   
     1632    [Association(Name="Resource_UptimeCalendar", Storage="_UptimeCalendars", ThisKey="ResourceId", OtherKey="ResourceId")]
     1633    public EntitySet<UptimeCalendar> UptimeCalendars
     1634    {
     1635      get
     1636      {
     1637        return this._UptimeCalendars;
     1638      }
     1639      set
     1640      {
     1641        this._UptimeCalendars.Assign(value);
     1642      }
     1643    }
     1644   
    16291645    [Association(Name="Resource_Client", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsUnique=true, IsForeignKey=false)]
    16301646    public Client Client
     
    16561672    }
    16571673   
    1658     [Association(Name="Resource_UptimeCalendar", Storage="_UptimeCalendars", ThisKey="ResourceId", OtherKey="ResourceId")]
    1659     public EntitySet<UptimeCalendar> UptimeCalendars
    1660     {
    1661       get
    1662       {
    1663         return this._UptimeCalendars;
    1664       }
    1665       set
    1666       {
    1667         this._UptimeCalendars.Assign(value);
     1674    [Association(Name="Resource_Client1", Storage="_Client1", ThisKey="ResourceId", OtherKey="ResourceId", IsUnique=true, IsForeignKey=false)]
     1675    public Client Client1
     1676    {
     1677      get
     1678      {
     1679        return this._Client1.Entity;
     1680      }
     1681      set
     1682      {
     1683        Client previousValue = this._Client1.Entity;
     1684        if (((previousValue != value)
     1685              || (this._Client1.HasLoadedOrAssignedValue == false)))
     1686        {
     1687          this.SendPropertyChanging();
     1688          if ((previousValue != null))
     1689          {
     1690            this._Client1.Entity = null;
     1691            previousValue.Resource1 = null;
     1692          }
     1693          this._Client1.Entity = value;
     1694          if ((value != null))
     1695          {
     1696            value.Resource1 = this;
     1697          }
     1698          this.SendPropertyChanged("Client1");
     1699        }
    16681700      }
    16691701    }
     
    17231755      this.SendPropertyChanging();
    17241756      entity.Resource = null;
    1725     }
    1726   }
    1727  
    1728   [Table(Name="dbo.Client")]
    1729   public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged
    1730   {
    1731    
    1732     private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
    1733    
    1734     private System.Guid _ResourceId;
    1735    
    1736     private int _CPUSpeed;
    1737    
    1738     private int _Memory;
    1739    
    1740     private System.DateTime _Login;
    1741    
    1742     private string _Status;
    1743    
    1744     private System.Nullable<System.Guid> _ClientConfigId;
    1745    
    1746     private int _NumberOfCores;
    1747    
    1748     private int _NumberOfFreeCores;
    1749    
    1750     private int _FreeMemory;
    1751    
    1752     private EntitySet<UptimeStatistic> _UptimeStatistics;
    1753    
    1754     private EntitySet<Job> _Jobs;
    1755    
    1756     private EntityRef<Resource> _Resource;
    1757    
    1758     private EntityRef<ClientConfig> _ClientConfig;
    1759    
    1760     #region Extensibility Method Definitions
    1761     partial void OnLoaded();
    1762     partial void OnValidate(System.Data.Linq.ChangeAction action);
    1763     partial void OnCreated();
    1764     partial void OnResourceIdChanging(System.Guid value);
    1765     partial void OnResourceIdChanged();
    1766     partial void OnCPUSpeedChanging(int value);
    1767     partial void OnCPUSpeedChanged();
    1768     partial void OnMemoryChanging(int value);
    1769     partial void OnMemoryChanged();
    1770     partial void OnLoginChanging(System.DateTime value);
    1771     partial void OnLoginChanged();
    1772     partial void OnStatusChanging(string value);
    1773     partial void OnStatusChanged();
    1774     partial void OnClientConfigIdChanging(System.Nullable<System.Guid> value);
    1775     partial void OnClientConfigIdChanged();
    1776     partial void OnNumberOfCoresChanging(int value);
    1777     partial void OnNumberOfCoresChanged();
    1778     partial void OnNumberOfFreeCoresChanging(int value);
    1779     partial void OnNumberOfFreeCoresChanged();
    1780     partial void OnFreeMemoryChanging(int value);
    1781     partial void OnFreeMemoryChanged();
    1782     #endregion
    1783    
    1784     public Client()
    1785     {
    1786       this._UptimeStatistics = new EntitySet<UptimeStatistic>(new Action<UptimeStatistic>(this.attach_UptimeStatistics), new Action<UptimeStatistic>(this.detach_UptimeStatistics));
    1787       this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
    1788       this._Resource = default(EntityRef<Resource>);
    1789       this._ClientConfig = default(EntityRef<ClientConfig>);
    1790       OnCreated();
    1791     }
    1792    
    1793     [Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
    1794     public System.Guid ResourceId
    1795     {
    1796       get
    1797       {
    1798         return this._ResourceId;
    1799       }
    1800       set
    1801       {
    1802         if ((this._ResourceId != value))
    1803         {
    1804           if (this._Resource.HasLoadedOrAssignedValue)
    1805           {
    1806             throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
    1807           }
    1808           this.OnResourceIdChanging(value);
    1809           this.SendPropertyChanging();
    1810           this._ResourceId = value;
    1811           this.SendPropertyChanged("ResourceId");
    1812           this.OnResourceIdChanged();
    1813         }
    1814       }
    1815     }
    1816    
    1817     [Column(Storage="_CPUSpeed", DbType="Int NOT NULL")]
    1818     public int CPUSpeed
    1819     {
    1820       get
    1821       {
    1822         return this._CPUSpeed;
    1823       }
    1824       set
    1825       {
    1826         if ((this._CPUSpeed != value))
    1827         {
    1828           this.OnCPUSpeedChanging(value);
    1829           this.SendPropertyChanging();
    1830           this._CPUSpeed = value;
    1831           this.SendPropertyChanged("CPUSpeed");
    1832           this.OnCPUSpeedChanged();
    1833         }
    1834       }
    1835     }
    1836    
    1837     [Column(Storage="_Memory", DbType="Int NOT NULL")]
    1838     public int Memory
    1839     {
    1840       get
    1841       {
    1842         return this._Memory;
    1843       }
    1844       set
    1845       {
    1846         if ((this._Memory != value))
    1847         {
    1848           this.OnMemoryChanging(value);
    1849           this.SendPropertyChanging();
    1850           this._Memory = value;
    1851           this.SendPropertyChanged("Memory");
    1852           this.OnMemoryChanged();
    1853         }
    1854       }
    1855     }
    1856    
    1857     [Column(Storage="_Login", DbType="DateTime NOT NULL")]
    1858     public System.DateTime Login
    1859     {
    1860       get
    1861       {
    1862         return this._Login;
    1863       }
    1864       set
    1865       {
    1866         if ((this._Login != value))
    1867         {
    1868           this.OnLoginChanging(value);
    1869           this.SendPropertyChanging();
    1870           this._Login = value;
    1871           this.SendPropertyChanged("Login");
    1872           this.OnLoginChanged();
    1873         }
    1874       }
    1875     }
    1876    
    1877     [Column(Storage="_Status", DbType="VarChar(MAX)")]
    1878     public string Status
    1879     {
    1880       get
    1881       {
    1882         return this._Status;
    1883       }
    1884       set
    1885       {
    1886         if ((this._Status != value))
    1887         {
    1888           this.OnStatusChanging(value);
    1889           this.SendPropertyChanging();
    1890           this._Status = value;
    1891           this.SendPropertyChanged("Status");
    1892           this.OnStatusChanged();
    1893         }
    1894       }
    1895     }
    1896    
    1897     [Column(Storage="_ClientConfigId", DbType="UniqueIdentifier")]
    1898     public System.Nullable<System.Guid> ClientConfigId
    1899     {
    1900       get
    1901       {
    1902         return this._ClientConfigId;
    1903       }
    1904       set
    1905       {
    1906         if ((this._ClientConfigId != value))
    1907         {
    1908           if (this._ClientConfig.HasLoadedOrAssignedValue)
    1909           {
    1910             throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
    1911           }
    1912           this.OnClientConfigIdChanging(value);
    1913           this.SendPropertyChanging();
    1914           this._ClientConfigId = value;
    1915           this.SendPropertyChanged("ClientConfigId");
    1916           this.OnClientConfigIdChanged();
    1917         }
    1918       }
    1919     }
    1920    
    1921     [Column(Storage="_NumberOfCores", DbType="Int NOT NULL")]
    1922     public int NumberOfCores
    1923     {
    1924       get
    1925       {
    1926         return this._NumberOfCores;
    1927       }
    1928       set
    1929       {
    1930         if ((this._NumberOfCores != value))
    1931         {
    1932           this.OnNumberOfCoresChanging(value);
    1933           this.SendPropertyChanging();
    1934           this._NumberOfCores = value;
    1935           this.SendPropertyChanged("NumberOfCores");
    1936           this.OnNumberOfCoresChanged();
    1937         }
    1938       }
    1939     }
    1940    
    1941     [Column(Storage="_NumberOfFreeCores", DbType="Int NOT NULL")]
    1942     public int NumberOfFreeCores
    1943     {
    1944       get
    1945       {
    1946         return this._NumberOfFreeCores;
    1947       }
    1948       set
    1949       {
    1950         if ((this._NumberOfFreeCores != value))
    1951         {
    1952           this.OnNumberOfFreeCoresChanging(value);
    1953           this.SendPropertyChanging();
    1954           this._NumberOfFreeCores = value;
    1955           this.SendPropertyChanged("NumberOfFreeCores");
    1956           this.OnNumberOfFreeCoresChanged();
    1957         }
    1958       }
    1959     }
    1960    
    1961     [Column(Storage="_FreeMemory", DbType="Int NOT NULL")]
    1962     public int FreeMemory
    1963     {
    1964       get
    1965       {
    1966         return this._FreeMemory;
    1967       }
    1968       set
    1969       {
    1970         if ((this._FreeMemory != value))
    1971         {
    1972           this.OnFreeMemoryChanging(value);
    1973           this.SendPropertyChanging();
    1974           this._FreeMemory = value;
    1975           this.SendPropertyChanged("FreeMemory");
    1976           this.OnFreeMemoryChanged();
    1977         }
    1978       }
    1979     }
    1980    
    1981     [Association(Name="Client_UptimeStatistic", Storage="_UptimeStatistics", ThisKey="ResourceId", OtherKey="ResourceId")]
    1982     public EntitySet<UptimeStatistic> UptimeStatistics
    1983     {
    1984       get
    1985       {
    1986         return this._UptimeStatistics;
    1987       }
    1988       set
    1989       {
    1990         this._UptimeStatistics.Assign(value);
    1991       }
    1992     }
    1993    
    1994     [Association(Name="Client_Job", Storage="_Jobs", ThisKey="ResourceId", OtherKey="ResourceId")]
    1995     public EntitySet<Job> Jobs
    1996     {
    1997       get
    1998       {
    1999         return this._Jobs;
    2000       }
    2001       set
    2002       {
    2003         this._Jobs.Assign(value);
    2004       }
    2005     }
    2006    
    2007     [Association(Name="Resource_Client", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
    2008     public Resource Resource
    2009     {
    2010       get
    2011       {
    2012         return this._Resource.Entity;
    2013       }
    2014       set
    2015       {
    2016         Resource previousValue = this._Resource.Entity;
    2017         if (((previousValue != value)
    2018               || (this._Resource.HasLoadedOrAssignedValue == false)))
    2019         {
    2020           this.SendPropertyChanging();
    2021           if ((previousValue != null))
    2022           {
    2023             this._Resource.Entity = null;
    2024             previousValue.Client = null;
    2025           }
    2026           this._Resource.Entity = value;
    2027           if ((value != null))
    2028           {
    2029             value.Client = this;
    2030             this._ResourceId = value.ResourceId;
    2031           }
    2032           else
    2033           {
    2034             this._ResourceId = default(System.Guid);
    2035           }
    2036           this.SendPropertyChanged("Resource");
    2037         }
    2038       }
    2039     }
    2040    
    2041     [Association(Name="ClientConfig_Client", Storage="_ClientConfig", ThisKey="ClientConfigId", OtherKey="ClientConfigId", IsForeignKey=true, DeleteRule="SET NULL")]
    2042     public ClientConfig ClientConfig
    2043     {
    2044       get
    2045       {
    2046         return this._ClientConfig.Entity;
    2047       }
    2048       set
    2049       {
    2050         ClientConfig previousValue = this._ClientConfig.Entity;
    2051         if (((previousValue != value)
    2052               || (this._ClientConfig.HasLoadedOrAssignedValue == false)))
    2053         {
    2054           this.SendPropertyChanging();
    2055           if ((previousValue != null))
    2056           {
    2057             this._ClientConfig.Entity = null;
    2058             previousValue.Clients.Remove(this);
    2059           }
    2060           this._ClientConfig.Entity = value;
    2061           if ((value != null))
    2062           {
    2063             value.Clients.Add(this);
    2064             this._ClientConfigId = value.ClientConfigId;
    2065           }
    2066           else
    2067           {
    2068             this._ClientConfigId = default(Nullable<System.Guid>);
    2069           }
    2070           this.SendPropertyChanged("ClientConfig");
    2071         }
    2072       }
    2073     }
    2074    
    2075     public event PropertyChangingEventHandler PropertyChanging;
    2076    
    2077     public event PropertyChangedEventHandler PropertyChanged;
    2078    
    2079     protected virtual void SendPropertyChanging()
    2080     {
    2081       if ((this.PropertyChanging != null))
    2082       {
    2083         this.PropertyChanging(this, emptyChangingEventArgs);
    2084       }
    2085     }
    2086    
    2087     protected virtual void SendPropertyChanged(String propertyName)
    2088     {
    2089       if ((this.PropertyChanged != null))
    2090       {
    2091         this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    2092       }
    2093     }
    2094    
    2095     private void attach_UptimeStatistics(UptimeStatistic entity)
    2096     {
    2097       this.SendPropertyChanging();
    2098       entity.Client = this;
    2099     }
    2100    
    2101     private void detach_UptimeStatistics(UptimeStatistic entity)
    2102     {
    2103       this.SendPropertyChanging();
    2104       entity.Client = null;
    2105     }
    2106    
    2107     private void attach_Jobs(Job entity)
    2108     {
    2109       this.SendPropertyChanging();
    2110       entity.Client = this;
    2111     }
    2112    
    2113     private void detach_Jobs(Job entity)
    2114     {
    2115       this.SendPropertyChanging();
    2116       entity.Client = null;
    21171757    }
    21181758  }
     
    21581798    private EntitySet<Job> _Jobs;
    21591799   
     1800    private EntityRef<Job> _Job1;
     1801   
     1802    private EntityRef<Project> _Project;
     1803   
    21601804    private EntityRef<Client> _Client;
    2161    
    2162     private EntityRef<Job> _Job1;
    2163    
    2164     private EntityRef<Project> _Project;
    21651805   
    21661806    #region Extensibility Method Definitions
     
    22031843      this._RequiredPlugins = new EntitySet<RequiredPlugin>(new Action<RequiredPlugin>(this.attach_RequiredPlugins), new Action<RequiredPlugin>(this.detach_RequiredPlugins));
    22041844      this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
    2205       this._Client = default(EntityRef<Client>);
    22061845      this._Job1 = default(EntityRef<Job>);
    22071846      this._Project = default(EntityRef<Project>);
     1847      this._Client = default(EntityRef<Client>);
    22081848      OnCreated();
    22091849    }
     
    23171957    }
    23181958   
    2319     [Column(Storage="_SerializedJob", DbType="VarBinary(MAX)", UpdateCheck=UpdateCheck.Never)]
     1959    [Column(Storage="_SerializedJob", DbType="VarBinary(MAX)", CanBeNull=true, UpdateCheck=UpdateCheck.Never)]
    23201960    public System.Data.Linq.Binary SerializedJob
    23211961    {
     
    25402180    }
    25412181   
     2182    [Association(Name="Job_Job", Storage="_Job1", ThisKey="ParentJobId", OtherKey="JobId", IsForeignKey=true)]
     2183    public Job Job1
     2184    {
     2185      get
     2186      {
     2187        return this._Job1.Entity;
     2188      }
     2189      set
     2190      {
     2191        Job previousValue = this._Job1.Entity;
     2192        if (((previousValue != value)
     2193              || (this._Job1.HasLoadedOrAssignedValue == false)))
     2194        {
     2195          this.SendPropertyChanging();
     2196          if ((previousValue != null))
     2197          {
     2198            this._Job1.Entity = null;
     2199            previousValue.Jobs.Remove(this);
     2200          }
     2201          this._Job1.Entity = value;
     2202          if ((value != null))
     2203          {
     2204            value.Jobs.Add(this);
     2205            this._ParentJobId = value.JobId;
     2206          }
     2207          else
     2208          {
     2209            this._ParentJobId = default(Nullable<System.Guid>);
     2210          }
     2211          this.SendPropertyChanged("Job1");
     2212        }
     2213      }
     2214    }
     2215   
     2216    [Association(Name="Project_Job", Storage="_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true, DeleteRule="SET NULL")]
     2217    public Project Project
     2218    {
     2219      get
     2220      {
     2221        return this._Project.Entity;
     2222      }
     2223      set
     2224      {
     2225        Project previousValue = this._Project.Entity;
     2226        if (((previousValue != value)
     2227              || (this._Project.HasLoadedOrAssignedValue == false)))
     2228        {
     2229          this.SendPropertyChanging();
     2230          if ((previousValue != null))
     2231          {
     2232            this._Project.Entity = null;
     2233            previousValue.Jobs.Remove(this);
     2234          }
     2235          this._Project.Entity = value;
     2236          if ((value != null))
     2237          {
     2238            value.Jobs.Add(this);
     2239            this._ProjectId = value.ProjectId;
     2240          }
     2241          else
     2242          {
     2243            this._ProjectId = default(Nullable<System.Guid>);
     2244          }
     2245          this.SendPropertyChanged("Project");
     2246        }
     2247      }
     2248    }
     2249   
    25422250    [Association(Name="Client_Job", Storage="_Client", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteRule="SET NULL")]
    25432251    public Client Client
     
    25702278          }
    25712279          this.SendPropertyChanged("Client");
    2572         }
    2573       }
    2574     }
    2575    
    2576     [Association(Name="Job_Job", Storage="_Job1", ThisKey="ParentJobId", OtherKey="JobId", IsForeignKey=true)]
    2577     public Job Job1
    2578     {
    2579       get
    2580       {
    2581         return this._Job1.Entity;
    2582       }
    2583       set
    2584       {
    2585         Job previousValue = this._Job1.Entity;
    2586         if (((previousValue != value)
    2587               || (this._Job1.HasLoadedOrAssignedValue == false)))
    2588         {
    2589           this.SendPropertyChanging();
    2590           if ((previousValue != null))
    2591           {
    2592             this._Job1.Entity = null;
    2593             previousValue.Jobs.Remove(this);
    2594           }
    2595           this._Job1.Entity = value;
    2596           if ((value != null))
    2597           {
    2598             value.Jobs.Add(this);
    2599             this._ParentJobId = value.JobId;
    2600           }
    2601           else
    2602           {
    2603             this._ParentJobId = default(Nullable<System.Guid>);
    2604           }
    2605           this.SendPropertyChanged("Job1");
    2606         }
    2607       }
    2608     }
    2609    
    2610     [Association(Name="Project_Job", Storage="_Project", ThisKey="ProjectId", OtherKey="ProjectId", IsForeignKey=true, DeleteRule="SET NULL")]
    2611     public Project Project
    2612     {
    2613       get
    2614       {
    2615         return this._Project.Entity;
    2616       }
    2617       set
    2618       {
    2619         Project previousValue = this._Project.Entity;
    2620         if (((previousValue != value)
    2621               || (this._Project.HasLoadedOrAssignedValue == false)))
    2622         {
    2623           this.SendPropertyChanging();
    2624           if ((previousValue != null))
    2625           {
    2626             this._Project.Entity = null;
    2627             previousValue.Jobs.Remove(this);
    2628           }
    2629           this._Project.Entity = value;
    2630           if ((value != null))
    2631           {
    2632             value.Jobs.Add(this);
    2633             this._ProjectId = value.ProjectId;
    2634           }
    2635           else
    2636           {
    2637             this._ProjectId = default(Nullable<System.Guid>);
    2638           }
    2639           this.SendPropertyChanged("Project");
    26402280        }
    26412281      }
     
    29452585    }
    29462586  }
     2587 
     2588  [Table(Name="dbo.Client")]
     2589  public partial class Client : INotifyPropertyChanging, INotifyPropertyChanged
     2590  {
     2591   
     2592    private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty);
     2593   
     2594    private System.Guid _ResourceId;
     2595   
     2596    private int _CPUSpeed;
     2597   
     2598    private int _Memory;
     2599   
     2600    private System.DateTime _Login;
     2601   
     2602    private string _Status;
     2603   
     2604    private string _CalendarSyncStatus;
     2605   
     2606    private System.Nullable<System.Guid> _UseCalendarFromResourceId;
     2607   
     2608    private System.Nullable<System.Guid> _ClientConfigId;
     2609   
     2610    private int _NumberOfCores;
     2611   
     2612    private int _NumberOfFreeCores;
     2613   
     2614    private int _FreeMemory;
     2615   
     2616    private EntitySet<UptimeStatistic> _UptimeStatistics;
     2617   
     2618    private EntitySet<Job> _Jobs;
     2619   
     2620    private EntityRef<Resource> _Resource;
     2621   
     2622    private EntityRef<Resource> _Resource1;
     2623   
     2624    private EntityRef<ClientConfig> _ClientConfig;
     2625   
     2626    #region Extensibility Method Definitions
     2627    partial void OnLoaded();
     2628    partial void OnValidate(System.Data.Linq.ChangeAction action);
     2629    partial void OnCreated();
     2630    partial void OnResourceIdChanging(System.Guid value);
     2631    partial void OnResourceIdChanged();
     2632    partial void OnCPUSpeedChanging(int value);
     2633    partial void OnCPUSpeedChanged();
     2634    partial void OnMemoryChanging(int value);
     2635    partial void OnMemoryChanged();
     2636    partial void OnLoginChanging(System.DateTime value);
     2637    partial void OnLoginChanged();
     2638    partial void OnStatusChanging(string value);
     2639    partial void OnStatusChanged();
     2640    partial void OnCalendarSyncStatusChanging(string value);
     2641    partial void OnCalendarSyncStatusChanged();
     2642    partial void OnUseCalendarFromResourceIdChanging(System.Nullable<System.Guid> value);
     2643    partial void OnUseCalendarFromResourceIdChanged();
     2644    partial void OnClientConfigIdChanging(System.Nullable<System.Guid> value);
     2645    partial void OnClientConfigIdChanged();
     2646    partial void OnNumberOfCoresChanging(int value);
     2647    partial void OnNumberOfCoresChanged();
     2648    partial void OnNumberOfFreeCoresChanging(int value);
     2649    partial void OnNumberOfFreeCoresChanged();
     2650    partial void OnFreeMemoryChanging(int value);
     2651    partial void OnFreeMemoryChanged();
     2652    #endregion
     2653   
     2654    public Client()
     2655    {
     2656      this._UptimeStatistics = new EntitySet<UptimeStatistic>(new Action<UptimeStatistic>(this.attach_UptimeStatistics), new Action<UptimeStatistic>(this.detach_UptimeStatistics));
     2657      this._Jobs = new EntitySet<Job>(new Action<Job>(this.attach_Jobs), new Action<Job>(this.detach_Jobs));
     2658      this._Resource = default(EntityRef<Resource>);
     2659      this._Resource1 = default(EntityRef<Resource>);
     2660      this._ClientConfig = default(EntityRef<ClientConfig>);
     2661      OnCreated();
     2662    }
     2663   
     2664    [Column(Storage="_ResourceId", DbType="UniqueIdentifier NOT NULL", IsPrimaryKey=true)]
     2665    public System.Guid ResourceId
     2666    {
     2667      get
     2668      {
     2669        return this._ResourceId;
     2670      }
     2671      set
     2672      {
     2673        if ((this._ResourceId != value))
     2674        {
     2675          if (this._Resource.HasLoadedOrAssignedValue)
     2676          {
     2677            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
     2678          }
     2679          this.OnResourceIdChanging(value);
     2680          this.SendPropertyChanging();
     2681          this._ResourceId = value;
     2682          this.SendPropertyChanged("ResourceId");
     2683          this.OnResourceIdChanged();
     2684        }
     2685      }
     2686    }
     2687   
     2688    [Column(Storage="_CPUSpeed", DbType="Int NOT NULL")]
     2689    public int CPUSpeed
     2690    {
     2691      get
     2692      {
     2693        return this._CPUSpeed;
     2694      }
     2695      set
     2696      {
     2697        if ((this._CPUSpeed != value))
     2698        {
     2699          this.OnCPUSpeedChanging(value);
     2700          this.SendPropertyChanging();
     2701          this._CPUSpeed = value;
     2702          this.SendPropertyChanged("CPUSpeed");
     2703          this.OnCPUSpeedChanged();
     2704        }
     2705      }
     2706    }
     2707   
     2708    [Column(Storage="_Memory", DbType="Int NOT NULL")]
     2709    public int Memory
     2710    {
     2711      get
     2712      {
     2713        return this._Memory;
     2714      }
     2715      set
     2716      {
     2717        if ((this._Memory != value))
     2718        {
     2719          this.OnMemoryChanging(value);
     2720          this.SendPropertyChanging();
     2721          this._Memory = value;
     2722          this.SendPropertyChanged("Memory");
     2723          this.OnMemoryChanged();
     2724        }
     2725      }
     2726    }
     2727   
     2728    [Column(Storage="_Login", DbType="DateTime NOT NULL")]
     2729    public System.DateTime Login
     2730    {
     2731      get
     2732      {
     2733        return this._Login;
     2734      }
     2735      set
     2736      {
     2737        if ((this._Login != value))
     2738        {
     2739          this.OnLoginChanging(value);
     2740          this.SendPropertyChanging();
     2741          this._Login = value;
     2742          this.SendPropertyChanged("Login");
     2743          this.OnLoginChanged();
     2744        }
     2745      }
     2746    }
     2747   
     2748    [Column(Storage="_Status", DbType="VarChar(MAX)")]
     2749    public string Status
     2750    {
     2751      get
     2752      {
     2753        return this._Status;
     2754      }
     2755      set
     2756      {
     2757        if ((this._Status != value))
     2758        {
     2759          this.OnStatusChanging(value);
     2760          this.SendPropertyChanging();
     2761          this._Status = value;
     2762          this.SendPropertyChanged("Status");
     2763          this.OnStatusChanged();
     2764        }
     2765      }
     2766    }
     2767   
     2768    [Column(Storage="_CalendarSyncStatus", DbType="VarChar(MAX)")]
     2769    public string CalendarSyncStatus
     2770    {
     2771      get
     2772      {
     2773        return this._CalendarSyncStatus;
     2774      }
     2775      set
     2776      {
     2777        if ((this._CalendarSyncStatus != value))
     2778        {
     2779          this.OnCalendarSyncStatusChanging(value);
     2780          this.SendPropertyChanging();
     2781          this._CalendarSyncStatus = value;
     2782          this.SendPropertyChanged("CalendarSyncStatus");
     2783          this.OnCalendarSyncStatusChanged();
     2784        }
     2785      }
     2786    }
     2787   
     2788    [Column(Storage="_UseCalendarFromResourceId", DbType="UniqueIdentifier")]
     2789    public System.Nullable<System.Guid> UseCalendarFromResourceId
     2790    {
     2791      get
     2792      {
     2793        return this._UseCalendarFromResourceId;
     2794      }
     2795      set
     2796      {
     2797        if ((this._UseCalendarFromResourceId != value))
     2798        {
     2799          this.OnUseCalendarFromResourceIdChanging(value);
     2800          this.SendPropertyChanging();
     2801          this._UseCalendarFromResourceId = value;
     2802          this.SendPropertyChanged("UseCalendarFromResourceId");
     2803          this.OnUseCalendarFromResourceIdChanged();
     2804        }
     2805      }
     2806    }
     2807   
     2808    [Column(Storage="_ClientConfigId", DbType="UniqueIdentifier")]
     2809    public System.Nullable<System.Guid> ClientConfigId
     2810    {
     2811      get
     2812      {
     2813        return this._ClientConfigId;
     2814      }
     2815      set
     2816      {
     2817        if ((this._ClientConfigId != value))
     2818        {
     2819          if (this._ClientConfig.HasLoadedOrAssignedValue)
     2820          {
     2821            throw new System.Data.Linq.ForeignKeyReferenceAlreadyHasValueException();
     2822          }
     2823          this.OnClientConfigIdChanging(value);
     2824          this.SendPropertyChanging();
     2825          this._ClientConfigId = value;
     2826          this.SendPropertyChanged("ClientConfigId");
     2827          this.OnClientConfigIdChanged();
     2828        }
     2829      }
     2830    }
     2831   
     2832    [Column(Storage="_NumberOfCores", DbType="Int NOT NULL")]
     2833    public int NumberOfCores
     2834    {
     2835      get
     2836      {
     2837        return this._NumberOfCores;
     2838      }
     2839      set
     2840      {
     2841        if ((this._NumberOfCores != value))
     2842        {
     2843          this.OnNumberOfCoresChanging(value);
     2844          this.SendPropertyChanging();
     2845          this._NumberOfCores = value;
     2846          this.SendPropertyChanged("NumberOfCores");
     2847          this.OnNumberOfCoresChanged();
     2848        }
     2849      }
     2850    }
     2851   
     2852    [Column(Storage="_NumberOfFreeCores", DbType="Int NOT NULL")]
     2853    public int NumberOfFreeCores
     2854    {
     2855      get
     2856      {
     2857        return this._NumberOfFreeCores;
     2858      }
     2859      set
     2860      {
     2861        if ((this._NumberOfFreeCores != value))
     2862        {
     2863          this.OnNumberOfFreeCoresChanging(value);
     2864          this.SendPropertyChanging();
     2865          this._NumberOfFreeCores = value;
     2866          this.SendPropertyChanged("NumberOfFreeCores");
     2867          this.OnNumberOfFreeCoresChanged();
     2868        }
     2869      }
     2870    }
     2871   
     2872    [Column(Storage="_FreeMemory", DbType="Int NOT NULL")]
     2873    public int FreeMemory
     2874    {
     2875      get
     2876      {
     2877        return this._FreeMemory;
     2878      }
     2879      set
     2880      {
     2881        if ((this._FreeMemory != value))
     2882        {
     2883          this.OnFreeMemoryChanging(value);
     2884          this.SendPropertyChanging();
     2885          this._FreeMemory = value;
     2886          this.SendPropertyChanged("FreeMemory");
     2887          this.OnFreeMemoryChanged();
     2888        }
     2889      }
     2890    }
     2891   
     2892    [Association(Name="Client_UptimeStatistic", Storage="_UptimeStatistics", ThisKey="ResourceId", OtherKey="ResourceId")]
     2893    public EntitySet<UptimeStatistic> UptimeStatistics
     2894    {
     2895      get
     2896      {
     2897        return this._UptimeStatistics;
     2898      }
     2899      set
     2900      {
     2901        this._UptimeStatistics.Assign(value);
     2902      }
     2903    }
     2904   
     2905    [Association(Name="Client_Job", Storage="_Jobs", ThisKey="ResourceId", OtherKey="ResourceId")]
     2906    public EntitySet<Job> Jobs
     2907    {
     2908      get
     2909      {
     2910        return this._Jobs;
     2911      }
     2912      set
     2913      {
     2914        this._Jobs.Assign(value);
     2915      }
     2916    }
     2917   
     2918    [Association(Name="Resource_Client", Storage="_Resource", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true, DeleteOnNull=true, DeleteRule="CASCADE")]
     2919    public Resource Resource
     2920    {
     2921      get
     2922      {
     2923        return this._Resource.Entity;
     2924      }
     2925      set
     2926      {
     2927        Resource previousValue = this._Resource.Entity;
     2928        if (((previousValue != value)
     2929              || (this._Resource.HasLoadedOrAssignedValue == false)))
     2930        {
     2931          this.SendPropertyChanging();
     2932          if ((previousValue != null))
     2933          {
     2934            this._Resource.Entity = null;
     2935            previousValue.Client = null;
     2936          }
     2937          this._Resource.Entity = value;
     2938          if ((value != null))
     2939          {
     2940            value.Client = this;
     2941            this._ResourceId = value.ResourceId;
     2942          }
     2943          else
     2944          {
     2945            this._ResourceId = default(System.Guid);
     2946          }
     2947          this.SendPropertyChanged("Resource");
     2948        }
     2949      }
     2950    }
     2951   
     2952    [Association(Name="Resource_Client1", Storage="_Resource1", ThisKey="ResourceId", OtherKey="ResourceId", IsForeignKey=true)]
     2953    public Resource Resource1
     2954    {
     2955      get
     2956      {
     2957        return this._Resource1.Entity;
     2958      }
     2959      set
     2960      {
     2961        Resource previousValue = this._Resource1.Entity;
     2962        if (((previousValue != value)
     2963              || (this._Resource1.HasLoadedOrAssignedValue == false)))
     2964        {
     2965          this.SendPropertyChanging();
     2966          if ((previousValue != null))
     2967          {
     2968            this._Resource1.Entity = null;
     2969            previousValue.Client1 = null;
     2970          }
     2971          this._Resource1.Entity = value;
     2972          if ((value != null))
     2973          {
     2974            value.Client1 = this;
     2975            this._ResourceId = value.ResourceId;
     2976          }
     2977          else
     2978          {
     2979            this._ResourceId = default(System.Guid);
     2980          }
     2981          this.SendPropertyChanged("Resource1");
     2982        }
     2983      }
     2984    }
     2985   
     2986    [Association(Name="ClientConfig_Client", Storage="_ClientConfig", ThisKey="ClientConfigId", OtherKey="ClientConfigId", IsForeignKey=true, DeleteRule="SET NULL")]
     2987    public ClientConfig ClientConfig
     2988    {
     2989      get
     2990      {
     2991        return this._ClientConfig.Entity;
     2992      }
     2993      set
     2994      {
     2995        ClientConfig previousValue = this._ClientConfig.Entity;
     2996        if (((previousValue != value)
     2997              || (this._ClientConfig.HasLoadedOrAssignedValue == false)))
     2998        {
     2999          this.SendPropertyChanging();
     3000          if ((previousValue != null))
     3001          {
     3002            this._ClientConfig.Entity = null;
     3003            previousValue.Clients.Remove(this);
     3004          }
     3005          this._ClientConfig.Entity = value;
     3006          if ((value != null))
     3007          {
     3008            value.Clients.Add(this);
     3009            this._ClientConfigId = value.ClientConfigId;
     3010          }
     3011          else
     3012          {
     3013            this._ClientConfigId = default(Nullable<System.Guid>);
     3014          }
     3015          this.SendPropertyChanged("ClientConfig");
     3016        }
     3017      }
     3018    }
     3019   
     3020    public event PropertyChangingEventHandler PropertyChanging;
     3021   
     3022    public event PropertyChangedEventHandler PropertyChanged;
     3023   
     3024    protected virtual void SendPropertyChanging()
     3025    {
     3026      if ((this.PropertyChanging != null))
     3027      {
     3028        this.PropertyChanging(this, emptyChangingEventArgs);
     3029      }
     3030    }
     3031   
     3032    protected virtual void SendPropertyChanged(String propertyName)
     3033    {
     3034      if ((this.PropertyChanged != null))
     3035      {
     3036        this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
     3037      }
     3038    }
     3039   
     3040    private void attach_UptimeStatistics(UptimeStatistic entity)
     3041    {
     3042      this.SendPropertyChanging();
     3043      entity.Client = this;
     3044    }
     3045   
     3046    private void detach_UptimeStatistics(UptimeStatistic entity)
     3047    {
     3048      this.SendPropertyChanging();
     3049      entity.Client = null;
     3050    }
     3051   
     3052    private void attach_Jobs(Job entity)
     3053    {
     3054      this.SendPropertyChanging();
     3055      entity.Client = this;
     3056    }
     3057   
     3058    private void detach_Jobs(Job entity)
     3059    {
     3060      this.SendPropertyChanging();
     3061      entity.Client = null;
     3062    }
     3063  }
    29473064}
    29483065#pragma warning restore 1591
  • trunk/sources/HeuristicLab.Hive.Server.LINQDataAccess/3.2/UptimeCalendarDao.cs

    r3022 r3203  
    9696
    9797      Context.SubmitChanges();           
     98    }   
     99
     100    public IEnumerable<AppointmentDto> GetCalendarForClient(ClientDto client) {
     101      Client dbc = Context.Clients.SingleOrDefault(c => c.ResourceId.Equals(client.Id));
     102      IList<AppointmentDto> appointments = new List<AppointmentDto>();
     103      if (dbc != null) {
     104        ClientGroup cg =
     105          Context.ClientGroups.SingleOrDefault(cgroup => cgroup.ResourceId.Equals(dbc.UseCalendarFromResourceId));
     106        //in case no plan has been set
     107        if (cg == null)
     108          if (dbc.Resource.ClientGroup_Resources.FirstOrDefault() != null)
     109            cg = dbc.Resource.ClientGroup_Resources.FirstOrDefault().ClientGroup;
     110
     111        if (cg == null)
     112          return appointments;
     113
     114        while (cg.Resource.UptimeCalendars.Count == 0) {
     115          if (cg.Resource.ClientGroup_Resources.FirstOrDefault() != null)
     116            cg = cg.Resource.ClientGroup_Resources.FirstOrDefault().ClientGroup;
     117          else {
     118            break;
     119          }
     120        }
     121
     122        foreach (UptimeCalendar appointment in cg.Resource.UptimeCalendars) {
     123          appointments.Add(EntityToDto(appointment,null)); 
     124        }
     125
     126      }
     127      return appointments;
     128    }
     129
     130    public void NotifyClientsOfNewCalendar(Guid groupId, bool forcePush) {
     131     
     132      //Get the current ClientGroup
     133      ClientGroup cg = Context.ClientGroups.SingleOrDefault(cgroup => cgroup.ResourceId.Equals(groupId));
     134      if(cg == null)
     135        return;
     136
     137      //Get all the affected clients
     138      List<Client> clients = Context.Clients.Where(c => c.UseCalendarFromResourceId.Equals(cg.ResourceId)).ToList();
     139     
     140      //Set new state
     141      foreach (Client client in clients) {
     142        client.CalendarSyncStatus = (forcePush ? Enum.GetName(typeof(CalendarState), CalendarState.ForceFetch) : Enum.GetName(typeof(CalendarState), CalendarState.Fetch));     
     143      }
     144     
     145      Context.SubmitChanges();
     146
     147      //Get all Subgroups
     148      List<ClientGroup> groups = (from cg1 in Context.ClientGroups
     149                                  where cg1.Resource.ClientGroup_Resources.Any(
     150                                cgr => cgr.ClientGroupId.Equals(groupId))
     151                              select cg1).ToList();
     152
     153      //If they have their own calendar - stop propagation
     154      //otherweise - propagate
     155      foreach (ClientGroup cgroup in groups) {
     156        if(cgroup.Resource.UptimeCalendars.Count == 0)
     157          NotifyClientsOfNewCalendar(groupId, forcePush);       
     158      }
    98159    }
    99160
  • trunk/sources/HeuristicLab.Hive.Server/3.2/ServiceCallInterception.cs

    r3013 r3203