data4impact/apps/data4impact-importer/src/main/java/eu/data4impact/ObjectMerger.java

24 lines
658 B
Java

package eu.data4impact;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
public class ObjectMerger {
@SuppressWarnings("unchecked")
public static <T> T mergeObjects(final T first, final T second) throws IllegalAccessException, InstantiationException {
final Class<?> clazz = first.getClass();
final Field[] fields = clazz.getDeclaredFields();
final T res = (T) clazz.newInstance();
for (final Field f : fields) {
if (!Modifier.isFinal(f.getModifiers())) {
f.setAccessible(true);
final Object v1 = f.get(first);
final Object v2 = f.get(second);
f.set(res, (v2 != null ? v2 : v1));
}
}
return res;
}
}