diff --git a/src/main/java/org/bigNumber/common/interfaces/BigNumberFactory.java b/src/main/java/org/bigNumber/common/interfaces/BigNumberFactory.java
index 259d877..46a50d1 100644
--- a/src/main/java/org/bigNumber/common/interfaces/BigNumberFactory.java
+++ b/src/main/java/org/bigNumber/common/interfaces/BigNumberFactory.java
@@ -28,9 +28,12 @@ public interface BigNumberFactory {
public BigNumber getBigNumber();
/**
+ * It returns the BigNumber which was put on-hold respective to the provided key
+ * In case the key is wrong and/or no BigNumber exists corresponding to it a new BigNumber would be returned.
+ * Make sure that you do handle it as well.
* @author Nishi Inc.
* @since v1.1.0
- * @param key
+ * @param key Integer to get corresponding BigNumber
* @return A BigNumber object which is on-hold corresponding to the given key
*/
public BigNumber getBigNumber(Integer key);
@@ -41,5 +44,17 @@ public interface BigNumberFactory {
* @param bignums BigNumbers to return back to pool
*/
public void destroy(BigNumber... bignums);
+
+ /**
+ * Puts given BigNumber on-hold.
+ * If the given number was not initially allocated, it's added to pool and put at hold.
+ * DO NOT FORGET TO DESTROY NUMBERS ON-HOLD.
+ * @author Nishi Inc.
+ * @since v1.1.0
+ * @param bignum Put this bigNumber on-hold
+ * @return A 'key' by which this particular number can be grabbed from the pool
+ * Just call getBigNumber(key)
+ */
+ public Integer hold(BigNumber bignum);
}
diff --git a/src/main/java/org/bigNumber/common/services/BigNumberUtils.java b/src/main/java/org/bigNumber/common/services/BigNumberUtils.java
index a9f808b..cb91f12 100644
--- a/src/main/java/org/bigNumber/common/services/BigNumberUtils.java
+++ b/src/main/java/org/bigNumber/common/services/BigNumberUtils.java
@@ -12,6 +12,7 @@ public final class BigNumberUtils implements StaticMethods {
// TODO Keep two interfaces StaticMethods and NonStaticMethods
// TODO #33 : BigNumberUtil will implement StaticMethods while BigNumberParent will implement NonStaticMethods which extends Serializable and Comparable
// TODO Make necessary changes in Tests
+ // TODO Set default mathContext in BigNUmber constructor
// Singleton
private BigNumberUtils(){}
diff --git a/src/main/java/org/bigNumber/models/BigNumber.java b/src/main/java/org/bigNumber/models/BigNumber.java
index d1c5dd2..af5a5f4 100644
--- a/src/main/java/org/bigNumber/models/BigNumber.java
+++ b/src/main/java/org/bigNumber/models/BigNumber.java
@@ -28,22 +28,13 @@
*/
public class BigNumber extends BigNumberParent {
- private static final Integer DEFAULT_ROUND_OFF_DIGITS = 2;
-
- private static final String FROM = "From BigNumber.";
- private static final String APPEND = "append";
- private static final String INSERT = "insert";
- private static final String MODIFY = "modify";
- private static final String SET_VALUE = "setValue";
- private static final String PUT_AT_FIRST = "putAtFirst";
-
- private List value;
- private BigInteger bigInteger;
- private boolean isNegative = false;
- private boolean isFractional = false;
- private boolean isZero = false;
- private Integer locationOfDecimal;
-
+ private static final String FROM = "From BigNumber.";
+ private static final String APPEND = "append";
+ private static final String INSERT = "insert";
+ private static final String MODIFY = "modify";
+ private static final String SET_VALUE = "setValue";
+ private static final String PUT_AT_FIRST = "putAtFirst";
+ private static final Integer DEFAULT_ROUND_OFF_DIGITS = 2;
//____________________________________________________________________________________
//********************************* CONSTRUCTORS *************************************
@@ -60,8 +51,8 @@ public BigNumber(){
}
/**
- *
- * @param number
+ * Create a copy from the given BigNumber
+ * @param number A BigNumber
* @author Nishi Inc.
* @since v0.1.0
*/
diff --git a/src/main/java/org/bigNumber/models/BigNumberMathContext.java b/src/main/java/org/bigNumber/models/BigNumberMathContext.java
index 78fbcaa..6351980 100644
--- a/src/main/java/org/bigNumber/models/BigNumberMathContext.java
+++ b/src/main/java/org/bigNumber/models/BigNumberMathContext.java
@@ -14,11 +14,21 @@
public class BigNumberMathContext {
private static final int DEFAULT_NUMBER_OF_DIGITS_AFTER_DECIMAL = 6;
+ private static final RoundingMode DEFUALT_ROUNDING_MODE = RoundingMode.HALF_EVEN;
private RoundingMode roundingMode;
private Integer numberOfDigitsAfterDecimal;
private int precision;
+ /**
+ * Defualt constructor
+ */
+ public BigNumberMathContext() {
+ this.roundingMode = BigNumberMathContext.DEFUALT_ROUNDING_MODE;
+ this.precision = MathContext.UNLIMITED.getPrecision();
+ this.setNumberOfDigitsAfterDecimal(BigNumberMathContext.DEFAULT_NUMBER_OF_DIGITS_AFTER_DECIMAL);
+ }
+
/**
*
* @param roundingMode To set roundingMode
@@ -29,6 +39,16 @@ public BigNumberMathContext(RoundingMode roundingMode) {
this.setNumberOfDigitsAfterDecimal(BigNumberMathContext.DEFAULT_NUMBER_OF_DIGITS_AFTER_DECIMAL);
}
+ /**
+ *
+ * @param mathContext mathContext object to instantiate BigNumberMathContext object
+ */
+ public BigNumberMathContext(MathContext mathContext) {
+ this.roundingMode = mathContext.getRoundingMode();
+ this.precision = mathContext.getPrecision();
+ this.setNumberOfDigitsAfterDecimal(BigNumberMathContext.DEFAULT_NUMBER_OF_DIGITS_AFTER_DECIMAL);
+ }
+
public Integer getNumberOfDigitsAfterDecimal() {
return numberOfDigitsAfterDecimal;
}
diff --git a/src/main/java/org/bigNumber/models/BigNumberParent.java b/src/main/java/org/bigNumber/models/BigNumberParent.java
index 0bb7938..061636d 100644
--- a/src/main/java/org/bigNumber/models/BigNumberParent.java
+++ b/src/main/java/org/bigNumber/models/BigNumberParent.java
@@ -13,6 +13,7 @@
import java.io.Serializable;
import java.math.BigDecimal;
+import java.math.BigInteger;
import java.math.MathContext;
import java.util.List;
@@ -30,8 +31,14 @@ public abstract class BigNumberParent implements NonStaticMethods {
protected static final long serialVersionUID = 1L;
- protected BigDecimal bigDecimal;
- protected BigNumberMathContext defaultBigNumberMathContext;
+ protected boolean isNegative = false;
+ protected boolean isFractional = false;
+ protected boolean isZero = false;
+ protected Integer locationOfDecimal;
+ protected BigInteger bigInteger;
+ protected BigDecimal bigDecimal;
+ protected List value;
+ protected BigNumberMathContext defaultBigNumberMathContext;
protected BigDecimal getBigDecimal() {
if(bigDecimal == null) {
@@ -53,6 +60,9 @@ protected void setBigDecimal(BigDecimal bigDecimal) {
this.syncFromDecimal();
}
+ /**
+ * Sets all the fields of BigNumber as per the value of BigDecimal field
+ */
protected abstract void syncFromDecimal();
}
diff --git a/src/main/java/org/bigNumber/models/BigNumberPool.java b/src/main/java/org/bigNumber/models/BigNumberPool.java
index 653eef2..01d7f80 100644
--- a/src/main/java/org/bigNumber/models/BigNumberPool.java
+++ b/src/main/java/org/bigNumber/models/BigNumberPool.java
@@ -51,7 +51,7 @@ public class BigNumberPool implements BigNumberFactory {
private TreeMap hold;
/**
- * Constructs a pool with GlobalConstants.DEFAULT_CAPACITY and GlobalConstants.DEFAULT_LOAD_FACOTR
+ * Constructs a pool with DEFAULT_CAPACITY and DEFAULT_LOAD_FACOTR
* However, this pool can intelligently modify its capacity and loadFactor in runtime
* @author Nishi Inc.
* @since v1.0.0
@@ -110,7 +110,7 @@ public void destroy(BigNumber... bignums) {
* Destroys BigNumber in pool
* @author Nishi Inc.
* @since v1.0.0
- * @param bignum
+ * @param bignum BigNumber to get rid of
*/
private void destroy(BigNumber bignum) {
boolean removedFromAllotted = this.getAllotted().remove(bignum);
@@ -129,16 +129,7 @@ private void destroy(BigNumber bignum) {
}
}
- /**
- * Puts given BigNumber on-hold.
- * If the given number was not initially allocated, it's added to pool and put at hold.
- * DO NOT FORGET TO DESTROY NUMBERS ON-HOLD.
- * @author Nishi Inc.
- * @since v1.1.0
- * @param bignum
- * @return A 'key' by which this particular number can be grabbed from the pool
- * Just call getBigNumber(key)
- */
+ @Override
public Integer hold(BigNumber bignum) {
Integer key = nextKey();
this.getAllotted().remove(bignum);
@@ -147,8 +138,8 @@ public Integer hold(BigNumber bignum) {
}
/**
- * Manages BigNumber pool as per defined capacity,
- *
loadFactor and currently allotted and free BigNumbers.
+ * Manages BigNumber pool as per defined capacity,
+ * loadFactor and currently allotted and free BigNumbers.
*/
private void managePool() {
this.updateIndex();
@@ -291,7 +282,10 @@ private TreeMap getHold() {
}
return hold;
}
-
+
+ /**
+ * @return nextKey or ++key
+ */
private Integer nextKey() {
return ++key;
}