Changeset 125 for branches/XmlReaderWriterBranch/HeuristicLab.Core
- Timestamp:
- 04/15/08 16:41:18 (16 years ago)
- Location:
- branches/XmlReaderWriterBranch
- Files:
-
- 13 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/XmlReaderWriterBranch/HeuristicLab.Core/AtomicOperation.cs
r119 r125 62 62 PersistenceManager.Persist("Scope", Scope, writer, persistedObjects); 63 63 } 64 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 65 base.Populate(node, restoredObjects); 66 myOperator = (IOperator)PersistenceManager.Restore(node.SelectSingleNode("Operator"), restoredObjects); 67 myScope = (IScope)PersistenceManager.Restore(node.SelectSingleNode("Scope"), restoredObjects); 64 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 65 // base.Populate(node, restoredObjects); 66 // myOperator = (IOperator)PersistenceManager.Restore(node.SelectSingleNode("Operator"), restoredObjects); 67 // myScope = (IScope)PersistenceManager.Restore(node.SelectSingleNode("Scope"), restoredObjects); 68 //} 69 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 70 base.Populate(reader, restoredObjects); 71 reader.Read(); 72 myOperator = (IOperator)PersistenceManager.Restore(reader, "Operator", restoredObjects); 73 reader.Skip(); 74 myScope = (IScope)PersistenceManager.Restore(reader, "Scope", restoredObjects); 75 reader.Read(); 68 76 } 69 77 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/CompositeOperation.cs
r119 r125 79 79 writer.WriteEndElement(); // </Operations> 80 80 } 81 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) {82 base.Populate(node, restoredObjects);81 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 82 // base.Populate(node, restoredObjects); 83 83 84 myExecuteInParallel = bool.Parse(node.Attributes["ExecuteInParallel"].Value);84 // myExecuteInParallel = bool.Parse(node.Attributes["ExecuteInParallel"].Value); 85 85 86 XmlNode operationsNode = node.SelectSingleNode("Operations"); 87 for (int i = 0; i < operationsNode.ChildNodes.Count; i++) 88 AddOperation((IOperation)PersistenceManager.Restore(operationsNode.ChildNodes[i], restoredObjects)); 86 // XmlNode operationsNode = node.SelectSingleNode("Operations"); 87 // for (int i = 0; i < operationsNode.ChildNodes.Count; i++) 88 // AddOperation((IOperation)PersistenceManager.Restore(operationsNode.ChildNodes[i], restoredObjects)); 89 //} 90 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 91 myExecuteInParallel = bool.Parse(reader["ExecuteInParallel"]); 92 base.Populate(reader, restoredObjects); 93 94 if(reader.Name != "Operations") throw new XmlException("Expected: \"Operations\", found: \""+reader.Name+"\""); 95 if(!reader.IsEmptyElement) { 96 reader.Read(); 97 while(reader.IsStartElement()) { 98 AddOperation((IOperation)PersistenceManager.Restore(reader, restoredObjects)); 99 reader.Skip(); 100 } 101 reader.ReadEndElement(); 102 } else { 103 reader.Read(); 104 } 89 105 } 90 106 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/ConstrainedItemBase.cs
r119 r125 39 39 ConstrainedItemBase clone = (ConstrainedItemBase)base.Clone(clonedObjects); 40 40 clone.myConstraints.Clear(); 41 foreach 41 foreach(IConstraint constraint in Constraints) 42 42 clone.AddConstraint((IConstraint)Auxiliary.Clone(constraint, clonedObjects)); 43 43 return clone; … … 49 49 } 50 50 public virtual void RemoveConstraint(IConstraint constraint) { 51 if 51 if(myConstraints.Remove(constraint)) 52 52 OnConstraintRemoved(constraint); 53 53 } … … 55 55 public bool IsValid() { 56 56 bool result = true; 57 foreach 57 foreach(IConstraint constraint in Constraints) 58 58 result = result && constraint.Check(this); 59 59 return result; … … 62 62 bool result = true; 63 63 violatedConstraints = new List<IConstraint>(); 64 foreach 65 if 64 foreach(IConstraint constraint in Constraints) { 65 if(!constraint.Check(this)) { 66 66 result = false; 67 67 violatedConstraints.Add(constraint); … … 77 77 public event EventHandler<ConstraintEventArgs> ConstraintAdded; 78 78 protected virtual void OnConstraintAdded(IConstraint constraint) { 79 if 79 if(ConstraintAdded != null) 80 80 ConstraintAdded(this, new ConstraintEventArgs(constraint)); 81 81 } 82 82 public event EventHandler<ConstraintEventArgs> ConstraintRemoved; 83 83 protected virtual void OnConstraintRemoved(IConstraint constraint) { 84 if 84 if(ConstraintRemoved != null) 85 85 ConstraintRemoved(this, new ConstraintEventArgs(constraint)); 86 86 } … … 106 106 } 107 107 } 108 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 109 base.Populate(node, restoredObjects); 110 XmlNode constraintsNode = node.SelectSingleNode("Constraints"); 111 if (constraintsNode != null) { 108 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 109 // base.Populate(node, restoredObjects); 110 // XmlNode constraintsNode = node.SelectSingleNode("Constraints"); 111 // if(constraintsNode != null) { 112 // myConstraints.Clear(); 113 // foreach(XmlNode constraintNode in constraintsNode.ChildNodes) 114 // AddConstraint((IConstraint)PersistenceManager.Restore(constraintNode, restoredObjects)); 115 // } 116 //} 117 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 118 base.Populate(reader, restoredObjects); 119 reader.Read(); 120 if(reader.Name == "Constraints") { 112 121 myConstraints.Clear(); 113 foreach (XmlNode constraintNode in constraintsNode.ChildNodes) 114 AddConstraint((IConstraint)PersistenceManager.Restore(constraintNode, restoredObjects)); 122 reader.Read(); 123 while(reader.IsStartElement()) { 124 AddConstraint((IConstraint)PersistenceManager.Restore(reader, restoredObjects)); 125 reader.Skip(); 126 } 127 reader.ReadEndElement(); 115 128 } 116 129 } -
branches/XmlReaderWriterBranch/HeuristicLab.Core/EngineBase.cs
r119 r125 204 204 writer.WriteEndElement(); // </ExecutionTime> 205 205 } 206 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 207 base.Populate(node, restoredObjects); 208 myOperatorGraph = (IOperatorGraph)PersistenceManager.Restore(node.SelectSingleNode("OperatorGraph"), restoredObjects); 209 myGlobalScope = (IScope)PersistenceManager.Restore(node.SelectSingleNode("GlobalScope"), restoredObjects); 210 211 XmlNode stackNode = node.SelectSingleNode("ExecutionStack"); 212 for (int i = stackNode.ChildNodes.Count - 1; i >= 0; i--) 213 myExecutionStack.Push((IOperation)PersistenceManager.Restore(stackNode.ChildNodes[i], restoredObjects)); 214 215 XmlNode timeNode = node.SelectSingleNode("ExecutionTime"); 216 myExecutionTime = TimeSpan.Parse(timeNode.InnerText); 206 public override void Populate(XmlReader reader, IDictionary<Guid,IStorable> restoredObjects) { 207 base.Populate(reader, restoredObjects); 208 reader.Read(); 209 myOperatorGraph = (IOperatorGraph)PersistenceManager.Restore(reader, "OperatorGraph", restoredObjects); 210 reader.Skip(); 211 myGlobalScope = (IScope)PersistenceManager.Restore(reader, "GlobalScope", restoredObjects); 212 reader.Skip(); 213 if(reader.Name!="ExecutionStack") throw new XmlException("Expected \"ExecutionStack\", found: \""+reader.Name+"\""); 214 List<IOperation> operationList = new List<IOperation>(); 215 if(!reader.IsEmptyElement) { 216 reader.Read(); 217 while(reader.IsStartElement()) { 218 operationList.Insert(0, (IOperation)PersistenceManager.Restore(reader, restoredObjects)); 219 reader.Skip(); 220 } 221 reader.ReadEndElement(); 222 } else { 223 reader.Read(); 224 } 225 foreach(IOperation op in operationList) 226 myExecutionStack.Push(op); 227 myExecutionTime = TimeSpan.Parse(reader.ReadElementString("ExecutionTime")); 217 228 } 218 229 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/Interfaces/IStorable.cs
r119 r125 34 34 //XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects); 35 35 void Persist(string name, XmlWriter writer, IDictionary<Guid, IStorable> persistedObjects); 36 void Populate(Xml Node node, IDictionary<Guid, IStorable> restoredObjects);36 void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects); 37 37 } 38 38 } -
branches/XmlReaderWriterBranch/HeuristicLab.Core/OperatorBase.cs
r124 r125 480 480 writer.WriteEndElement(); // </Variables> 481 481 } 482 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 483 base.Populate(node, restoredObjects); 484 myName = node.Attributes["Name"].Value; 485 if (node.Attributes["Breakpoint"] != null) 486 myBreakpoint = bool.Parse(node.Attributes["Breakpoint"].Value); 487 XmlNode subOperatorsNode = node.SelectSingleNode("SubOperators"); 488 for (int i = 0; i < subOperatorsNode.ChildNodes.Count; i++) 489 AddSubOperator((IOperator)PersistenceManager.Restore(subOperatorsNode.ChildNodes[i], restoredObjects)); 490 XmlNode infosNode = node.SelectSingleNode("VariableInfos"); 482 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 483 // base.Populate(node, restoredObjects); 484 // myName = node.Attributes["Name"].Value; 485 // if(node.Attributes["Breakpoint"] != null) 486 // myBreakpoint = bool.Parse(node.Attributes["Breakpoint"].Value); 487 // XmlNode subOperatorsNode = node.SelectSingleNode("SubOperators"); 488 // for(int i = 0; i < subOperatorsNode.ChildNodes.Count; i++) 489 // AddSubOperator((IOperator)PersistenceManager.Restore(subOperatorsNode.ChildNodes[i], restoredObjects)); 490 // XmlNode infosNode = node.SelectSingleNode("VariableInfos"); 491 // myVariableInfos.Clear(); 492 // foreach(XmlNode infoNode in infosNode.ChildNodes) 493 // AddVariableInfo((IVariableInfo)PersistenceManager.Restore(infoNode, restoredObjects)); 494 // XmlNode variablesNode = node.SelectSingleNode("Variables"); 495 // myVariables.Clear(); 496 // foreach(XmlNode variableNode in variablesNode.ChildNodes) 497 // AddVariable((IVariable)PersistenceManager.Restore(variableNode, restoredObjects)); 498 //} 499 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 500 myName = reader["Name"]; 501 if(reader["Breakpoint"] != null) 502 myBreakpoint = bool.Parse(reader["Breakpoint"]); 503 504 base.Populate(reader, restoredObjects); 505 // constraintItemBase already reads to the next subelement 506 if(reader.Name != "SubOperators") throw new XmlException("Expected: \"SubOperators\" found: \"" + reader.Name+"\""); 507 if(!reader.IsEmptyElement) { 508 reader.Read(); 509 while(reader.IsStartElement()) { 510 AddSubOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects)); 511 reader.Skip(); 512 } 513 reader.ReadEndElement(); 514 } else { 515 reader.Read(); 516 } 517 if(reader.Name != "VariableInfos") throw new XmlException("Expected: \"VariableInfos\" found: \"" + reader.Name+"\""); 491 518 myVariableInfos.Clear(); 492 foreach (XmlNode infoNode in infosNode.ChildNodes) 493 AddVariableInfo((IVariableInfo)PersistenceManager.Restore(infoNode, restoredObjects)); 494 XmlNode variablesNode = node.SelectSingleNode("Variables"); 519 if(!reader.IsEmptyElement) { 520 reader.Read(); 521 while(reader.IsStartElement()) { 522 AddVariableInfo((IVariableInfo)PersistenceManager.Restore(reader, restoredObjects)); 523 reader.Skip(); 524 } 525 reader.ReadEndElement(); 526 } else { 527 reader.Read(); 528 } 529 if(reader.Name != "Variables") throw new XmlException("Expected: \"Variables\" found: \"" + reader.Name + "\""); 495 530 myVariables.Clear(); 496 foreach (XmlNode variableNode in variablesNode.ChildNodes) 497 AddVariable((IVariable)PersistenceManager.Restore(variableNode, restoredObjects)); 531 if(!reader.IsEmptyElement) { 532 reader.Read(); 533 while(reader.IsStartElement()) { 534 AddVariable((IVariable)PersistenceManager.Restore(reader, restoredObjects)); 535 reader.Skip(); 536 } 537 reader.ReadEndElement(); 538 } else { 539 reader.Read(); 540 } 498 541 } 499 542 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/OperatorGraph.cs
r119 r125 35 35 get { return myInitialOperator; } 36 36 set { 37 if 37 if(myInitialOperator != value) { 38 38 myInitialOperator = value; 39 39 OnInitialOperatorChanged(); … … 53 53 OperatorGraph clone = new OperatorGraph(); 54 54 clonedObjects.Add(Guid, clone); 55 foreach 55 foreach(IOperator op in Operators) 56 56 clone.AddOperator((IOperator)Auxiliary.Clone(op, clonedObjects)); 57 if 57 if(InitialOperator != null) 58 58 clone.myInitialOperator = (IOperator)Auxiliary.Clone(InitialOperator, clonedObjects); 59 59 return clone; … … 61 61 62 62 public void AddOperator(IOperator op) { 63 if 63 if(!myOperators.ContainsKey(op.Guid)) { 64 64 myOperators.Add(op.Guid, op); 65 65 OnOperatorAdded(op); 66 66 67 foreach 67 foreach(IOperator subOperator in op.SubOperators) 68 68 AddOperator(subOperator); 69 69 } … … 71 71 public void RemoveOperator(Guid guid) { 72 72 IOperator op = GetOperator(guid); 73 if 74 foreach 73 if(op != null) { 74 foreach(IOperator o in Operators) { 75 75 int i = 0; 76 while 77 if 76 while(i < o.SubOperators.Count) { 77 if(o.SubOperators[i] == op) 78 78 o.RemoveSubOperator(i); 79 79 else … … 81 81 } 82 82 } 83 if 83 if(InitialOperator == op) 84 84 InitialOperator = null; 85 85 myOperators.Remove(op.Guid); … … 89 89 public IOperator GetOperator(Guid guid) { 90 90 IOperator op; 91 if 91 if(myOperators.TryGetValue(guid, out op)) 92 92 return op; 93 93 else … … 97 97 Guid[] guids = new Guid[Operators.Count]; 98 98 int i = 0; 99 foreach 99 foreach(IOperator op in Operators) { 100 100 guids[i] = op.Guid; 101 101 i++; 102 102 } 103 for 103 for(int j = 0; j < guids.Length; j++) 104 104 RemoveOperator(guids[j]); 105 105 } … … 107 107 public event EventHandler<OperatorEventArgs> OperatorAdded; 108 108 protected virtual void OnOperatorAdded(IOperator op) { 109 if 109 if(OperatorAdded != null) 110 110 OperatorAdded(this, new OperatorEventArgs(op)); 111 111 } 112 112 public event EventHandler<OperatorEventArgs> OperatorRemoved; 113 113 protected virtual void OnOperatorRemoved(IOperator op) { 114 if 114 if(OperatorRemoved != null) 115 115 OperatorRemoved(this, new OperatorEventArgs(op)); 116 116 } 117 117 public event EventHandler InitialOperatorChanged; 118 118 protected virtual void OnInitialOperatorChanged() { 119 if 119 if(InitialOperatorChanged != null) 120 120 InitialOperatorChanged(this, new EventArgs()); 121 121 } … … 141 141 PersistenceManager.Persist("InitialOperator", InitialOperator, writer, persistedObjects); 142 142 } 143 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) {144 base.Populate(node, restoredObjects);143 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 144 // base.Populate(node, restoredObjects); 145 145 146 XmlNode ops = node.SelectSingleNode("Operators"); 147 for (int i = 0; i < ops.ChildNodes.Count; i++) { 148 XmlNode opNode = ops.ChildNodes[i]; 149 IOperator op = (IOperator)PersistenceManager.Restore(opNode, restoredObjects); 146 // XmlNode ops = node.SelectSingleNode("Operators"); 147 // for(int i = 0; i < ops.ChildNodes.Count; i++) { 148 // XmlNode opNode = ops.ChildNodes[i]; 149 // IOperator op = (IOperator)PersistenceManager.Restore(opNode, restoredObjects); 150 // myOperators.Add(op.Guid, op); 151 // } 152 153 // XmlNode initial = node.SelectSingleNode("InitialOperator"); 154 // if(initial != null) 155 // myInitialOperator = (IOperator)PersistenceManager.Restore(initial, restoredObjects); 156 //} 157 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 158 base.Populate(reader, restoredObjects); 159 160 reader.Read(); 161 if(reader.Name != "Operators") throw new XmlException("Expected: Operators found: " + reader.Name); 162 reader.Read(); 163 while(reader.IsStartElement()) { 164 IOperator op = (IOperator)PersistenceManager.Restore(reader, restoredObjects); 165 reader.Skip(); 150 166 myOperators.Add(op.Guid, op); 151 167 } 152 153 XmlNode initial = node.SelectSingleNode("InitialOperator");154 if (initial != null)155 myInitialOperator = (IOperator)PersistenceManager.Restore(initial, restoredObjects);168 reader.ReadEndElement(); 169 if(reader.IsStartElement()) { 170 myInitialOperator = (IOperator)PersistenceManager.Restore(reader, "InitialOperator", restoredObjects); 171 } 156 172 } 157 173 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/OperatorGroup.cs
r119 r125 110 110 writer.WriteEndElement(); // </Operators> 111 111 } 112 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 113 base.Populate(node, restoredObjects); 114 myName = node.Attributes["Name"].Value; 115 XmlNode subGroupsNode = node.SelectSingleNode("SubGroups"); 116 foreach (XmlNode subGroupNode in subGroupsNode.ChildNodes) 117 AddSubGroup((IOperatorGroup)PersistenceManager.Restore(subGroupNode, restoredObjects)); 118 XmlNode operatorsNode = node.SelectSingleNode("Operators"); 119 foreach (XmlNode operatorNode in operatorsNode.ChildNodes) 120 AddOperator((IOperator)PersistenceManager.Restore(operatorNode, restoredObjects)); 112 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 113 // base.Populate(node, restoredObjects); 114 // myName = node.Attributes["Name"].Value; 115 // XmlNode subGroupsNode = node.SelectSingleNode("SubGroups"); 116 // foreach(XmlNode subGroupNode in subGroupsNode.ChildNodes) 117 // AddSubGroup((IOperatorGroup)PersistenceManager.Restore(subGroupNode, restoredObjects)); 118 // XmlNode operatorsNode = node.SelectSingleNode("Operators"); 119 // foreach(XmlNode operatorNode in operatorsNode.ChildNodes) 120 // AddOperator((IOperator)PersistenceManager.Restore(operatorNode, restoredObjects)); 121 //} 122 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 123 myName = reader["Name"]; 124 base.Populate(reader, restoredObjects); 125 reader.Read(); 126 if(reader.Name != "SubGroups") throw new XmlException("Expected: \"SubGroups\", found: \"" + reader.Name + "\""); 127 if(!reader.IsEmptyElement) { 128 reader.Read(); 129 while(reader.IsStartElement()) { 130 AddSubGroup((IOperatorGroup)PersistenceManager.Restore(reader, restoredObjects)); 131 reader.Skip(); 132 } 133 reader.ReadEndElement(); 134 } else { 135 reader.Read(); 136 } 137 if(reader.Name != "Operators") throw new XmlException("Expected: \"Operators\", found: \"" + reader.Name + "\""); 138 if(!reader.IsEmptyElement) { 139 reader.Read(); 140 while(reader.IsStartElement()) { 141 AddOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects)); 142 reader.Skip(); 143 } 144 reader.ReadEndElement(); 145 } else { 146 reader.Read(); 147 } 121 148 } 122 149 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/OperatorLibrary.cs
r119 r125 60 60 PersistenceManager.Persist("OperatorGroup", Group, writer, persistedObjects); 61 61 } 62 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 63 base.Populate(node, restoredObjects); 64 myGroup = (IOperatorGroup)PersistenceManager.Restore(node.SelectSingleNode("OperatorGroup"), restoredObjects); 62 public override void Populate(XmlReader reader, IDictionary<Guid,IStorable> restoredObjects) { 63 base.Populate(reader, restoredObjects); 64 reader.Read(); 65 myGroup = (IOperatorGroup)PersistenceManager.Restore(reader, "OperatorGroup", restoredObjects); 66 reader.Read(); 65 67 } 66 68 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/PersistenceManager.cs
r119 r125 57 57 } 58 58 59 public static IStorable Restore(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 60 Guid guid = new Guid(node.Attributes["GUID"].Value); 61 if (restoredObjects.ContainsKey(guid)) { 59 public static IStorable Restore(XmlReader reader, string elementName, IDictionary<Guid, IStorable> restoredObjects) { 60 reader = reader.ReadSubtree(); 61 reader.Read(); 62 if(reader.Name != elementName) throw new XmlException("Expected: \"" + elementName + "\" found: \"" + reader.Name+"\""); 63 IStorable result = RestoreElement(reader, restoredObjects); 64 reader.Read(); 65 reader.Close(); 66 return result; 67 } 68 69 public static IStorable Restore(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 70 reader = reader.ReadSubtree(); 71 reader.Read(); 72 IStorable result = RestoreElement(reader, restoredObjects); 73 reader.Read(); 74 reader.Close(); 75 return result; 76 } 77 private static IStorable RestoreElement(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 78 Guid guid = new Guid(reader["GUID"]); 79 if(restoredObjects.ContainsKey(guid)) { 62 80 return restoredObjects[guid]; 63 81 } else { 64 Type type = Type.GetType( node.Attributes["Type"].Value, true);82 Type type = Type.GetType(reader["Type"], true); 65 83 IStorable instance = (IStorable)Activator.CreateInstance(type); 66 84 restoredObjects.Add(guid, instance); 67 instance.Populate( node, restoredObjects);85 instance.Populate(reader, restoredObjects); 68 86 return instance; 69 87 } … … 89 107 } 90 108 public static IStorable Load(Stream stream) { 91 XmlDocument doc = new XmlDocument(); 92 doc.Load(stream); 93 return PersistenceManager.Restore(doc.ChildNodes[1], new Dictionary<Guid, IStorable>()); 109 XmlReaderSettings settings = new XmlReaderSettings(); 110 settings.IgnoreComments = true; 111 settings.IgnoreWhitespace = true; 112 XmlReader reader = XmlReader.Create(stream, settings); 113 reader.MoveToContent(); // read "<?xml version="1.0"?/> 114 return PersistenceManager.RestoreElement(reader, new Dictionary<Guid, IStorable>()); 94 115 } 95 116 -
branches/XmlReaderWriterBranch/HeuristicLab.Core/Scope.cs
r119 r125 311 311 writer.WriteEndElement(); // </SubScopes> 312 312 } 313 public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 314 base.Populate(node, restoredObjects); 315 myName = node.Attributes["Name"].Value; 316 317 XmlNode variables = node.SelectSingleNode("Variables"); 318 foreach (XmlNode variableNode in variables.ChildNodes) { 319 IVariable variable = (IVariable)PersistenceManager.Restore(variableNode, restoredObjects); 320 AddVariable(variable); 321 } 322 323 XmlNode aliases = node.SelectSingleNode("Aliases"); 324 if (aliases != null) { 325 foreach (XmlNode aliasNode in aliases.ChildNodes) 326 AddAlias(aliasNode.Attributes["Alias"].Value, aliasNode.Attributes["Name"].Value); 327 } 328 329 XmlNode subScopes = node.SelectSingleNode("SubScopes"); 330 for (int i = 0; i < subScopes.ChildNodes.Count; i++) { 331 IScope scope = (IScope)PersistenceManager.Restore(subScopes.ChildNodes[i], restoredObjects); 332 AddSubScope(scope); 313 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 314 // base.Populate(node, restoredObjects); 315 // myName = node.Attributes["Name"].Value; 316 317 // XmlNode variables = node.SelectSingleNode("Variables"); 318 // foreach(XmlNode variableNode in variables.ChildNodes) { 319 // IVariable variable = (IVariable)PersistenceManager.Restore(variableNode, restoredObjects); 320 // AddVariable(variable); 321 // } 322 323 // XmlNode aliases = node.SelectSingleNode("Aliases"); 324 // if(aliases != null) { 325 // foreach(XmlNode aliasNode in aliases.ChildNodes) 326 // AddAlias(aliasNode.Attributes["Alias"].Value, aliasNode.Attributes["Name"].Value); 327 // } 328 329 // XmlNode subScopes = node.SelectSingleNode("SubScopes"); 330 // for(int i = 0; i < subScopes.ChildNodes.Count; i++) { 331 // IScope scope = (IScope)PersistenceManager.Restore(subScopes.ChildNodes[i], restoredObjects); 332 // AddSubScope(scope); 333 // } 334 //} 335 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 336 myName = reader["Name"]; 337 base.Populate(reader, restoredObjects); 338 reader.Read(); 339 if(reader.Name != "Variables") throw new XmlException("Expected: \"Variables\", found: \""+reader.Name+"\""); 340 if(!reader.IsEmptyElement) { 341 reader.Read(); 342 while(reader.IsStartElement()) { 343 IVariable variable = (IVariable)PersistenceManager.Restore(reader, restoredObjects); 344 reader.Skip(); 345 AddVariable(variable); 346 } 347 reader.ReadEndElement(); 348 } else { 349 reader.Read(); 350 } 351 if(reader.Name == "Aliases" && !reader.IsEmptyElement) { 352 reader.Read(); 353 while(reader.IsStartElement()) { 354 AddAlias(reader["Alias"], reader["Name"]); 355 } 356 reader.ReadEndElement(); 357 } else { 358 reader.Read(); 359 } 360 if(reader.Name != "SubScopes") throw new XmlException("Expected: \"SubScopes\", found: \"" + reader.Name + "\""); 361 if(!reader.IsEmptyElement) { 362 reader.Read(); 363 while(reader.IsStartElement()) { 364 IScope scope = (IScope)PersistenceManager.Restore(reader, restoredObjects); 365 reader.Skip(); 366 AddSubScope(scope); 367 } 368 reader.ReadEndElement(); 369 } else { 370 reader.Read(); 333 371 } 334 372 } -
branches/XmlReaderWriterBranch/HeuristicLab.Core/StorableBase.cs
r119 r125 59 59 writer.WriteAttributeString("GUID", Guid.ToString()); 60 60 } 61 public virtual void Populate(Xml Node node, IDictionary<Guid,IStorable> restoredObjects) {62 myGuid = new Guid( node.Attributes["GUID"].Value);61 public virtual void Populate(XmlReader reader, IDictionary<Guid,IStorable> restoredObjects) { 62 myGuid = new Guid(reader["GUID"]); 63 63 } 64 64 } -
branches/XmlReaderWriterBranch/HeuristicLab.Core/Variable.cs
r119 r125 115 115 PersistenceManager.Persist("Value", Value, writer, persistedObjects); 116 116 } 117 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 118 myName = node.Attributes["Name"].Value; 119 XmlNode valueNode = node.SelectSingleNode("Value"); 120 if (valueNode != null) 121 myValue = (IItem)PersistenceManager.Restore(valueNode, restoredObjects); 117 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 118 // myName = node.Attributes["Name"].Value; 119 // XmlNode valueNode = node.SelectSingleNode("Value"); 120 // if(valueNode != null) 121 // myValue = (IItem)PersistenceManager.Restore(valueNode, restoredObjects); 122 //} 123 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 124 myName = reader["Name"]; 125 reader.Read(); 126 if(reader.IsStartElement()) 127 myValue = (IItem)PersistenceManager.Restore(reader, "Value", restoredObjects); 122 128 } 123 129 #endregion -
branches/XmlReaderWriterBranch/HeuristicLab.Core/VariableInfo.cs
r119 r125 146 146 writer.WriteAttributeString("Local", Local.ToString()); 147 147 } 148 public override void Populate(XmlNode node, IDictionary<Guid,IStorable> restoredObjects) { 149 myActualName = node.Attributes["ActualName"].Value; 150 myFormalName = node.Attributes["FormalName"].Value; 151 myDescription = node.Attributes["Description"].Value; 152 myDataType = Type.GetType(node.Attributes["DataType"].Value, true); 153 myKind = (VariableKind)Enum.Parse(typeof(VariableKind), node.Attributes["Kind"].Value); 154 myLocal = bool.Parse(node.Attributes["Local"].Value); 148 //public override void Populate(XmlNode node, IDictionary<Guid, IStorable> restoredObjects) { 149 // myActualName = node.Attributes["ActualName"].Value; 150 // myFormalName = node.Attributes["FormalName"].Value; 151 // myDescription = node.Attributes["Description"].Value; 152 // myDataType = Type.GetType(node.Attributes["DataType"].Value, true); 153 // myKind = (VariableKind)Enum.Parse(typeof(VariableKind), node.Attributes["Kind"].Value); 154 // myLocal = bool.Parse(node.Attributes["Local"].Value); 155 //} 156 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 157 myActualName = reader["ActualName"]; 158 myFormalName = reader["FormalName"]; 159 myDescription = reader["Description"]; 160 myDataType = Type.GetType(reader["DataType"], true); 161 myKind = (VariableKind)Enum.Parse(typeof(VariableKind), reader["Kind"]); 162 myLocal = bool.Parse(reader["Local"]); 155 163 } 156 164 #endregion
Note: See TracChangeset
for help on using the changeset viewer.