if ( pkg == null ) return new ArrayList<FactMetaModel>();
List<TypeDeclarationDescr> types = pkg.getTypeDeclarations();
List<FactMetaModel> list = new ArrayList<FactMetaModel>( types.size() );
for ( TypeDeclarationDescr td : types ) {
FactMetaModel mm = new FactMetaModel();
mm.setName( td.getTypeName() );
mm.setSuperType( td.getSuperTypeName() );
Map<String, TypeFieldDescr> fields = td.getFields();
for ( Iterator<Map.Entry<String, TypeFieldDescr>> iterator = fields.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, TypeFieldDescr> en = iterator.next();
String fieldName = en.getKey();
TypeFieldDescr descr = en.getValue();
FieldMetaModel fm = new FieldMetaModel( fieldName,
descr.getPattern().getObjectType() );
mm.getFields().add( fm );
}
Map<String, AnnotationDescr> annotations = td.getAnnotations();
for ( Iterator<Map.Entry<String, AnnotationDescr>> iterator = annotations.entrySet().iterator(); iterator.hasNext(); ) {
Map.Entry<String, AnnotationDescr> en = iterator.next();
String annotationName = en.getKey();
AnnotationDescr descr = en.getValue();
Map<String, String> values = descr.getValues();
AnnotationMetaModel am = new AnnotationMetaModel( annotationName,
values );
mm.getAnnotations().add( am );
}
list.add(mm);
}
return list;