From a0bc9395f3799ccdf111d6bcbe78c40901a1aa22 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sat, 7 Nov 2020 17:57:14 +0100 Subject: [PATCH] removing some old redundant operations --- .../calculator/helpers/CalculatorImpl.kt | 26 ++++++++++++-- .../calculator/operation/DivideOperation.kt | 9 ----- .../calculator/operation/MinusOperation.kt | 9 ----- .../calculator/operation/MultiplyOperation.kt | 9 ----- .../calculator/operation/OperationFactory.kt | 19 ---------- .../calculator/operation/PercentOperation.kt | 35 ------------------- .../calculator/operation/PlusOperation.kt | 9 ----- .../calculator/operation/PowerOperation.kt | 18 ---------- .../calculator/operation/RootOperation.kt | 10 ------ .../operation/base/BinaryOperation.kt | 3 -- .../calculator/operation/base/Operation.kt | 5 --- .../operation/base/UnaryOperation.kt | 5 --- 12 files changed, 23 insertions(+), 134 deletions(-) delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt delete mode 100644 app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt index 05e1bcce..83c302de 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt @@ -2,7 +2,6 @@ package com.simplemobiletools.calculator.helpers import android.content.Context import com.simplemobiletools.calculator.R -import com.simplemobiletools.calculator.operation.PercentOperation import com.simplemobiletools.commons.extensions.toast import net.objecthunter.exp4j.ExpressionBuilder @@ -106,8 +105,7 @@ class CalculatorImpl(calculator: Calculator, private val context: Context) { // handle percents manually, it doesn't seem to be possible via net.objecthunter:exp4j. "%" is used only for modulo there private fun handlePercent() { - val operation = PercentOperation(baseValue, getSecondValue(), lastOperation) - val result = operation.getResult() + val result = calculatePercentage(baseValue, getSecondValue(), lastOperation) showNewFormula("${baseValue.format()}${getSign(lastOperation)}${getSecondValue().format()}%") inputDisplayedFormula = result.format() showNewResult(result.format()) @@ -168,6 +166,28 @@ class CalculatorImpl(calculator: Calculator, private val context: Context) { } } + private fun calculatePercentage(baseValue: Double, secondValue: Double, sign: String): Double { + return when (sign) { + MULTIPLY -> { + val partial = 100 / secondValue + baseValue / partial + } + DIVIDE -> { + val partial = 100 / secondValue + baseValue * partial + } + PLUS -> { + val partial = baseValue / (100 / secondValue) + baseValue.plus(partial) + } + MINUS -> { + val partial = baseValue / (100 / secondValue) + baseValue.minus(partial) + } + else -> baseValue / (100 * secondValue) + } + } + private fun showNewResult(value: String) { callback!!.showNewResult(value, context) } diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt deleted file mode 100644 index 5ec3fa98..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/DivideOperation.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation - -class DivideOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult() = baseValue / secondValue -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt deleted file mode 100644 index e79e2896..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MinusOperation.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation - -class MinusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult() = baseValue - secondValue -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt deleted file mode 100644 index e9fe57a1..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/MultiplyOperation.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation - -class MultiplyOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult() = baseValue * secondValue -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt deleted file mode 100644 index be6f79d4..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/OperationFactory.kt +++ /dev/null @@ -1,19 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.helpers.* -import com.simplemobiletools.calculator.operation.base.Operation - -object OperationFactory { - - fun forId(id: String, baseValue: Double, secondValue: Double): Operation? { - return when (id) { - PLUS -> PlusOperation(baseValue, secondValue) - MINUS -> MinusOperation(baseValue, secondValue) - DIVIDE -> DivideOperation(baseValue, secondValue) - MULTIPLY -> MultiplyOperation(baseValue, secondValue) - POWER -> PowerOperation(baseValue, secondValue) - ROOT -> RootOperation(baseValue, secondValue) - else -> null - } - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt deleted file mode 100644 index 10aa6e3f..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PercentOperation.kt +++ /dev/null @@ -1,35 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.helpers.DIVIDE -import com.simplemobiletools.calculator.helpers.MINUS -import com.simplemobiletools.calculator.helpers.MULTIPLY -import com.simplemobiletools.calculator.helpers.PLUS -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation - -class PercentOperation(baseValue: Double, secondValue: Double, val sign: String) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult(): Double { - return when (sign) { - MULTIPLY -> { - val partial = 100 / secondValue - baseValue / partial - } - DIVIDE -> { - val partial = 100 / secondValue - baseValue * partial - } - PLUS -> { - val partial = baseValue / (100 / secondValue) - baseValue.plus(partial) - } - MINUS -> { - val partial = baseValue / (100 / secondValue) - baseValue.minus(partial) - } - else -> { - baseValue / (100 * secondValue) - } - } - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt deleted file mode 100644 index ff124fed..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PlusOperation.kt +++ /dev/null @@ -1,9 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation - -class PlusOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult() = baseValue + secondValue -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt deleted file mode 100644 index 1e49be42..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/PowerOperation.kt +++ /dev/null @@ -1,18 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation -import kotlin.math.pow - -class PowerOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult(): Double { - val result = baseValue.pow(secondValue) - - return if (java.lang.Double.isInfinite(result) || java.lang.Double.isNaN(result)) - 0.0 - else { - result - } - } -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt deleted file mode 100644 index 21e11013..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/RootOperation.kt +++ /dev/null @@ -1,10 +0,0 @@ -package com.simplemobiletools.calculator.operation - -import com.simplemobiletools.calculator.operation.base.BinaryOperation -import com.simplemobiletools.calculator.operation.base.Operation -import kotlin.math.sqrt - -class RootOperation(baseValue: Double, secondValue: Double) : BinaryOperation(baseValue, secondValue), Operation { - - override fun getResult() = sqrt(secondValue) * baseValue -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt deleted file mode 100644 index c941f035..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/BinaryOperation.kt +++ /dev/null @@ -1,3 +0,0 @@ -package com.simplemobiletools.calculator.operation.base - -open class BinaryOperation protected constructor(protected val baseValue: Double, protected val secondValue: Double) diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt deleted file mode 100644 index 03560d01..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/Operation.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.simplemobiletools.calculator.operation.base - -interface Operation { - fun getResult(): Double -} diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt deleted file mode 100644 index ce74108e..00000000 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/operation/base/UnaryOperation.kt +++ /dev/null @@ -1,5 +0,0 @@ -package com.simplemobiletools.calculator.operation.base - -import java.math.BigDecimal - -open class UnaryOperation protected constructor(protected var value: BigDecimal)