Free cookie consent management tool by TermsFeed Policy Generator

source: trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs @ 492

Last change on this file since 492 was 409, checked in by gkronber, 16 years ago

fixed a minor display bug (related to #204)

File size: 3.2 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21
22using System;
23using System.Collections.Generic;
24using System.Linq;
25using System.Text;
26using HeuristicLab.Core;
27using System.Xml;
28using HeuristicLab.CEDMA.DB.Interfaces;
29
30namespace HeuristicLab.CEDMA.Core {
31  public class Agent : IAgent {
32    public IDatabase Database { get; set; }
33    public long Id { get; set; }
34    public string Name { get; set; }
35    public ProcessStatus Status { get; set; }
36    public bool Terminated { get; set; }
37    private OperatorGraph operatorGraph;
38
39    public IOperatorGraph OperatorGraph {
40      get { return operatorGraph; }
41    }
42
43    public Agent()
44      : base() {
45      operatorGraph = new OperatorGraph();
46    }
47
48    public Agent(IDatabase database, long id)
49      : this() {
50      Database = database;
51      Id = id;
52    }
53
54    public void Save() {
55      Database.UpdateAgent(Id, Name);
56      Database.UpdateAgent(Id, Status);
57      Database.UpdateAgent(Id, PersistenceManager.SaveToGZip(OperatorGraph));
58    }
59
60    public void Start() {
61      Status = ProcessStatus.Waiting;
62      Save();
63    }
64
65    public ICollection<IAgent> SubAgents {
66      get {
67        List<IAgent> agents = new List<IAgent>();
68        foreach(AgentEntry entry in Database.GetSubAgents(Id)) {
69          Agent newAgent = new Agent(Database, entry.Id);
70          newAgent.Name = entry.Name;
71          newAgent.Status = entry.Status;
72          IOperatorGraph opGraph = (IOperatorGraph)PersistenceManager.RestoreFromGZip(entry.RawData);
73          newAgent.OperatorGraph.Clear();
74          foreach(IOperator op in opGraph.Operators) newAgent.OperatorGraph.AddOperator(op);
75          newAgent.OperatorGraph.InitialOperator = opGraph.InitialOperator;
76          agents.Add(newAgent);
77        }
78        return agents;
79      }
80    }
81
82    public ICollection<IResult> Results {
83      get {
84        List<IResult> results = new List<IResult>();
85        foreach(ResultEntry entry in Database.GetResults(Id)) {
86          Result result = new Result(Database, entry.Id);
87          result.Summary = entry.Summary;
88          result.Description = entry.Description;
89          result.Item = (IItem)PersistenceManager.RestoreFromGZip(entry.RawData);
90          results.Add(result);
91        }
92        return results;
93      }
94    }
95
96    public IView CreateView() {
97      return new AgentView(this);
98    }
99  }
100}
Note: See TracBrowser for help on using the repository browser.