Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.drools.guvnor.server.util;
  /*
   * Copyright 2005 JBoss Inc
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
  * 
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
 
 
 
 import java.util.Map;
 
 import  org.drools.guvnor.client.rpc.MetaData;
This utility uses reflection to map from the MetaData DTO to the AssetItem back end class, to adhere to the DRY principle. AssetItem is not a remotable instance, but MetaData is.

Author(s):
Michael Neale
 
 public class MetaDataMapper {
 
     
     private Map writeMappingsForClass = new HashMap();
 
     private Map readMappipngsForClass = new HashMap();
     
     public void copyFromMetaData(MetaData dataObject target) {
         Map writeMappings = getWriteMappingsdata,
                           target );
         
         for ( Iterator iter = writeMappings.entrySet().iterator(); iter.hasNext(); ) {
             Map.Entry e = (Map.Entryiter.next();
             Field f = (Fielde.getKey();
             Method m = (Methode.getValue();
 
             try {
                 m.invoketargetnew Object[] {f.getdata )} ) ;
             } catch ( IllegalArgumentException e1 ) {
                 throw new RulesRepositoryException(e1);
             } catch ( IllegalAccessException e1 ) {
                 throw new RulesRepositoryException(e1);
             } catch ( InvocationTargetException e1 ) {
                 throw new RulesRepositoryException(e1);
             }
 
         }        
         
     }
 
     private Map getWriteMappings(MetaData data,
                                   Object target) {
         if (!this..containsKeytarget.getClass() )) {
             Map writeMappings = loadWriteMappingsdata,
                                                     target.getClass() );
             .puttarget.getClass(), writeMappings );
         }
         return (Map.gettarget.getClass() );
     }
     
     private Map loadWriteMappings(MetaData data,
                                   Class bean) {
         Map mappings = new HashMap();
         Field fields[] = data.getClass().getFields();
         for ( int i = 0; i < fields.lengthi++ ) {
             Field f = fields[i];
             String old = f.getName();
             String name = Character.toUpperCaseold.charAt( 0 ) ) + old.substring( 1 );
 
             name = "update" + name;
 
 
             Method m;
             try {
                 m = bean.getMethodnamenew Class[] {f.getType()} );
                 mappings.putf,
                                   m );
             } catch ( SecurityException e ) {
                 throw new RulesRepositoryException"Unable to map meta data",
                                                     e );
             } catch ( NoSuchMethodException e ) {
                 //ignore
            }
        }
        return mappings;
    }
    public void copyToMetaData(MetaData data,
                               Object source) {
        Map readMappings = getReadMappingsdata,
                         source );
        for ( Iterator iter = readMappings.entrySet().iterator(); iter.hasNext(); ) {
            Map.Entry e = (Map.Entryiter.next();
            Field f = (Fielde.getKey();
            Method m = (Methode.getValue();
            try {
                f.setdatam.invokesourcenull ) );
            } catch ( IllegalArgumentException e1 ) {
                throw new RulesRepositoryException(e1);
            } catch ( IllegalAccessException e1 ) {
                throw new RulesRepositoryException(e1);
            } catch ( InvocationTargetException e1 ) {
                throw new RulesRepositoryException(e1);
            }
        }
    }
    private Map getReadMappings(MetaData data,
                                 Object source) {
        if (!this..containsKeysource.getClass() )) {
            this..putsource.getClass(), loadReadMappingsdata,
                                                                                 source.getClass() ) );
        }
        return (Mapthis..getsource.getClass() );
    }
    private Map loadReadMappings(MetaData data,
                            Class bean) {
        Map mappings = new HashMap();
        Field fields[] = data.getClass().getFields();
        for ( int i = 0; i < fields.lengthi++ ) {
            Field f = fields[i];
            String old = f.getName();
            String name = Character.toUpperCaseold.charAt( 0 ) ) + old.substring( 1 );
            if ( f.getType() == Boolean.class ) {
                name = "is" + name;
            } else {
                name = "get" + name;
            }
            Method m;
            try {
                m = bean.getMethodnamenull );
                if (f.getType() == m.getReturnType())
                {
                    mappings.putf,
                                  m );
                }
            } catch ( SecurityException e ) {
                throw new RulesRepositoryException"Unable to map meta data",
                                                    e );
            } catch ( NoSuchMethodException e ) {
                //ignore
            }
        }
        return mappings;
    }
New to GrepCode? Check out our FAQ X