Changeset 512 for trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs
- Timestamp:
- 08/13/08 16:33:03 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.CEDMA.Core/Agent.cs
r503 r512 88 88 return results; 89 89 } 90 } 90 } 91 91 92 92 public IView CreateView() { … … 94 94 byte[] rawData = Database.GetAgentRawData(Id); 95 95 IOperatorGraph opGraph = (IOperatorGraph)PersistenceManager.RestoreFromGZip(rawData); 96 DownloadOperators(opGraph, new Dictionary<long, IOperator>());97 96 foreach(IOperator op in opGraph.Operators) OperatorGraph.AddOperator(op); 98 97 OperatorGraph.InitialOperator = opGraph.InitialOperator; 98 PatchOperatorLinks(OperatorGraph); 99 99 } 100 100 return new AgentView(this); 101 101 } 102 102 103 private void DownloadOperators(IOperatorGraph opGraph, Dictionary<long, IOperator> downloaded) {103 private void PatchOperatorLinks(IOperatorGraph opGraph) { 104 104 foreach(IOperator op in opGraph.Operators) { 105 DownloadOperators(op, downloaded);105 PatchOperatorLinks(op); 106 106 } 107 107 } 108 108 109 private void DownloadOperators(IOperator op, Dictionary<long, IOperator> downloaded) {109 private void PatchOperatorLinks(IOperator op) { 110 110 if(op is OperatorLink) { 111 111 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); 120 132 } 121 } else if(op is CombinedOperator) {122 DownloadOperators(((CombinedOperator)op).OperatorGraph, downloaded);123 133 } 124 134 }
Note: See TracChangeset
for help on using the changeset viewer.