diff --git a/Java/net.alcetech.UniversalEditor.Core/src/net/alcetech/UniversalEditor/Core/DataFormat.java b/Java/net.alcetech.UniversalEditor.Core/src/net/alcetech/UniversalEditor/Core/DataFormat.java index c046fc50..db7c13be 100644 --- a/Java/net.alcetech.UniversalEditor.Core/src/net/alcetech/UniversalEditor/Core/DataFormat.java +++ b/Java/net.alcetech.UniversalEditor.Core/src/net/alcetech/UniversalEditor/Core/DataFormat.java @@ -1,9 +1,64 @@ package net.alcetech.UniversalEditor.Core; +import java.util.Stack; + public abstract class DataFormat { - public DataFormatReference getDataFormatReference() - { + public DataFormatReference getDataFormatReference() { return new DataFormatReference(this.getClass().getName()); } + + private Accessor _accessor = null; + public Accessor getAccessor() { + return _accessor; + } + public void setAccessor(Accessor value) { + _accessor = value; + } + + protected void beforeLoadInternal(Stack objectModels) { + // virtual + } + protected void afterLoadInternal(Stack objectModels ) { + // virtual + } + protected abstract void loadInternal(ObjectModel objectModel); + + public void load(ObjectModel objectModel) { + if (objectModel == null) + throw new NullPointerException(); + + Stack stack = new Stack(); + stack.push(objectModel); + beforeLoadInternal(stack); + + ObjectModel omb = stack.pop(); + loadInternal(omb); + stack.push(omb); + + afterLoadInternal(stack); + } + + protected void beforeSaveInternal(Stack objectModels) { + // virtual + } + protected void afterSaveInternal(Stack objectModels ) { + // virtual + } + protected abstract void saveInternal(ObjectModel objectModel); + + public void save(ObjectModel objectModel) { + if (objectModel == null) + throw new NullPointerException(); + + Stack stack = new Stack(); + stack.push(objectModel); + beforeSaveInternal(stack); + + ObjectModel omb = stack.pop(); + saveInternal(omb); + stack.push(omb); + + afterSaveInternal(stack); + } }