|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectdatabionics.project.DataManager
public class DataManager
DataManager ensures access to globally used Objects, providing unlimited number of flags, specified by unique strings, if recomputation has to be done. If DataObject changes, all flags are set to false. Defining dependencies between Objects ensures, that changing an Object also removes dependent Objects. Data is organized in DataManager instances. Each instance contains a DataSet of DataObjects. These Objects contains a list of flags, dynamically arranged by input strings. Each of the objects Manager, Set, Object, dependencies and flag are identified by unique strings. Internally the all objects are managed by synchronized hashtables. (Multiple instances / synchronization (multithread behaviour) for get and put still untested) DataManager | +------> Instance1 -> Instance2 -> Instance3 -> ... | +-> identifier | +-> DataObject1 -> DataObject2 -> DataObject3 -> ... | +---> identifier | +---> data | +---> flag1 -> flag2 -> flag3 -> ... | +---> dependent1 -> dependent2 -> ... TODO - JUnit test - Object independent clone(), (1.5 cast()) - toStream - workspace toString - reverse dependencies - function evaluation depending on flag mask. Decision, whether recomputation is necessary, made by DataManager - get Object[] ? Accessable Objects: Type = (identifiers) -----------------|--------------- Object = (Object) Flag = (Object,flag) dependency = ((Object),(Object)) HOWTO Using one instance: If you don't need to manage similar sets of data, you can access data without specifying the current instance as argument. If no argument is given, the default instance is used. Identifier for the default instance is "default". Using several instances: If you decide to use more than one instance, you can create new instances, by adding an Object to a nonexistant instance. You have to keep track of your instances yourself. Don't use multiple instances of DataManagers, since methods and fields are declared static for secure access. Avoid unessecary computations: Each DataObject contains a list of flag identifiers, which will be set to false if DataObject changes. If the necessary computations are finished, set a unique flag, which will ensure that computation isn't done twice, I. Add unique flag to specified Object after computation is done II. Add check, whether computation should be done, before computation Keeping your workspace clean: Creating an Object also should define dependencies to other Objects, such that changing an Object removes the dependent Objects as well. Adding new DataObjects in your implementation: (e.g. changing a file format for LrnFile) If you want to change the file format or type of Object in your implementation, just add the old and the new DataObject to DataManager in your IO - Function, such that the old and new format is accessable. If changeover to new DataObject is done in all corresponding implementations, remove the old input functions. I. add new DataObject to DataManager, leave old DataObject - Code untouched. II. change the DataObject access in old implementation successively. III. If you're sure old DataObject access is completely removed, remove old code from input functions, Checking your DataManager workspace: To list your currently initialized DataObjects, use toString().
Field Summary | |
---|---|
protected static org.apache.log4j.Logger |
log
|
Constructor Summary | |
---|---|
DataManager()
|
Method Summary | |
---|---|
static void |
clear(java.lang.String currentInstance)
|
static void |
clearAll()
|
static boolean |
contains(java.lang.String identifier)
|
static boolean |
contains(java.lang.String identifier,
java.lang.String currentInstance)
|
static java.lang.Object |
get(java.lang.String identifier)
obtain an Object from workspace. |
static java.lang.Object |
get(java.lang.String identifier,
java.lang.String currentInstance)
|
static java.lang.Object |
getCopy(java.lang.String identifier)
obtain a copy of specified Object. |
static java.lang.Object |
getCopy(java.lang.String identifier,
java.lang.String currentInstance)
|
static java.lang.String |
getDefaultInstance()
returns the default instance identifier |
static boolean |
getFlag(java.lang.String identifier,
java.lang.String flagID)
|
static boolean |
getFlag(java.lang.String identifier,
java.lang.String flagID,
java.lang.String currentInstance)
|
static void |
put(java.lang.String identifier,
java.lang.Object data)
put an Object into workspace (default instance) |
static void |
put(java.lang.String identifier,
java.lang.Object data,
java.lang.String currentInstance)
put an Object in workspace at specified instance. |
static void |
put(java.lang.String identifier,
java.lang.Object data,
java.lang.String[] dependencies)
|
static boolean |
remove(java.lang.String identifier)
remove an Object from default instance workspace, including all dependents. |
static boolean |
remove(java.lang.String identifier,
java.lang.String currentInstance)
remove an Object from workspace, including all dependents. |
static void |
setDefaultInstance(java.lang.String id)
sets the default instance identifier |
static boolean |
setDependency(java.lang.String identifier,
java.lang.String dependent)
make an Object dependent to another Ovject, such that chaging the specified Object will remove the dependent |
static boolean |
setDependency(java.lang.String identifier,
java.lang.String[] dependent)
make a list of Objects in workspace depending on another Object (s. |
static boolean |
setDependency(java.lang.String identifier,
java.lang.String[] dependent,
java.lang.String currentInstance)
make a list of Objects in workspace depending on another Object (s. |
static boolean |
setDependency(java.lang.String identifier,
java.lang.String dependent,
java.lang.String currentInstance)
make an Object dependent to another Ovject, such that chaging the specified Object will remove the dependent. |
static boolean |
setFlag(java.lang.String identifier,
java.lang.String flagID)
set a flag for specified DataObject in default instance |
static boolean |
setFlag(java.lang.String identifier,
java.lang.String flagID,
java.lang.String currentInstance)
set a flag for specified DataObject in |
java.lang.String |
toString()
String of workspace variables |
java.lang.String[] |
workspaceToString()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
protected static org.apache.log4j.Logger log
Constructor Detail |
---|
public DataManager()
Method Detail |
---|
public static void setDefaultInstance(java.lang.String id)
public static java.lang.String getDefaultInstance()
public java.lang.String[] workspaceToString()
public java.lang.String toString()
toString
in class java.lang.Object
public static boolean setFlag(java.lang.String identifier, java.lang.String flagID)
public static boolean setFlag(java.lang.String identifier, java.lang.String flagID, java.lang.String currentInstance)
currentInstance
-
public static boolean getFlag(java.lang.String identifier, java.lang.String flagID)
identifier
- flagID
-
public static boolean getFlag(java.lang.String identifier, java.lang.String flagID, java.lang.String currentInstance) throws java.lang.ArrayIndexOutOfBoundsException
identifier
- flagID
- currentInstance
-
java.lang.ArrayIndexOutOfBoundsException
public static boolean setDependency(java.lang.String identifier, java.lang.String dependent)
-
public static boolean setDependency(java.lang.String identifier, java.lang.String dependent, java.lang.String currentInstance)
identifier
- dependent
- currentInstance
-
public static boolean setDependency(java.lang.String identifier, java.lang.String[] dependent)
identifier
- dependent
-
public static boolean setDependency(java.lang.String identifier, java.lang.String[] dependent, java.lang.String currentInstance)
identifier
- dependent
- currentInstance
-
public static void put(java.lang.String identifier, java.lang.Object data)
- public static void put(java.lang.String identifier, java.lang.Object data, java.lang.String currentInstance) throws databionics.project.NotLockedException
identifier
- data
- currentInstance
-
databionics.project.NotLockedException
public static void put(java.lang.String identifier, java.lang.Object data, java.lang.String[] dependencies)
public static boolean remove(java.lang.String identifier)
identifier
-
public static boolean remove(java.lang.String identifier, java.lang.String currentInstance)
identifier
- currentInstance
-
public static java.lang.Object get(java.lang.String identifier)
identifier
-
public static java.lang.Object get(java.lang.String identifier, java.lang.String currentInstance)
identifier
- currentInstance
-
public static java.lang.Object getCopy(java.lang.String identifier) throws java.lang.CloneNotSupportedException
identifier
-
java.lang.CloneNotSupportedException
public static java.lang.Object getCopy(java.lang.String identifier, java.lang.String currentInstance) throws java.lang.CloneNotSupportedException
identifier
- currentInstance
-
java.lang.CloneNotSupportedException
public static boolean contains(java.lang.String identifier, java.lang.String currentInstance)
identifier
- currentInstance
-
public static boolean contains(java.lang.String identifier)
identifier
-
public static void clear(java.lang.String currentInstance)
public static void clearAll()
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |