001
014
015 package com.liferay.portal.kernel.increment;
016
017
020 public class NumberIncrement implements Increment<Number> {
021
022 public NumberIncrement(Number value) {
023 _value = value;
024 }
025
026 public void decrease(Number delta) {
027 _value = subtract(delta);
028 }
029
030 public Increment<Number> decreaseForNew(Number delta) {
031 return new NumberIncrement(subtract(delta));
032 }
033
034 public Number getValue() {
035 return _value;
036 }
037
038 public void increase(Number delta) {
039 _value = add(delta);
040 }
041
042 public Increment<Number> increaseForNew(Number delta) {
043 return new NumberIncrement(add(delta));
044 }
045
046 public void setValue(Number value) {
047 _value = value;
048 }
049
050 protected Number add(Number delta) {
051 if (delta instanceof Double) {
052 return addAsDouble(delta);
053 }
054 else if (delta instanceof Integer) {
055 return addAsInteger(delta);
056 }
057 else if (delta instanceof Long) {
058 return addAsLong(delta);
059 }
060
061 return _value;
062 }
063
064 protected Number addAsDouble(Number delta) {
065 if (delta == null) {
066 return _value;
067 }
068
069 return _value.doubleValue() + delta.doubleValue();
070 }
071
072 protected Number addAsInteger(Number delta) {
073 if (delta == null) {
074 return _value;
075 }
076
077 return _value.intValue() + delta.intValue();
078 }
079
080 protected Number addAsLong(Number delta) {
081 if (delta == null) {
082 return _value;
083 }
084
085 return _value.longValue() + delta.longValue();
086 }
087
088 protected Number subtract(Number delta) {
089 if (delta instanceof Double) {
090 return subtractAsDouble(delta);
091 }
092 else if (delta instanceof Integer) {
093 return subtractAsInteger(delta);
094 }
095 else if (delta instanceof Long) {
096 return subtractAsLong(delta);
097 }
098
099 return _value;
100 }
101
102 protected Number subtractAsDouble(Number delta) {
103 if (delta == null) {
104 return _value;
105 }
106
107 return _value.doubleValue() - delta.doubleValue();
108 }
109
110 protected Number subtractAsInteger(Number delta) {
111 if (delta == null) {
112 return _value;
113 }
114
115 return _value.intValue() - delta.intValue();
116 }
117
118 protected Number subtractAsLong(Number delta) {
119 if (delta == null) {
120 return _value;
121 }
122
123 return _value.longValue() - delta.longValue();
124 }
125
126 private Number _value = 0;
127
128 }