Author: tchemit Date: 2008-05-13 22:48:44 +0000 (Tue, 13 May 2008) New Revision: 798 Modified: branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/Config.java branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/SimpleConfig.java Log: permettre de choisir les propri?\195?\169t?\195?\169s ?\195?\160 binder r?\195?\169cup?\195?\169ration de la valeur d'une propri?\195?\169t?\195?\169 Modified: branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/Config.java =================================================================== --- branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/Config.java 2008-05-13 12:25:15 UTC (rev 797) +++ branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/Config.java 2008-05-13 22:48:44 UTC (rev 798) @@ -16,6 +16,7 @@ import java.util.EnumMap; import java.util.Set; +import java.util.EnumSet; /** * config contract based on a Enum to obtain properties @@ -26,6 +27,8 @@ EnumMap<E, Object> getProperties(); + Object getProperty(E key); + Set<E> getUniverse(); void setProperties(EnumMap<E, Object> properties); @@ -34,6 +37,11 @@ void copyFrom(Object src); + void copyFrom(Object src, EnumSet<E> keys); + void copyTo(Object dst); + void copyTo(Object dst, EnumSet<E> keys); + + } \ No newline at end of file Modified: branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/SimpleConfig.java =================================================================== --- branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/SimpleConfig.java 2008-05-13 12:25:15 UTC (rev 797) +++ branches/lutinutil-sans-vcs/lutinutil/src/java/org/codelutin/util/config/SimpleConfig.java 2008-05-13 22:48:44 UTC (rev 798) @@ -18,10 +18,9 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import java.lang.reflect.InvocationTargetException; import java.util.EnumMap; +import java.util.EnumSet; import java.util.Map; -import java.util.Set; /** * simple config implementation based on a Enum to obtain properties @@ -34,11 +33,14 @@ protected EnumMap<E, Object> properties; - protected final Set<E> universe; + protected final EnumSet<E> universe; + protected final Class<E> klass; + public SimpleConfig(Class<E> klass) { + this.klass = klass; this.properties = new EnumMap<E, Object>(klass); - this.universe = java.util.Collections.unmodifiableSet(java.util.EnumSet.allOf(klass)); + this.universe = java.util.EnumSet.allOf(klass); } public SimpleConfig(Class<E> klass, EnumMap<E, Object> properties) { @@ -50,7 +52,11 @@ return properties.clone(); } - public Set<E> getUniverse() { + public Object getProperty(E key) { + return properties.get(key); + } + + public EnumSet<E> getUniverse() { return universe; } @@ -69,36 +75,38 @@ } } + @SuppressWarnings({"unchecked"}) public void copyFrom(Object src) { - for (E key : universe) { + copyFrom(src, getUniverse()); + } + + public void copyFrom(Object src, EnumSet<E> keys) { + for (E key : keys) { Object value = null; try { value = BeanUtils.getProperty(src, key.name()); setProperty(key, value); - } catch (IllegalAccessException e) { + } catch (Exception e) { //TODO log.warn("could not retreave property <" + key + ":" + value + "> on object " + src, e); - } catch (InvocationTargetException e) { - //TODO - log.warn("could not retreave property <" + key + ":" + value + "> on object " + src, e); - } catch (NoSuchMethodException e) { - //TODO - log.warn("could not retreave property <" + key + ":" + value + "> on object " + src, e); } } } public void copyTo(Object dst) { - for (E key : universe) { + copyTo(dst, getUniverse()); + } + + + public void copyTo(Object dst, EnumSet<E> keys) { + for (E key : keys) { Object value = properties.get(key); try { + log.info("save " + key); BeanUtils.setProperty(dst, key.name(), value); - } catch (IllegalAccessException e) { + } catch (Exception e) { //TODO log.warn("could not set property <" + key + ":" + value + "> to object " + dst, e); - } catch (InvocationTargetException e) { - //TODO - log.warn("could not set property <" + key + ":" + value + "> to object " + dst, e); } } } @@ -115,4 +123,5 @@ } return super.toString() + '<' + sb.toString().substring(2) + '>'; } + }