/** * Gets the column value map. * * @param entity the entity * @param mapping the mapping * @return the column value map * @throws ClassNotFoundException the class not found exception * @throws SQLException the sQL exception * @throws InstantiationException the instantiation exception * @throws IllegalAccessException the illegal access exception * @throws InvocationTargetException the invocation target exception * @throws NoSuchMethodException the no such method exception */ private Map<String, ColumnValue> getColumnValueMap(Object entity, ObjectMapping mapping) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Map<String, ColumnValue> valueMap = new HashMap<String, ColumnValue>(); String columnName = null; Object value = null; ColumnValue columnValue = null; Collection<PropertyMapping> c = mapping.getPropertyMap().values(); for (PropertyMapping pm : c) { if (pm.isComplexType()) { continue; } columnName = pm.getColumnName(); if (valueMap.containsKey(columnName)) { continue; } if (!filter(pm)) { continue; } if (entity == null) { value = null; } else { value = PropertyUtils.getProperty(entity, pm.getPropertyName()); } columnValue = new ColumnValue(); columnValue.setColumnName(columnName); columnValue.setColumnvalue(value); columnValue.setPropertyMapping(pm); if (pm.isPrimaryKey()) { columnValue.setPrimaryKey(true); } if (filter(columnValue)) { valueMap.put(columnName, columnValue); } } return valueMap; }
/** * Gets the column value map recursive. * * @param entity the entity * @param mapping the mapping * @return the column value map recursive * @throws ClassNotFoundException the class not found exception * @throws SQLException the sQL exception * @throws InstantiationException the instantiation exception * @throws IllegalAccessException the illegal access exception * @throws InvocationTargetException the invocation target exception * @throws NoSuchMethodException the no such method exception */ public Map<String, ColumnValue> getColumnValueMapRecursive(Object entity, ObjectMapping mapping) throws ClassNotFoundException, SQLException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException { Map<String, ColumnValue> parentMap = getColumnValueMap(entity, mapping); Map<String, ColumnValue> childMap = null; List<PropertyMapping> complexPropertyList = mapping.getComplexPropertyMappingList(); ObjectMapping childMapping = null; Object object = null; for (PropertyMapping pm : complexPropertyList) { if (!filter(pm)) { continue; } if (entity == null) { object = null; } else { object = PropertyUtils.getProperty(entity, pm.getPropertyName()); } childMapping = EntityMappingFactory.getObjectMapping(pm.getPropertyClass()); childMap = getColumnValueMapRecursive(object, childMapping); for (Entry<String, ColumnValue> entry : childMap.entrySet()) { if (pm.isPrimaryKey()) { entry.getValue().setPrimaryKey(true); } if (!parentMap.containsKey(entry.getKey())) { parentMap.put(entry.getKey(), entry.getValue()); } } } return parentMap; }