ref #2717 allow notNull for SingleAttribute mappers (needed for required fields in...
authorAndreas Müller <a.mueller@bgbm.org>
Thu, 10 Oct 2019 10:00:18 +0000 (12:00 +0200)
committerAndreas Müller <a.mueller@bgbm.org>
Thu, 10 Oct 2019 10:00:18 +0000 (12:00 +0200)
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbBooleanMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbDoiMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbFixedIntegerMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbFixedStringMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbLastActionMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbObjectMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbSingleAttributeExportMapperBase.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbStringMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbTimePeriodMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbUriMapper.java
cdmlib-io/src/main/java/eu/etaxonomy/cdm/io/common/mapping/out/DbUserMapper.java

index aea3f8447d6cfe1bc0a23d3cc77fd82b48377e7f..68ae6ff9a5354e05dd66b850c1ba4d88b508382c 100644 (file)
@@ -56,7 +56,7 @@ public class DbBooleanMapper
      * @param obligatory if the source attribute is obligatory, but value may be <code>null</code>
      */
        private DbBooleanMapper(String cdmAttributeString, String dbAttributeString, Boolean defaultValue, Boolean obligatory) {
-               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
        }
 
        @Override
index 1f8379bca4b4840e7c6e84fa1eafd682208b8fe4..24c9cf46d8ad9cf11eb6ee2cdbc0cbbe9d90b181 100644 (file)
@@ -61,7 +61,7 @@ public class DbDoiMapper
      * @param obligatory if the source attribute is obligatory, but value may be <code>null</code>
      */
     private DbDoiMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
-        super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+        super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
     }
 
     @Override
index 3c44e301986c73bf14e5a5b875998a69d284fe55..edf47d635c64f74a781c7b726f644728c876dbed 100644 (file)
@@ -37,7 +37,7 @@ public class DbFixedIntegerMapper
        }
 
        private DbFixedIntegerMapper(Integer fixInteger, String dbAttributeString) {
-               super(null, dbAttributeString, fixInteger, true);
+               super(null, dbAttributeString, fixInteger, true, false);
                this.fixInteger = fixInteger;
        }
 
index bda5fbf32c3c9d28868cbeece565a21d2bb4bc5d..61d95f5e301aa733f1036ffbc1ee507d2421635f 100644 (file)
@@ -35,7 +35,7 @@ public class DbFixedStringMapper
        }
 
        private DbFixedStringMapper(String fixString, String dbAttributeString) {
-               super(null, dbAttributeString, fixString, true);
+               super(null, dbAttributeString, fixString, true, false);
                this.fixString = fixString;
        }
 
index 262a0db32450d8f33aaaee7485ad5f9d07d36761..55c873d38ebb3828070f598596e4079171995c00 100644 (file)
@@ -42,7 +42,7 @@ public class DbLastActionMapper
        }
 
        private DbLastActionMapper(String dbAttributeString, String defaultValue, boolean isActionType) {
-               super("updated, created", dbAttributeString, defaultValue, false);
+               super("updated, created", dbAttributeString, defaultValue, false, false);
                this.isActionType = isActionType;
        }
 
index a00ae21f3e68c2fd990ffb63b42cb579db013204..737291fc935a4e9c899bd6974298060d612f3d1f 100644 (file)
@@ -33,14 +33,18 @@ public class DbObjectMapper
        boolean isCache;
 
        public static DbObjectMapper NewInstance(String cdmAttributeString, String dbAttributeString){
-               return new DbObjectMapper(cdmAttributeString, dbAttributeString, null, false);
+               return new DbObjectMapper(cdmAttributeString, dbAttributeString, null, false, false);
        }
 
+    public static DbObjectMapper NewNotNullInstance(String cdmAttributeString, String dbAttributeString){
+        return new DbObjectMapper(cdmAttributeString, dbAttributeString, null, false, true);
+    }
+
        public static DbObjectMapper NewInstance(String cdmAttributeString, String dbAttributeString, boolean isCache){
-               return new DbObjectMapper(cdmAttributeString, dbAttributeString, null, isCache);
+               return new DbObjectMapper(cdmAttributeString, dbAttributeString, null, isCache, false);
        }
 
-       protected DbObjectMapper(String cdmAttributeString, String dbAttributeString, Object defaultValue, boolean isCache) {
+       protected DbObjectMapper(String cdmAttributeString, String dbAttributeString, Object defaultValue, boolean isCache, boolean notNull) {
                super(cdmAttributeString, dbAttributeString, defaultValue);
                this.isCache = isCache;
        }
index 92b74b219435521f38933e74a96eb9ee6aed1096..42ad8e0095e81d49f139498c62f6d60a8f3c4dbc 100644 (file)
@@ -36,16 +36,25 @@ public abstract class DbSingleAttributeExportMapperBase<STATE extends DbExportSt
 \r
        protected DbExportMapperBase<STATE> exportMapperHelper = new DbExportMapperBase<>();\r
        private Integer precision = null;\r
+       //if the source attribute (not the value) is obligatory, currently results in error logging only\r
        protected boolean obligatory = true;\r
+       protected boolean notNull = false;\r
 \r
        protected DbSingleAttributeExportMapperBase(String cdmAttributeString, String dbAttributString, Object defaultValue) {\r
                super(cdmAttributeString, dbAttributString, defaultValue);\r
        }\r
 \r
-       protected DbSingleAttributeExportMapperBase(String cdmAttributeString, String dbAttributString, Object defaultValue, boolean obligatory) {\r
-               super(cdmAttributeString, dbAttributString, defaultValue);\r
-               this.obligatory = obligatory;\r
-       }\r
+       /**\r
+     * @param cdmAttributeString source attribute (CDM)\r
+     * @param dbAttributString target attribute (export DB)\r
+     * @param defaultValue default value if source value is <code>null</code>\r
+     * @param obligatory if the source attribute is obligatory, but value may be <code>null</code>\r
+     */\r
+    protected DbSingleAttributeExportMapperBase(String cdmAttributeString, String dbAttributString, Object defaultValue, boolean obligatory, boolean notNull) {\r
+        super(cdmAttributeString, dbAttributString, defaultValue);\r
+        this.notNull = notNull;\r
+        this.obligatory = obligatory;\r
+    }\r
 \r
        @Override\r
     public void initialize(PreparedStatement stmt, IndexCounter index, STATE state, String tableName) {\r
@@ -72,7 +81,12 @@ public abstract class DbSingleAttributeExportMapperBase<STATE extends DbExportSt
                                value = defaultValue;\r
                        }\r
                        if (value == null){\r
-                               getPreparedStatement().setNull(getIndex(), sqlType);\r
+                           if (notNull){\r
+                               logger.error("Value for '"+this.getSourceAttribute()+"' is null but a value is required. Object: " + cdmBase.toString());\r
+                               return false;\r
+                           }else{\r
+                               getPreparedStatement().setNull(getIndex(), sqlType);\r
+                           }\r
                        }else{\r
                                if (sqlType == Types.INTEGER){\r
                                        try{\r
index d32e89630b6a770c7d165ebad3b54c68f24954dd..868bdbc86382282344dfb6d1ef8fd8a3fdbff995 100644 (file)
@@ -66,7 +66,7 @@ public class DbStringMapper
        }
 
        private DbStringMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
-               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
        }
 
        @Override
index 0c158110b2c51a0319bacc8f9782255c6ca7ca3b..ee71a837d4e16007c09792193fd3132306409362 100644 (file)
@@ -50,7 +50,7 @@ public class DbTimePeriodMapper extends DbSingleAttributeExportMapperBase<DbExpo
      * @param obligatory if the source attribute is obligatory, but value may be <code>null</code>
      */
        private DbTimePeriodMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
-               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
        }
 
        @Override
index 8b037a05807770148633a6695ba5ea25f13558e8..4c3cc22f7e2351a555a1d5cee243aeeb9030b721 100644 (file)
@@ -45,7 +45,7 @@ public class DbUriMapper
        }
 
        private DbUriMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
-               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
        }
 
        @Override
index c5291afe0a79a0a1c0e54713c84ba5783eee90c5..4795c1caf64289efc21b5c7491617c71d4ef583d 100644 (file)
@@ -44,7 +44,7 @@ public class DbUserMapper
        }
 
        private DbUserMapper(String cdmAttributeString, String dbAttributeString, String defaultValue, boolean obligatory) {
-               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory);
+               super(cdmAttributeString, dbAttributeString, defaultValue, obligatory, false);
        }
 
        @Override