I wrote this method, can i have your comments for improvements ?

        public static void copyProperties(Object pojo, DynaBean bean)
                        throws IllegalAccessException, 
InvocationTargetException,
                        ClassNotFoundException, InstantiationException {
                DynaProperty[] dynaProperties = 
bean.getDynaClass().getDynaProperties();
                for (DynaProperty d : dynaProperties) {
                        Object value = bean.get(d.getName());
                        Class type = d.getType();
                        Class c;

                        if (d.isIndexed())
                                c = type.getComponentType();
                        else
                                c = type;

                        // c'est un dynaBean
                        if (DynaBean.class.isAssignableFrom(c)) {
                                String pojoName = 
c.getName().replaceFirst("Lazy", "dao.Pojo");
                                if (d.getType().isArray()) {
                                        Object[] objs = (Object[]) 
Array.newInstance(Class.forName(pojoName),Array.getLength(value));
                                        for(int i =0 ; i<objs.length;i++){
                                                objs[i] = 
Class.forName(pojoName).newInstance();
                                                copyProperties(objs[i], 
(DynaBean) Array.get(value,i));
                                        }
                                        BeanUtils.copyProperty(pojo, 
d.getName(), objs);
                                } else {
                                        Object in = 
Class.forName(pojoName).newInstance();
                                        copyProperties(in, (DynaBean) value);
                                        BeanUtils.copyProperty(pojo, 
d.getName(), in);
                                }
                                // copie simple
                        } else {
                                BeanUtils.copyProperty(pojo, d.getName(), 
value);
                        }
                }
        }

Rémi
Le Mardi 19 Juillet 2005 18:27, Dewitte Rémi a écrit :
> Hi !
> I use LazyDynaBean to gather results from the user. In my main
> LazyDynaBean, I've elements which are subclasses of LazyDynaBean and theses
> elements can be indexed (LazyDynaBean[]). I do this because I'm interested
> in lazy features for indexed properties and mapped properties.
>
> Now I'd like to pass this LazyDynaBean to a corresponding POJO.
>
> I tried to create my LazyDynaForm like this :
> public class LazyForm extends LazyValidatorForm {
>
>       public LazyForm(){
>               super((new WrapDynaBean(new PojoForm())));
>       }
> But interesting lazy features are lost...
>
> An another way with BeanUtils.copyProperties();
> For simple elements (String or even String[]), everything is good with
> BeanUtils.copyProperties(pojo,lazybean). The problem is when I want to copy
> a LazyElement to a PojoElement (inside the PojoForm) : how can I handle
> this.
>
> How would you do this ?
>
> Rémi
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to