branch feature/7739 updated (bad8e55 -> 20af7e1)
This is an automated email from the git hooks/post-receive script. New change to branch feature/7739 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git from bad8e55 Séparation en deux la préparation des requètes sql à jouer et leur application (See #7739) new 20af7e1 Revue de la gestion des valeurs primitives The 1 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit 20af7e1a45e4dfb8379a28a4d7a787a852368045 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Jul 18 16:30:31 2016 +0200 Revue de la gestion des valeurs primitives Summary of changes: .../ui/admin/synchronize/SynchronizeUIHandler.java | 1 - .../synchro/InsertSqlStatementGenerator.java | 43 ++++++++++++++++++++++ .../synchro/UpdateSqlStatementGenerator.java | 42 +++++++++++++++++++++ .../persistence/metadata/TopiaMetadataEntity.java | 28 ++++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch feature/7739 in repository tutti. See https://gitlab.nuiton.org/codelutin/tutti.git commit 20af7e1a45e4dfb8379a28a4d7a787a852368045 Author: Tony CHEMIT <chemit@codelutin.com> Date: Mon Jul 18 16:30:31 2016 +0200 Revue de la gestion des valeurs primitives --- .../ui/admin/synchronize/SynchronizeUIHandler.java | 1 - .../synchro/InsertSqlStatementGenerator.java | 43 ++++++++++++++++++++++ .../synchro/UpdateSqlStatementGenerator.java | 42 +++++++++++++++++++++ .../persistence/metadata/TopiaMetadataEntity.java | 28 ++++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) diff --git a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java index d763900..28aa641 100644 --- a/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java +++ b/observe-application-swing/src/main/java/fr/ird/observe/ui/admin/synchronize/SynchronizeUIHandler.java @@ -334,7 +334,6 @@ public class SynchronizeUIHandler extends AdminTabUIHandler { } - getModel().getSaveLocalModel().setLocalSourceNeedSave(true); getModel().getSaveLocalModel().addStepForSave(AdminStep.SYNCHRONIZE); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/InsertSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/InsertSqlStatementGenerator.java index 760e993..c63641f 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/InsertSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/InsertSqlStatementGenerator.java @@ -40,6 +40,10 @@ public class InsertSqlStatementGenerator<R extends ReferentialDto> { private final String[] simplePropertyNames; private final String[] manyToOneAssociationNames; private final Set<ManyToManyAssociationStruct> manyToManyAssociations; + private final Set<String> primitiveBooleanPropertyNames; + private final Set<String> primitiveIntegerPropertyNames; + private final Set<String> primitiveLongPropertyNames; + private final Set<String> primitiveFloatPropertyNames; /** * Pour décrire une association nm. @@ -72,6 +76,10 @@ public class InsertSqlStatementGenerator<R extends ReferentialDto> { this.tableName = metadataEntity.getDbTableName(); Set<String> propertyNamesSet = metadataEntity.getProperties().keySet(); this.simplePropertyNames = propertyNamesSet.toArray(new String[propertyNamesSet.size()]); + this.primitiveBooleanPropertyNames = metadataEntity.getPrimitivePropertyNames("boolean"); + this.primitiveIntegerPropertyNames = metadataEntity.getPrimitivePropertyNames("int"); + this.primitiveLongPropertyNames = metadataEntity.getPrimitivePropertyNames("long"); + this.primitiveFloatPropertyNames = metadataEntity.getPrimitivePropertyNames("float"); Set<String> manyToOneAssociationNamesSet = metadataEntity.getManyToOneAssociations().keySet(); this.manyToOneAssociationNames = manyToOneAssociationNamesSet.toArray(new String[manyToOneAssociationNamesSet.size()]); @@ -99,6 +107,25 @@ public class InsertSqlStatementGenerator<R extends ReferentialDto> { Map<String, Object> simpleParameters = binder.obtainProperties(referentialDto, true, true, simplePropertyNames); for (String simplePropertyName : simplePropertyNames) { Object parameterValue = simpleParameters.get(simplePropertyName); + + if (primitiveBooleanPropertyNames.contains(simplePropertyName)) { + addPrimitiveBooleanParameter((Boolean) parameterValue, parameters); + continue; + } + if (primitiveIntegerPropertyNames.contains(simplePropertyName)) { + addPrimitiveIntegerParameter((Integer) parameterValue, parameters); + continue; + } + if (primitiveLongPropertyNames.contains(simplePropertyName)) { + addPrimitiveLongParameter((Long) parameterValue, parameters); + continue; + } + if (primitiveFloatPropertyNames.contains(simplePropertyName)) { + addPrimitiveFloatParameter((Float) parameterValue, parameters); + continue; + } + + if (parameterValue == null) { addNullParameter(parameters); continue; @@ -213,6 +240,22 @@ public class InsertSqlStatementGenerator<R extends ReferentialDto> { parameters.add("'" + parameter + "'"); } + private void addPrimitiveBooleanParameter(Boolean parameter, List<String> parameters) { + parameters.add("" + (parameter != null && parameter)); + } + + private void addPrimitiveIntegerParameter(Integer parameter, List<String> parameters) { + parameters.add("" + (parameter == null ? 0 : parameter)); + } + + private void addPrimitiveLongParameter(Long parameter, List<String> parameters) { + parameters.add("" + (parameter == null ? 0 : parameter)); + } + + private void addPrimitiveFloatParameter(Float parameter, List<String> parameters) { + parameters.add("" + (parameter == null ? 0f : parameter)); + } + private void addTimestampParameter(Date parameter, List<String> parameters) { parameters.add("'" + parameter + "'::timestamp"); } diff --git a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UpdateSqlStatementGenerator.java b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UpdateSqlStatementGenerator.java index 513a5a2..e59f461 100644 --- a/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UpdateSqlStatementGenerator.java +++ b/observe-services-topia/src/main/java/fr/ird/observe/services/service/actions/synchro/UpdateSqlStatementGenerator.java @@ -40,6 +40,10 @@ public class UpdateSqlStatementGenerator<R extends ReferentialDto> { private final String[] simplePropertyNames; private final String[] manyToOneAssociationNames; private final Set<ManyToManyAssociationStruct> manyToManyAssociations; + private final Set<String> primitiveBooleanPropertyNames; + private final Set<String> primitiveIntegerPropertyNames; + private final Set<String> primitiveLongPropertyNames; + private final Set<String> primitiveFloatPropertyNames; /** * Pour décrire une association nm. @@ -73,6 +77,10 @@ public class UpdateSqlStatementGenerator<R extends ReferentialDto> { Set<String> simplePropertyNamesSet = metadataEntity.getProperties().keySet(); this.simplePropertyNames = simplePropertyNamesSet.toArray(new String[simplePropertyNamesSet.size()]); + this.primitiveBooleanPropertyNames = metadataEntity.getPrimitivePropertyNames("boolean"); + this.primitiveIntegerPropertyNames = metadataEntity.getPrimitivePropertyNames("int"); + this.primitiveLongPropertyNames = metadataEntity.getPrimitivePropertyNames("long"); + this.primitiveFloatPropertyNames = metadataEntity.getPrimitivePropertyNames("float"); Set<String> manyToOneAssociationNamesSet = metadataEntity.getManyToOneAssociations().keySet(); this.manyToOneAssociationNames = manyToOneAssociationNamesSet.toArray(new String[manyToOneAssociationNamesSet.size()]); @@ -106,6 +114,23 @@ public class UpdateSqlStatementGenerator<R extends ReferentialDto> { String columnName = columnNames.get(simplePropertyName); Object simplePropertyValue = entry.getValue(); + if (primitiveBooleanPropertyNames.contains(simplePropertyName)) { + addPrimitiveBooleanParameter(columnName, (Boolean) simplePropertyValue, parameters); + continue; + } + if (primitiveIntegerPropertyNames.contains(simplePropertyName)) { + addPrimitiveIntegerParameter(columnName, (Integer) simplePropertyValue, parameters); + continue; + } + if (primitiveFloatPropertyNames.contains(simplePropertyName)) { + addPrimitiveFloatParameter(columnName, (Float) simplePropertyValue, parameters); + continue; + } + if (primitiveLongPropertyNames.contains(simplePropertyName)) { + addPrimitiveLongParameter(columnName, (Long) simplePropertyValue, parameters); + continue; + } + if (simplePropertyValue == null) { addNullParameter(columnName, parameters); continue; @@ -122,6 +147,7 @@ public class UpdateSqlStatementGenerator<R extends ReferentialDto> { addEnumParameter(columnName, (Enum) simplePropertyValue, parameters); continue; } + addOtherTypeParameter(columnName, simplePropertyValue, parameters); } @@ -269,4 +295,20 @@ public class UpdateSqlStatementGenerator<R extends ReferentialDto> { private void addParameter0(String columnName, String value, StringBuilder parameters) { parameters.append(", ").append(columnName).append(" = ").append(value); } + + private void addPrimitiveBooleanParameter(String columnName, Boolean parameter, StringBuilder parameters) { + addParameter0(columnName, "" + (parameter != null && parameter), parameters); + } + + private void addPrimitiveIntegerParameter(String columnName, Integer parameter, StringBuilder parameters) { + addParameter0(columnName, "" + (parameter == null ? 0 : parameter), parameters); + } + + private void addPrimitiveLongParameter(String columnName, Long parameter, StringBuilder parameters) { + addParameter0(columnName, "" + (parameter == null ? 0 : parameter), parameters); + } + + private void addPrimitiveFloatParameter(String columnName, Float parameter, StringBuilder parameters) { + addParameter0(columnName, "" + (parameter == null ? 0f : parameter), parameters); + } } diff --git a/observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataEntity.java b/observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataEntity.java index 22b89e9..e952710 100644 --- a/observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataEntity.java +++ b/observe-topia-extension/src/main/java/org/nuiton/topia/persistence/metadata/TopiaMetadataEntity.java @@ -23,12 +23,15 @@ package org.nuiton.topia.persistence.metadata; */ import com.google.common.base.MoreObjects; +import com.google.common.collect.ImmutableSet; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.util.LinkedHashMap; +import java.util.LinkedHashSet; import java.util.Map; import java.util.Objects; +import java.util.Set; /** * Created on 03/01/16. @@ -157,6 +160,31 @@ public class TopiaMetadataEntity { return properties; } + public static final Set<String> PRIMITIVE_TYPES = ImmutableSet.of("byte", "boolean", "char", "int", "long", "float", "double"); + + public Set<String> getPrimitivePropertyNames() { + Set<String> names = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : properties.entrySet()) { + String propertyType = entry.getValue(); + if (PRIMITIVE_TYPES.contains(propertyType)) { + names.add(entry.getKey()); + } + } + return names; + } + + public Set<String> getPrimitivePropertyNames(String primitiveType) { + Set<String> names = new LinkedHashSet<>(); + for (Map.Entry<String, String> entry : properties.entrySet()) { + String propertyType = entry.getValue(); + if (primitiveType.equals(propertyType)) { + names.add(entry.getKey()); + } + } + return names; + } + + public Map<String, String> getDbColumnsName() { return dbColumnsName; } -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm