extensions/net.sf.basedb.reggie/trunk/src/net/sf/basedb/reggie/plugins/NotNullMapper.java

Code
Comments
Other
Rev Date Author Line
5779 10 Dec 19 nicklas 1 package net.sf.basedb.reggie.plugins;
5779 10 Dec 19 nicklas 2
5779 10 Dec 19 nicklas 3 import java.util.Date;
5779 10 Dec 19 nicklas 4
5779 10 Dec 19 nicklas 5 import net.sf.basedb.core.InvalidDataException;
5779 10 Dec 19 nicklas 6 import net.sf.basedb.util.parser.FlatFileParser.Data;
5779 10 Dec 19 nicklas 7 import net.sf.basedb.util.parser.Mapper;
5779 10 Dec 19 nicklas 8
5779 10 Dec 19 nicklas 9 /**
5779 10 Dec 19 nicklas 10   Mapper implementation that wrap another mapper and throws
5779 10 Dec 19 nicklas 11   an exception if the mapped value is null. This is useful
5779 10 Dec 19 nicklas 12   to force non-null values in data files.
5779 10 Dec 19 nicklas 13   @since 4.25
5779 10 Dec 19 nicklas 14 */
5779 10 Dec 19 nicklas 15 public class NotNullMapper 
5779 10 Dec 19 nicklas 16   implements Mapper
5779 10 Dec 19 nicklas 17 {
5779 10 Dec 19 nicklas 18
5779 10 Dec 19 nicklas 19   /**
5779 10 Dec 19 nicklas 20     Wrap the parent if it exists. If the parent is null, null
5779 10 Dec 19 nicklas 21     is returned. The given 'ifNullMessage' is thrown in an
5779 10 Dec 19 nicklas 22     InvalidDataException if the mapped value is null.
5779 10 Dec 19 nicklas 23   */
5779 10 Dec 19 nicklas 24   public static NotNullMapper wrap(String ifNullMessage, Mapper parent)
5779 10 Dec 19 nicklas 25   {
5779 10 Dec 19 nicklas 26     return parent == null ? null : new NotNullMapper(ifNullMessage, parent);
5779 10 Dec 19 nicklas 27   }
5779 10 Dec 19 nicklas 28   
5779 10 Dec 19 nicklas 29   
5779 10 Dec 19 nicklas 30   private final String ifNullMessage;
5779 10 Dec 19 nicklas 31   private final Mapper parent;
5779 10 Dec 19 nicklas 32   
5779 10 Dec 19 nicklas 33   public NotNullMapper(String ifNullMessage, Mapper parent)
5779 10 Dec 19 nicklas 34   {
5779 10 Dec 19 nicklas 35     this.parent = parent;
5779 10 Dec 19 nicklas 36     this.ifNullMessage = ifNullMessage;
5779 10 Dec 19 nicklas 37   }
5779 10 Dec 19 nicklas 38   
5779 10 Dec 19 nicklas 39   
5779 10 Dec 19 nicklas 40   @Override
5779 10 Dec 19 nicklas 41   public Date getDate(Data data) 
5779 10 Dec 19 nicklas 42   {
5779 10 Dec 19 nicklas 43     return check(parent.getDate(data));
5779 10 Dec 19 nicklas 44   }
5779 10 Dec 19 nicklas 45
5779 10 Dec 19 nicklas 46   @Override
5779 10 Dec 19 nicklas 47   public Double getDouble(Data data) 
5779 10 Dec 19 nicklas 48   {
5779 10 Dec 19 nicklas 49     return check(parent.getDouble(data));
5779 10 Dec 19 nicklas 50   }
5779 10 Dec 19 nicklas 51
5779 10 Dec 19 nicklas 52   @Override
5779 10 Dec 19 nicklas 53   public Float getFloat(Data data) 
5779 10 Dec 19 nicklas 54   {
5779 10 Dec 19 nicklas 55     return check(parent.getFloat(data));
5779 10 Dec 19 nicklas 56   }
5779 10 Dec 19 nicklas 57
5779 10 Dec 19 nicklas 58   @Override
5779 10 Dec 19 nicklas 59   public Integer getInt(Data data) 
5779 10 Dec 19 nicklas 60   {
5779 10 Dec 19 nicklas 61     return check(parent.getInt(data));
5779 10 Dec 19 nicklas 62   }
5779 10 Dec 19 nicklas 63
5779 10 Dec 19 nicklas 64   @Override
5779 10 Dec 19 nicklas 65   public Long getLong(Data data) 
5779 10 Dec 19 nicklas 66   {
5779 10 Dec 19 nicklas 67     return check(parent.getLong(data));
5779 10 Dec 19 nicklas 68   }
5779 10 Dec 19 nicklas 69
5779 10 Dec 19 nicklas 70   @Override
5779 10 Dec 19 nicklas 71   public String getString(Data data) 
5779 10 Dec 19 nicklas 72   {
5779 10 Dec 19 nicklas 73     return check(parent.getString(data));
5779 10 Dec 19 nicklas 74   }
5779 10 Dec 19 nicklas 75
5779 10 Dec 19 nicklas 76   @Override
5779 10 Dec 19 nicklas 77   @Deprecated
5779 10 Dec 19 nicklas 78   public String getValue(Data data) 
5779 10 Dec 19 nicklas 79   {
5779 10 Dec 19 nicklas 80     return check(parent.getString(data));
5779 10 Dec 19 nicklas 81   }
5779 10 Dec 19 nicklas 82
5779 10 Dec 19 nicklas 83   private <T> T check(T value)
5779 10 Dec 19 nicklas 84   {
5779 10 Dec 19 nicklas 85     if (value == null) throw new InvalidDataException(ifNullMessage);
5779 10 Dec 19 nicklas 86     return value;
5779 10 Dec 19 nicklas 87   }
5779 10 Dec 19 nicklas 88 }