Free cookie consent management tool by TermsFeed Policy Generator

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

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

fixed a minor display bug (related to #204)

File size: 3.2 KB
RevLine 
[372]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;
[357]23using System.Collections.Generic;
24using System.Linq;
25using System.Text;
26using HeuristicLab.Core;
27using System.Xml;
[372]28using HeuristicLab.CEDMA.DB.Interfaces;
[357]29
[377]30namespace HeuristicLab.CEDMA.Core {
[403]31  public class Agent : IAgent {
[372]32    public IDatabase Database { get; set; }
33    public long Id { get; set; }
34    public string Name { get; set; }
[375]35    public ProcessStatus Status { get; set; }
[389]36    public bool Terminated { get; set; }
[357]37    private OperatorGraph operatorGraph;
38
39    public IOperatorGraph OperatorGraph {
40      get { return operatorGraph; }
41    }
42
[372]43    public Agent()
44      : base() {
[357]45      operatorGraph = new OperatorGraph();
46    }
[372]47
[377]48    public Agent(IDatabase database, long id)
49      : this() {
[372]50      Database = database;
51      Id = id;
52    }
53
54    public void Save() {
[375]55      Database.UpdateAgent(Id, Name);
56      Database.UpdateAgent(Id, Status);
[403]57      Database.UpdateAgent(Id, PersistenceManager.SaveToGZip(OperatorGraph));
[372]58    }
59
[389]60    public void Start() {
[375]61      Status = ProcessStatus.Waiting;
[372]62      Save();
63    }
64
[389]65    public ICollection<IAgent> SubAgents {
66      get {
[393]67        List<IAgent> agents = new List<IAgent>();
68        foreach(AgentEntry entry in Database.GetSubAgents(Id)) {
[403]69          Agent newAgent = new Agent(Database, entry.Id);
[393]70          newAgent.Name = entry.Name;
71          newAgent.Status = entry.Status;
[403]72          IOperatorGraph opGraph = (IOperatorGraph)PersistenceManager.RestoreFromGZip(entry.RawData);
[409]73          newAgent.OperatorGraph.Clear();
74          foreach(IOperator op in opGraph.Operators) newAgent.OperatorGraph.AddOperator(op);
75          newAgent.OperatorGraph.InitialOperator = opGraph.InitialOperator;
[393]76          agents.Add(newAgent);
77        }
78        return agents;
[389]79      }
80    }
81
82    public ICollection<IResult> Results {
83      get {
84        List<IResult> results = new List<IResult>();
[393]85        foreach(ResultEntry entry in Database.GetResults(Id)) {
[403]86          Result result = new Result(Database, entry.Id);
[394]87          result.Summary = entry.Summary;
88          result.Description = entry.Description;
[403]89          result.Item = (IItem)PersistenceManager.RestoreFromGZip(entry.RawData);
[394]90          results.Add(result);
[393]91        }
[389]92        return results;
93      }
94    }
95
[403]96    public IView CreateView() {
[393]97      return new AgentView(this);
98    }
[357]99  }
100}
Note: See TracBrowser for help on using the repository browser.