001
014
015 package com.liferay.portal.kernel.increment;
016
017
020 public abstract class OverrideIncrement<T extends Comparable<T>>
021 implements Increment<T> {
022
023 public OverrideIncrement(T value) {
024 this.value = value;
025 }
026
027 @Override
028 public void decrease(T delta) {
029 if (value.compareTo(delta) > 0) {
030 value = delta;
031 }
032 }
033
034 @Override
035 public OverrideIncrement<T> decreaseForNew(T delta) {
036 if (value.compareTo(delta) < 0) {
037 delta = value;
038 }
039
040 return createOverrideIncrement(delta);
041 }
042
043 @Override
044 public T getValue() {
045 return value;
046 }
047
048 @Override
049 public void increase(T delta) {
050 if (value.compareTo(delta) < 0) {
051 value = delta;
052 }
053 }
054
055 @Override
056 public OverrideIncrement<T> increaseForNew(T delta) {
057 if (value.compareTo(delta) > 0) {
058 delta = value;
059 }
060
061 return createOverrideIncrement(delta);
062 }
063
064 @Override
065 public void setValue(T value) {
066 this.value = value;
067 }
068
069 protected abstract OverrideIncrement<T> createOverrideIncrement(T value);
070
071 protected T value;
072
073 }