1
14
15 package com.liferay.portal.kernel.increment;
16
17
22 public class NumberIncrement implements Increment<Number> {
23
24 public NumberIncrement(Number value) {
25 _value = value;
26 }
27
28 public void decrease(Number delta) {
29 _value = subtract(delta);
30 }
31
32 public Increment<Number> decreaseForNew(Number delta) {
33 return new NumberIncrement(subtract(delta));
34 }
35
36 public Number getValue() {
37 return _value;
38 }
39
40 public void increase(Number delta) {
41 _value = add(delta);
42 }
43
44 public Increment<Number> increaseForNew(Number delta) {
45 return new NumberIncrement(add(delta));
46 }
47
48 public void setValue(Number value) {
49 _value = value;
50 }
51
52 protected Number add(Number delta) {
53 if (delta instanceof Double) {
54 return addAsDouble(delta);
55 }
56 else if (delta instanceof Integer) {
57 return addAsInteger(delta);
58 }
59 else if (delta instanceof Long) {
60 return addAsLong(delta);
61 }
62
63 return _value;
64 }
65
66 protected Number addAsDouble(Number delta) {
67 if (delta == null) {
68 return _value;
69 }
70
71 return _value.doubleValue() + delta.doubleValue();
72 }
73
74 protected Number addAsInteger(Number delta) {
75 if (delta == null) {
76 return _value;
77 }
78
79 return _value.intValue() + delta.intValue();
80 }
81
82 protected Number addAsLong(Number delta) {
83 if (delta == null) {
84 return _value;
85 }
86
87 return _value.longValue() + delta.longValue();
88 }
89
90 protected Number subtract(Number delta) {
91 if (delta instanceof Double) {
92 return subtractAsDouble(delta);
93 }
94 else if (delta instanceof Integer) {
95 return subtractAsInteger(delta);
96 }
97 else if (delta instanceof Long) {
98 return subtractAsLong(delta);
99 }
100
101 return _value;
102 }
103
104 protected Number subtractAsDouble(Number delta) {
105 if (delta == null) {
106 return _value;
107 }
108
109 return _value.doubleValue() - delta.doubleValue();
110 }
111
112 protected Number subtractAsInteger(Number delta) {
113 if (delta == null) {
114 return _value;
115 }
116
117 return _value.intValue() - delta.intValue();
118 }
119
120 protected Number subtractAsLong(Number delta) {
121 if (delta == null) {
122 return _value;
123 }
124
125 return _value.longValue() - delta.longValue();
126 }
127
128 private Number _value = 0;
129
130 }