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