1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package net.sf.ezmorph.primitive;
17
18 import net.sf.ezmorph.MorphException;
19
20 import org.apache.commons.lang.builder.EqualsBuilder;
21 import org.apache.commons.lang.builder.HashCodeBuilder;
22
23
24
25
26
27
28 public final class ShortMorpher extends AbstractIntegerMorpher
29 {
30 private short defaultValue;
31
32 public ShortMorpher()
33 {
34 super();
35 }
36
37
38
39
40 public ShortMorpher( short defaultValue )
41 {
42 super( true );
43 this.defaultValue = defaultValue;
44 }
45
46 public boolean equals( Object obj )
47 {
48 if( this == obj ){
49 return true;
50 }
51 if( obj == null ){
52 return false;
53 }
54
55 if( !(obj instanceof ShortMorpher) ){
56 return false;
57 }
58
59 ShortMorpher other = (ShortMorpher) obj;
60 EqualsBuilder builder = new EqualsBuilder();
61 if( isUseDefault() && other.isUseDefault() ){
62 builder.append( getDefaultValue(), other.getDefaultValue() );
63 return builder.isEquals();
64 }else if( !isUseDefault() && !other.isUseDefault() ){
65 return builder.isEquals();
66 }else{
67 return false;
68 }
69 }
70
71
72
73
74 public short getDefaultValue()
75 {
76 return defaultValue;
77 }
78
79 public int hashCode()
80 {
81 HashCodeBuilder builder = new HashCodeBuilder();
82 if( isUseDefault() ){
83 builder.append( getDefaultValue() );
84 }
85 return builder.toHashCode();
86 }
87
88
89
90
91
92
93
94 public short morph( Object value )
95 {
96 if( value == null ){
97 if( isUseDefault() ){
98 return defaultValue;
99 }else{
100 throw new MorphException( "value is null" );
101 }
102 }
103
104 if( value instanceof Number ){
105 return ((Number) value).shortValue();
106 }else{
107 short i = 0;
108 try{
109 i = Short.parseShort( getIntegerValue( value ) );
110 return i;
111 }
112 catch( NumberFormatException nfe ){
113 if( isUseDefault() ){
114 return defaultValue;
115 }else{
116 throw new MorphException( nfe );
117 }
118 }
119 }
120 }
121
122 public Class morphsTo()
123 {
124 return Short.TYPE;
125 }
126 }