- Timestamp:
- 08/01/08 14:43:10 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/sources/HeuristicLab.CEDMA.Core/DatabaseOperatorLibrary.cs
r416 r417 4 4 using System.Text; 5 5 using HeuristicLab.Core; 6 using HeuristicLab.CEDMA.DB.Interfaces; 6 7 7 8 namespace HeuristicLab.CEDMA.Core { … … 13 14 } 14 15 15 private string dbUri; 16 17 public DatabaseOperatorLibrary(string dbUri) 18 : base() { 19 this.dbUri = dbUri; 20 group = new OperatorGroup(); 16 private IDatabase database; 17 public IDatabase Database { 18 get { return database; } 19 set { this.database = value; } 21 20 } 22 21 22 private Dictionary<IOperator, long> knownOperators; 23 24 public DatabaseOperatorLibrary() 25 : base() { 26 group = new OperatorGroup(); 27 knownOperators = new Dictionary<IOperator, long>(); 28 } 29 30 public void Save() { 31 Dictionary<IOperator, long> newKnownOperators = new Dictionary<IOperator,long>(); 32 foreach(IOperator op in group.Operators) { 33 if(knownOperators.ContainsKey(op)) { 34 // update 35 long id =knownOperators[op]; 36 Database.UpdateOperator(id, op.Name, PersistenceManager.SaveToGZip(op)); 37 knownOperators.Remove(op); 38 newKnownOperators.Add(op, id); 39 } else { 40 // create new 41 long id = Database.InsertOperator(op.Name, PersistenceManager.SaveToGZip(op)); 42 newKnownOperators.Add(op, id); 43 } 44 } 45 // delete operators from the table that are not present in the group anymore (remaining entries) 46 foreach(long id in knownOperators.Values) { 47 Database.DeleteOperator(id); 48 } 49 50 knownOperators = newKnownOperators; 51 } 52 53 public void Restore() { 54 foreach(IOperator op in knownOperators.Keys) { 55 group.RemoveOperator(op); 56 } 57 knownOperators.Clear(); 58 if(database == null) return; 59 foreach(OperatorEntry e in Database.GetOperators()) { 60 IOperator op = (IOperator)PersistenceManager.RestoreFromGZip(e.RawData); 61 knownOperators.Add(op, e.Id); 62 group.AddOperator(op); 63 } 64 } 23 65 24 66 public override System.Xml.XmlNode GetXmlNode(string name, System.Xml.XmlDocument document, IDictionary<Guid, IStorable> persistedObjects) { … … 35 77 36 78 public override IView CreateView() { 37 // return new DatabaseOperatorLibraryView(this);38 return n ull;79 Restore(); 80 return new DatabaseOperatorLibraryView(this); 39 81 } 40 82 }
Note: See TracChangeset
for help on using the changeset viewer.