Changeset 744


Ignore:
Timestamp:
05/04/11 22:58:53 (8 years ago)
Author:
philsmart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • raptor-client/trunk/src/main/java/uk/ac/cardiff/raptor/runtimeutils/ReflectionHelper.java

    r740 r744  
    2626import java.util.ArrayList; 
    2727import java.util.Arrays; 
     28import java.util.HashMap; 
    2829import java.util.List; 
    2930import java.util.jar.JarEntry; 
     
    3435 
    3536import uk.ac.cardiff.model.event.Event; 
     37import uk.ac.cardiff.model.wsmodel.Suggestion; 
    3638 
    3739/** 
     
    121123        } 
    122124 
    123         public static List<String> getFieldsFromEntrySubClasses() { 
    124                 ArrayList<String> allFields = new ArrayList<String>(); 
     125        /** 
     126         * This is terrible code. Finds all fieldnames of all classes that are subclasses of 
     127         * the <code>uk.ac.cardiff.model.event.Event</code> class. 
     128         *  
     129         * @return 
     130         */ 
     131        public static List<Suggestion> getFieldsFromEntrySubClasses() { 
     132                List<Suggestion> allFields = new ArrayList<Suggestion>(); 
    125133                String forPckgName = EVENT_PACKAGE_NAME; 
    126134                String jarFile = getJARFilePath(forPckgName); 
     
    128136                log.debug("jar {}",jarFile); 
    129137                List<String> classes = getClassNamesInJarOrFolder(jarFile, forPckgName); 
    130                 log.debug("{}",Arrays.asList(classes.toArray(new String[0]))); 
     138 
    131139                ArrayList allclasses = new ArrayList(); 
    132140                for (String classname : classes) { 
     
    143151                        } catch (IllegalAccessException iaex) { 
    144152                                // The class is not public 
    145                                 // log.error("{}", iaex); 
    146153                        } 
    147154                } 
    148155                for (Object object : allclasses) { 
    149156                        Field[] fields = object.getClass().getDeclaredFields(); 
    150                         for (Field field : fields) { 
    151                             log.debug("Field {}",field.getName()); 
    152                                 allFields.add(field.getName()); 
     157                        for (Field field : fields) {                         
     158                            //if field is another class in the same package, then expand its methods 
     159                            if (field.getType().getCanonicalName().contains(EVENT_PACKAGE_NAME)){ 
     160                                Object o=null; 
     161                                String fieldName = field.getName(); 
     162                                try { 
     163                                                 o = Class.forName(field.getType().getCanonicalName()).newInstance(); 
     164                                        } catch (Exception e) { 
     165                                        } 
     166                                        if (o!=null){ 
     167                                                Field[] newFields = o.getClass().getDeclaredFields(); 
     168                                                for (Field newField : newFields){ 
     169                                                        //format it for hibernate 
     170                                                        allFields.add(new Suggestion(object.getClass().getCanonicalName(),fieldName+"."+newField.getName())); 
     171                                                } 
     172                                                 
     173                                        } 
     174                            } 
     175                            else{ 
     176                                allFields.add(new Suggestion(object.getClass().getCanonicalName(),field.getName())); 
     177                            } 
    153178                        } 
    154179 
Note: See TracChangeset for help on using the changeset viewer.