Changeset 122 for branches/XmlTextReaderBranch/HeuristicLab.Core
- Timestamp:
- 04/15/08 14:17:26 (16 years ago)
- Location:
- branches/XmlTextReaderBranch/HeuristicLab.Core
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/XmlTextReaderBranch/HeuristicLab.Core/AtomicOperation.cs
r121 r122 64 64 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 65 65 base.Populate(reader, restoredObjects); 66 reader.Read(); 66 67 myOperator = (IOperator)PersistenceManager.Restore(reader, "Operator", restoredObjects); 68 reader.Skip(); 67 69 myScope = (IScope)PersistenceManager.Restore(reader, "Scope", restoredObjects); 70 reader.Read(); 68 71 } 69 72 #endregion -
branches/XmlTextReaderBranch/HeuristicLab.Core/CompositeOperation.cs
r121 r122 81 81 //} 82 82 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 83 myExecuteInParallel = bool.Parse(reader["ExecuteInParallel"]); 83 84 base.Populate(reader, restoredObjects); 84 85 85 myExecuteInParallel = bool.Parse(reader["ExecuteInParallel"]); 86 87 reader.ReadStartElement("Operations"); 86 reader.ReadToDescendant("Operations"); 88 87 while(reader.IsStartElement()) 89 88 AddOperation((IOperation)PersistenceManager.Restore(reader, restoredObjects)); -
branches/XmlTextReaderBranch/HeuristicLab.Core/ConstrainedItemBase.cs
r121 r122 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 } 87 87 88 88 #region Persistence Methods 89 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) {89 public override XmlNode GetXmlNode(string name, XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { 90 90 XmlNode node = base.GetXmlNode(name, document, persistedObjects); 91 if 91 if(Constraints.Count > 0) { 92 92 XmlNode constraintsNode = document.CreateNode(XmlNodeType.Element, "Constraints", null); 93 foreach 93 foreach(IConstraint constraint in Constraints) 94 94 constraintsNode.AppendChild(PersistenceManager.Persist(constraint, document, persistedObjects)); 95 95 node.AppendChild(constraintsNode); … … 108 108 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 109 109 base.Populate(reader, restoredObjects); 110 if(reader.IsStartElement()) {111 reader.ReadToDescendant("Constraints");110 reader.Read(); 111 if(reader.Name == "Constraints") { 112 112 myConstraints.Clear(); 113 113 while(reader.IsStartElement()) -
branches/XmlTextReaderBranch/HeuristicLab.Core/EngineBase.cs
r121 r122 192 192 public override void Populate(XmlReader reader, IDictionary<Guid,IStorable> restoredObjects) { 193 193 base.Populate(reader, restoredObjects); 194 reader.Read(); 194 195 myOperatorGraph = (IOperatorGraph)PersistenceManager.Restore(reader, "OperatorGraph", restoredObjects); 196 reader.Skip(); 195 197 myGlobalScope = (IScope)PersistenceManager.Restore(reader, "GlobalScope", restoredObjects); 196 197 reader.ReadStartElement("ExecutionStack");198 reader.Skip(); 199 if(reader.Name!="ExecutionStack") throw new XmlException("Expected \"ExecutionStack\", found: \""+reader.Name+"\""); 198 200 List<IOperation> operationList = new List<IOperation>(); 199 while(reader.IsStartElement()) { 200 operationList.Insert(0, (IOperation)PersistenceManager.Restore(reader, restoredObjects)); 201 if(!reader.IsEmptyElement) { 202 reader.Read(); 203 while(reader.IsStartElement()) { 204 operationList.Insert(0, (IOperation)PersistenceManager.Restore(reader, restoredObjects)); 205 reader.Skip(); 206 } 207 reader.ReadEndElement(); 208 } else { 209 reader.Read(); 201 210 } 202 211 foreach(IOperation op in operationList) 203 212 myExecutionStack.Push(op); 204 reader.ReadEndElement(); 205 206 reader.ReadStartElement("ExecutionTime"); 207 myExecutionTime = TimeSpan.Parse(reader.ReadString()); 208 reader.ReadEndElement(); 213 myExecutionTime = TimeSpan.Parse(reader.ReadElementString("ExecutionTime")); 209 214 } 210 215 #endregion -
branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorBase.cs
r121 r122 479 479 //} 480 480 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 481 base.Populate(reader, restoredObjects);482 481 myName = reader["Name"]; 483 482 if(reader["Breakpoint"] != null) 484 483 myBreakpoint = bool.Parse(reader["Breakpoint"]); 485 reader.ReadStartElement("SubOperators"); 486 while(reader.IsStartElement()) 487 AddSubOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects)); 488 reader.ReadEndElement(); 489 reader.ReadStartElement("VariableInfos"); 484 485 base.Populate(reader, restoredObjects); 486 // constraintItemBase already reads to the next subelement 487 if(reader.Name != "SubOperators") throw new XmlException("Expected: \"SubOperators\" found: \"" + reader.Name+"\""); 488 if(!reader.IsEmptyElement) { 489 reader.Read(); 490 while(reader.IsStartElement()) { 491 AddSubOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects)); 492 reader.Skip(); 493 } 494 reader.ReadEndElement(); 495 } else { 496 reader.Read(); 497 } 498 if(reader.Name != "VariableInfos") throw new XmlException("Expected: \"VariableInfos\" found: \"" + reader.Name+"\""); 490 499 myVariableInfos.Clear(); 491 while(reader.IsStartElement()) 492 AddVariableInfo((IVariableInfo)PersistenceManager.Restore(reader, restoredObjects)); 493 reader.ReadEndElement(); 494 reader.ReadStartElement("Variables"); 500 if(!reader.IsEmptyElement) { 501 reader.Read(); 502 while(reader.IsStartElement()) { 503 AddVariableInfo((IVariableInfo)PersistenceManager.Restore(reader, restoredObjects)); 504 reader.Skip(); 505 } 506 reader.ReadEndElement(); 507 } else { 508 reader.Read(); 509 } 510 if(reader.Name != "Variables") throw new XmlException("Expected: \"Variables\" found: \"" + reader.Name + "\""); 495 511 myVariables.Clear(); 496 while(reader.IsStartElement()) 497 AddVariable((IVariable)PersistenceManager.Restore(reader, restoredObjects)); 498 reader.ReadEndElement(); 512 if(!reader.IsEmptyElement) { 513 reader.Read(); 514 while(reader.IsStartElement()) { 515 AddVariable((IVariable)PersistenceManager.Restore(reader, restoredObjects)); 516 reader.Skip(); 517 } 518 reader.ReadEndElement(); 519 } else { 520 reader.Read(); 521 } 499 522 } 500 523 #endregion -
branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorGraph.cs
r121 r122 149 149 base.Populate(reader, restoredObjects); 150 150 151 reader.ReadToDescendant("Operators"); 151 reader.Read(); 152 if(reader.Name != "Operators") throw new XmlException("Expected: Operators found: " + reader.Name); 153 reader.Read(); 152 154 while(reader.IsStartElement()) { 153 155 IOperator op = (IOperator)PersistenceManager.Restore(reader, restoredObjects); 156 reader.Skip(); 154 157 myOperators.Add(op.Guid, op); 155 158 } -
branches/XmlTextReaderBranch/HeuristicLab.Core/OperatorGroup.cs
r121 r122 109 109 //} 110 110 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 111 myName = reader["Name"]; 111 112 base.Populate(reader, restoredObjects); 112 myName = reader["Name"]; 113 reader.Read StartElement("SubGroups");113 114 reader.ReadToDescendant("SubGroups"); 114 115 while(reader.IsStartElement()) 115 116 AddSubGroup((IOperatorGroup)PersistenceManager.Restore(reader, restoredObjects)); 116 117 reader.ReadEndElement(); 117 reader.Read StartElement("Operators");118 reader.ReadToDescendant("Operators"); 118 119 while(reader.IsStartElement()) 119 120 AddOperator((IOperator)PersistenceManager.Restore(reader, restoredObjects)); -
branches/XmlTextReaderBranch/HeuristicLab.Core/PersistenceManager.cs
r121 r122 51 51 52 52 public static IStorable Restore(XmlReader reader, string elementName, IDictionary<Guid, IStorable> restoredObjects) { 53 reader.ReadToDescendant(elementName); 54 return RestoreElement(reader, restoredObjects); 53 reader = reader.ReadSubtree(); 54 reader.Read(); 55 if(reader.Name != elementName) throw new XmlException("Expected: \"" + elementName + "\" found: \"" + reader.Name+"\""); 56 IStorable result = RestoreElement(reader, restoredObjects); 57 reader.Read(); 58 reader.Close(); 59 return result; 55 60 } 56 61 57 62 public static IStorable Restore(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 63 reader = reader.ReadSubtree(); 58 64 reader.Read(); 59 return RestoreElement(reader, restoredObjects); 65 IStorable result = RestoreElement(reader, restoredObjects); 66 reader.Read(); 67 reader.Close(); 68 return result; 60 69 } 61 70 private static IStorable RestoreElement(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 62 71 Guid guid = new Guid(reader["GUID"]); 63 if(restoredObjects.ContainsKey(guid)) { 64 reader.ReadEndElement(); 72 if(restoredObjects.ContainsKey(guid)) { 65 73 return restoredObjects[guid]; 66 74 } else { … … 69 77 restoredObjects.Add(guid, instance); 70 78 instance.Populate(reader, restoredObjects); 71 reader.ReadEndElement();72 79 return instance; 73 80 } … … 90 97 } 91 98 public static IStorable Load(Stream stream) { 92 XmlDocument doc = new XmlDocument(); 93 XmlTextReader reader = new XmlTextReader(stream); 94 reader.WhitespaceHandling = WhitespaceHandling.None; 99 XmlReaderSettings settings = new XmlReaderSettings(); 100 settings.IgnoreComments = true; 101 settings.IgnoreWhitespace = true; 102 XmlReader reader = XmlReader.Create(stream, settings); 95 103 reader.MoveToContent(); // read "<?xml version="1.0"?/> 96 104 return PersistenceManager.RestoreElement(reader, new Dictionary<Guid, IStorable>()); -
branches/XmlTextReaderBranch/HeuristicLab.Core/Scope.cs
r121 r122 313 313 //} 314 314 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 315 myName = reader["Name"]; 315 316 base.Populate(reader, restoredObjects); 316 myName = reader["Name"]; 317 318 reader.ReadStartElement("Variables"); 319 while(reader.IsStartElement()) { 320 IVariable variable = (IVariable)PersistenceManager.Restore(reader, restoredObjects); 321 AddVariable(variable); 322 } 323 reader.ReadEndElement(); 324 325 if(reader.IsStartElement() && reader.Name=="Aliases") { 326 reader.ReadStartElement("Aliases"); 327 while(reader.IsStartElement()) 317 reader.Read(); 318 if(reader.Name != "Variables") throw new XmlException("Expected: \"Variables\", found: \""+reader.Name+"\""); 319 if(!reader.IsEmptyElement) { 320 reader.Read(); 321 while(reader.IsStartElement()) { 322 IVariable variable = (IVariable)PersistenceManager.Restore(reader, restoredObjects); 323 reader.Skip(); 324 AddVariable(variable); 325 } 326 reader.ReadEndElement(); 327 } else { 328 reader.Read(); 329 } 330 if(reader.Name == "Aliases" && !reader.IsEmptyElement) { 331 reader.Read(); 332 while(reader.IsStartElement()) { 328 333 AddAlias(reader["Alias"], reader["Name"]); 334 } 329 335 reader.ReadEndElement(); 330 } 331 reader.ReadStartElement("SubScopes"); 332 while(reader.IsStartElement()) { 333 IScope scope = (IScope)PersistenceManager.Restore(reader, restoredObjects); 334 AddSubScope(scope); 335 } 336 reader.ReadEndElement(); 336 } else { 337 reader.Read(); 338 } 339 if(reader.Name != "SubScopes") throw new XmlException("Expected: \"SubScopes\", found: \"" + reader.Name + "\""); 340 if(!reader.IsEmptyElement) { 341 reader.Read(); 342 while(reader.IsStartElement()) { 343 IScope scope = (IScope)PersistenceManager.Restore(reader, restoredObjects); 344 reader.Skip(); 345 AddSubScope(scope); 346 } 347 reader.ReadEndElement(); 348 } else { 349 reader.Read(); 350 } 337 351 } 338 352 #endregion -
branches/XmlTextReaderBranch/HeuristicLab.Core/Variable.cs
r121 r122 117 117 public override void Populate(XmlReader reader, IDictionary<Guid, IStorable> restoredObjects) { 118 118 myName = reader["Name"]; 119 reader.Read(); 119 120 if(reader.IsStartElement()) 120 121 myValue = (IItem)PersistenceManager.Restore(reader, "Value", restoredObjects);
Note: See TracChangeset
for help on using the changeset viewer.