From f49b333e61acd4e27ed3ac805af7ce34bcefc41f Mon Sep 17 00:00:00 2001 From: Michael Becker Date: Tue, 20 Sep 2016 12:08:50 -0400 Subject: [PATCH] Complete interface specification for standard DataFormat class (UE-CORE) --- .../UniversalEditor/Core/DataFormat.java | 59 ++++++++++++++++++- 1 file changed, 57 insertions(+), 2 deletions(-) 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); + } }