Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
08/13/08 16:33:03 (16 years ago)
Author:
gkronber
Message:

worked on #211

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs

    r503 r512  
    8888        return results;
    8989      }
    90     } 
     90    }
    9191
    9292    public IView CreateView() {
     
    9494        byte[] rawData = Database.GetAgentRawData(Id);
    9595        IOperatorGraph opGraph = (IOperatorGraph)PersistenceManager.RestoreFromGZip(rawData);
    96         DownloadOperators(opGraph, new Dictionary<long, IOperator>());
    9796        foreach(IOperator op in opGraph.Operators) OperatorGraph.AddOperator(op);
    9897        OperatorGraph.InitialOperator = opGraph.InitialOperator;
     98        PatchOperatorLinks(OperatorGraph);
    9999      }
    100100      return new AgentView(this);
    101101    }
    102102
    103     private void DownloadOperators(IOperatorGraph opGraph, Dictionary<long, IOperator> downloaded) {
     103    private void PatchOperatorLinks(IOperatorGraph opGraph) {
    104104      foreach(IOperator op in opGraph.Operators) {
    105         DownloadOperators(op, downloaded);
     105        PatchOperatorLinks(op);
    106106      }
    107107    }
    108108
    109     private void DownloadOperators(IOperator op, Dictionary<long, IOperator> downloaded) {
     109    private void PatchOperatorLinks(IOperator op) {
    110110      if(op is OperatorLink) {
    111111        OperatorLink link = op as OperatorLink;
    112         if(downloaded.ContainsKey(link.Id)) {
    113           link.Operator = downloaded[link.Id];
    114         } else {
    115           OperatorEntry targetEntry = Database.GetOperator(link.Id);
    116           IOperator target = (IOperator)PersistenceManager.RestoreFromGZip(targetEntry.RawData);
    117           downloaded.Add(link.Id, target);
    118           DownloadOperators(target, downloaded);
    119           link.Operator = target;
     112        link.Database = Database;
     113        //if(downloaded.ContainsKey(link.Id)) {
     114        //  link.Operator = downloaded[link.Id];
     115        //} else {
     116        //  OperatorEntry targetEntry = Database.GetOperator(link.Id);
     117        //  IOperator target = (IOperator)PersistenceManager.RestoreFromGZip(targetEntry.RawData);
     118        //  downloaded.Add(link.Id, target);
     119        //  PatchOperatorLinks(target, downloaded);
     120        //  link.Operator = target;
     121        //}
     122      } else if(op is CombinedOperator) {
     123        PatchOperatorLinks(((CombinedOperator)op).OperatorGraph);
     124      }
     125      // also patch operator links contained (indirectly) in variables
     126      foreach(VariableInfo varInfo in op.VariableInfos) {
     127        IVariable var = op.GetVariable(varInfo.ActualName);
     128        if(var != null && var.Value is IOperatorGraph) {
     129          PatchOperatorLinks((IOperatorGraph)var.Value);
     130        } else if(var != null && var.Value is IOperator) {
     131          PatchOperatorLinks((IOperator)var.Value);
    120132        }
    121       } else if(op is CombinedOperator) {
    122         DownloadOperators(((CombinedOperator)op).OperatorGraph, downloaded);
    123133      }
    124134    }
Note: See TracChangeset for help on using the changeset viewer.