This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository topia. See https://gitlab.nuiton.org/nuiton/topia.git commit 6f5786a687e0d05f3bf80f8945453d70f98e78a7 Author: Brendan Le Ny <bleny@codelutin.com> Date: Wed Aug 8 10:33:30 2018 +0200 Allow passing some properties to initialiaze new entities via TopiaDao#newInstance --- .../org/nuiton/topia/persistence/TopiaDao.java | 14 +++++- .../persistence/internal/AbstractTopiaDao.java | 52 +++++++++++++--------- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java index 6cbba4a9..736cec71 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/TopiaDao.java @@ -68,11 +68,23 @@ public interface TopiaDao<E extends TopiaEntity> extends Iterable<E> { void setBatchSize(int batchSize); /** - * @return Create a new instance of managed entity <strong>not persisted</strong>. + * @return instantiate of managed entity <strong>not persisted</strong>. * @since 2.3.1 */ E newInstance(); + /** + * @return instantiate of managed entity <strong>not persisted</strong>. + * @since 2.6 + */ + E newInstance(Map<String, Object> properties); + + /** + * @return instantiate of managed entity <strong>not persisted</strong>. + * @since 2.6 + */ + E newInstance(String propertyName, Object propertyValue, Object... otherPropertyNamesAndValues); + /** * Creates a new pager initialized for the first page of all data of the dao. * diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java index 2a95e134..cf52297c 100644 --- a/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/internal/AbstractTopiaDao.java @@ -207,6 +207,36 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa } } + @Override + public E newInstance(Map<String, Object> properties) { + E result = newInstance(); + + try { + for (Map.Entry<String, Object> e : properties.entrySet()) { + String propertyName = e.getKey(); + Object value = e.getValue(); + PropertyUtils.setProperty(result, propertyName, value); + } + } catch (IllegalAccessException eee) { + throw new IllegalArgumentException( + "Can't put properties on new Object", eee); + } catch (InvocationTargetException eee) { + throw new IllegalArgumentException( + "Can't put properties on new Object", eee); + } catch (NoSuchMethodException eee) { + throw new IllegalArgumentException( + "Can't put properties on new Object", eee); + } + return result; + } + + @Override + public E newInstance(String propertyName, Object propertyValue, Object... otherPropertyNamesAndValues) { + Map<String, Object> properties = + TopiaUtil.convertPropertiesArrayToMap(propertyName, propertyValue, otherPropertyNamesAndValues); + return newInstance(properties); + } + @Override public PaginationResult<E> initPagination(int pageSize) { PaginationResult<E> result = initPagination(newFromClause(), new HashMap<String, Object>(), pageSize); @@ -304,28 +334,8 @@ public abstract class AbstractTopiaDao<E extends TopiaEntity> implements TopiaDa @Override public E create(Map<String, Object> properties) { - - E result = newInstance(); - - try { - for (Map.Entry<String, Object> e : properties.entrySet()) { - String propertyName = e.getKey(); - Object value = e.getValue(); - PropertyUtils.setProperty(result, propertyName, value); - } - } catch (IllegalAccessException eee) { - throw new IllegalArgumentException( - "Can't put properties on new Object", eee); - } catch (InvocationTargetException eee) { - throw new IllegalArgumentException( - "Can't put properties on new Object", eee); - } catch (NoSuchMethodException eee) { - throw new IllegalArgumentException( - "Can't put properties on new Object", eee); - } - + E result = newInstance(properties); create(result); - return result; } -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.