Added Data node methods to Configurator
This commit is contained in:
parent
1bc3b03b8d
commit
a8078f8314
2 changed files with 30 additions and 9 deletions
BIN
Zutil.jar
BIN
Zutil.jar
Binary file not shown.
|
|
@ -25,6 +25,7 @@
|
||||||
package zutil.ui;
|
package zutil.ui;
|
||||||
|
|
||||||
import zutil.log.LogUtil;
|
import zutil.log.LogUtil;
|
||||||
|
import zutil.parser.DataNode;
|
||||||
|
|
||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
import java.lang.annotation.Retention;
|
import java.lang.annotation.Retention;
|
||||||
|
|
@ -51,9 +52,9 @@ public class Configurator<T> {
|
||||||
@Retention(RetentionPolicy.RUNTIME) // Make this annotation accessible at runtime via reflection.
|
@Retention(RetentionPolicy.RUNTIME) // Make this annotation accessible at runtime via reflection.
|
||||||
@Target({ElementType.FIELD}) // This annotation can only be applied to class fields.
|
@Target({ElementType.FIELD}) // This annotation can only be applied to class fields.
|
||||||
public static @interface Configurable{
|
public static @interface Configurable{
|
||||||
/* Nice name of this parameter */
|
/** Nice name of this parameter **/
|
||||||
String value();
|
String value();
|
||||||
/* Defines the order the parameters, in ascending order */
|
/** Defines the order the parameters, in ascending order **/
|
||||||
int order() default Integer.MAX_VALUE;
|
int order() default Integer.MAX_VALUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -109,24 +110,46 @@ public class Configurator<T> {
|
||||||
/**
|
/**
|
||||||
* Uses a Map to assign all parameters of the Object
|
* Uses a Map to assign all parameters of the Object
|
||||||
*/
|
*/
|
||||||
public void setConfiguration(Map<String,String> parameters){
|
public void setValues(Map<String,String> parameters){
|
||||||
for(ConfigurationParam param : this.params){
|
for(ConfigurationParam param : this.params){
|
||||||
if(parameters.containsKey(param.getName()))
|
if(parameters.containsKey(param.getName()))
|
||||||
param.setValue(parameters.get(param.getName()));
|
param.setValue(parameters.get(param.getName()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Uses a Map to assign all parameters of the Object.
|
||||||
|
* NOTE: the DataNode must be of type Map
|
||||||
|
*/
|
||||||
|
public void setValues(DataNode node){
|
||||||
|
if(!node.isMap())
|
||||||
|
return;
|
||||||
|
for(ConfigurationParam param : this.params){
|
||||||
|
if(node.get(param.getName()) != null)
|
||||||
|
param.setValue(node.getString(param.getName()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public DataNode getValuesAsNode(){
|
||||||
|
DataNode node = new DataNode(DataNode.DataType.Map);
|
||||||
|
for(ConfigurationParam param : this.params){
|
||||||
|
node.set(param.getName(), param.getString());
|
||||||
|
}
|
||||||
|
return node;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All configuration parameters that was set
|
* All configuration parameters that was set
|
||||||
* for each parameter will be applied to the object.
|
* for each parameter will be applied to the object.
|
||||||
*
|
*
|
||||||
* If the target class implements the ConfigurationActionListener interface
|
* The postConfigurationAction() method will be called on the target object if it implements the ConfigurationActionListener interface.
|
||||||
*/
|
*/
|
||||||
public void applyConfiguration(){
|
public void applyConfiguration(){
|
||||||
StringBuilder strParams = new StringBuilder();
|
StringBuilder strParams = new StringBuilder();
|
||||||
for(ConfigurationParam param : params){
|
for(ConfigurationParam param : params){
|
||||||
try {
|
try {
|
||||||
param.apply();
|
param.apply(obj);
|
||||||
// Logging
|
// Logging
|
||||||
if(logger.isLoggable(Level.FINE)) {
|
if(logger.isLoggable(Level.FINE)) {
|
||||||
strParams.append(param.getName());
|
strParams.append(param.getName());
|
||||||
|
|
@ -157,14 +180,12 @@ public class Configurator<T> {
|
||||||
protected String name;
|
protected String name;
|
||||||
protected String niceName;
|
protected String niceName;
|
||||||
protected ConfigType type;
|
protected ConfigType type;
|
||||||
protected Object obj;
|
|
||||||
protected Object value;
|
protected Object value;
|
||||||
protected int order;
|
protected int order;
|
||||||
|
|
||||||
|
|
||||||
protected ConfigurationParam(Field f, Object o) throws IllegalAccessException {
|
protected ConfigurationParam(Field f, Object obj) throws IllegalAccessException {
|
||||||
field = f;
|
field = f;
|
||||||
obj = o;
|
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
name = field.getName();
|
name = field.getName();
|
||||||
if(obj != null)
|
if(obj != null)
|
||||||
|
|
@ -218,7 +239,7 @@ public class Configurator<T> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void apply() throws IllegalAccessException {
|
protected void apply(Object obj) throws IllegalAccessException {
|
||||||
if(obj != null)
|
if(obj != null)
|
||||||
field.set(obj, value);
|
field.set(obj, value);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue