+ \r
+ \r
+ @Override\r
+ public Set<CdmBase> getReferencingObjects(CdmBase referencedCdmBase){\r
+ return this.genericDao.getReferencingObjects(referencedCdmBase);\r
+ } \r
+// try {\r
+// Set<Class<? extends CdmBase>> allCdmClasses = genericDao.getAllCdmClasses(false); //findAllCdmClasses();\r
+// \r
+// referencedCdmBase = (CdmBase)HibernateProxyHelper.deproxy(referencedCdmBase);\r
+// Class referencedClass = referencedCdmBase.getClass();\r
+// Set<CdmBase> result = new HashSet<CdmBase>();\r
+// logger.debug("Referenced Class: " + referencedClass.getName());\r
+// \r
+// for (Class<? extends CdmBase> cdmClass : allCdmClasses){\r
+// Set<Field> fields = getFields(cdmClass);\r
+// for (Field field: fields){\r
+// Class<?> type = field.getType();\r
+// //class\r
+// if (! type.isInterface()){\r
+// if (referencedClass.isAssignableFrom(type)|| \r
+// type.isAssignableFrom(referencedClass) && CdmBase.class.isAssignableFrom(type)){\r
+// handleSingleClass(referencedClass, type, field, cdmClass, result, referencedCdmBase, false);\r
+// }\r
+// //interface\r
+// }else if (type.isAssignableFrom(referencedClass)){\r
+// handleSingleClass(referencedClass, type, field, cdmClass, result, referencedCdmBase, false);\r
+// }else if (Collection.class.isAssignableFrom(type)){\r
+// \r
+// if (checkIsSetOfType(field, referencedClass, type) == true){\r
+// handleSingleClass(referencedClass, type, field, cdmClass, result, referencedCdmBase, true); \r
+// }\r
+// }\r
+//// Class[] interfaces = referencedClass.getInterfaces();\r
+//// for (Class interfaze: interfaces){\r
+//// if (interfaze == type){\r
+////// if(interfaze.isAssignableFrom(returnType)){\r
+//// handleSingleClass(interfaze, type, field, cdmClass, result, referencedCdmBase);\r
+//// }\r
+//// }\r
+// } \r
+// }\r
+// return result;\r
+// } catch (Exception e) {\r
+// e.printStackTrace();\r
+// throw new RuntimeException(e);\r
+// }\r
+// \r
+// }\r
+// \r
+// private boolean checkIsSetOfType(Field field, Class referencedClass, Class<?> type){\r
+// Type genericType = (ParameterizedTypeImpl)field.getGenericType();\r
+// if (genericType instanceof ParameterizedTypeImpl){\r
+// ParameterizedTypeImpl paraType = (ParameterizedTypeImpl)genericType;\r
+// paraType.getRawType();\r
+// Type[] arguments = paraType.getActualTypeArguments();\r
+// //logger.debug(arguments.length);\r
+// if (arguments.length == 1){\r
+// Class collectionClass;\r
+// try {\r
+// if (arguments[0] instanceof Class){\r
+// collectionClass = (Class)arguments[0];\r
+// }else if(arguments[0] instanceof TypeVariableImpl){\r
+// TypeVariableImpl typeVariable = (TypeVariableImpl)arguments[0];\r
+// GenericDeclaration genericDeclaration = typeVariable.getGenericDeclaration();\r
+// collectionClass = (Class)genericDeclaration;\r
+// }else{\r
+// logger.warn("Unknown Type");\r
+// return false;\r
+// }\r
+// if (CdmBase.class.isAssignableFrom(collectionClass) && collectionClass.isAssignableFrom(referencedClass) ){\r
+// return true;\r
+// }\r
+// } catch (Exception e) {\r
+// logger.warn(e.getMessage());\r
+// }\r
+// }else{\r
+// logger.warn("Length of arguments <> 1");\r
+// }\r
+// }else{\r
+// logger.warn("Not a generic type of type ParameterizedTypeImpl");\r
+// }\r
+// return false;\r
+// }\r
+// \r
+// \r
+// \r
+// \r
+// private boolean handleSingleClass(Class itemClass, Class type, Field field, Class cdmClass, Set<CdmBase> result,CdmBase value, boolean isCollection){\r
+// if (! Modifier.isStatic(field.getModifiers())){\r
+// String methodName = StringUtils.rightPad(field.getName(), 30);\r
+// String className = StringUtils.rightPad(cdmClass.getSimpleName(), 30);\r
+// String returnTypeName = StringUtils.rightPad(type.getSimpleName(), 30);\r
+// \r
+// logger.debug(methodName + "\t\t" + className + "\t\t" + returnTypeName);\r
+//// result_old.add(method);\r
+// result.addAll(getCdmBasesByFieldAndClass(field, itemClass, cdmClass, value, isCollection));\r
+// }\r
+// return true;\r
+// }\r
+// \r
+// private Set<Field> getFields(Class clazz){\r
+// Set<Field> result = new HashSet<Field>();\r
+// for (Field field: clazz.getDeclaredFields()){\r
+// if (!Modifier.isStatic(field.getModifiers())){\r
+// result.add(field); \r
+// }\r
+// }\r
+// Class superclass = clazz.getSuperclass();\r
+// if (CdmBase.class.isAssignableFrom(superclass)){\r
+// result.addAll(getFields(superclass));\r
+// }\r
+// return result;\r
+// }\r
+// \r
+// private Set<CdmBase> getCdmBasesByFieldAndClass(Field field, Class itemClass, Class otherClazz, CdmBase item, boolean isCollection){\r
+// Set<CdmBase> result = new HashSet<CdmBase>();\r
+// if (isCollection){\r
+// result.addAll(genericDao.getCdmBasesWithItemInCollection(itemClass, otherClazz, field.getName(), item));\r
+// }else{\r
+// result.addAll(genericDao.getCdmBasesByFieldAndClass(otherClazz, field.getName(), item));\r
+// }\r
+// return result;\r
+// }\r
+ \r
+ @Override\r
+ public List getHqlResult(String hqlQuery){\r
+ return genericDao.getHqlResult(hqlQuery);\r
+ }\r