package org.openlmis.core.view.holder;
import android.text.Editable;
import android.view.View;
import android.widget.TextView;
import org.apache.commons.lang3.StringUtils;
import org.openlmis.core.utils.SingleTextWatcher;
import org.openlmis.core.view.viewmodel.StockMovementViewModel;
class StockMovementViewHolderEditTextWatcher extends SingleTextWatcher {
private StockMovementViewHolder stockMovementViewHolder;
private final View view;
private final long currentStockOnHand;
private final StockMovementViewModel model;
public StockMovementViewHolderEditTextWatcher(StockMovementViewHolder stockMovementViewHolder, View view, StockMovementViewModel model, long currentStockOnHand) {
this.stockMovementViewHolder = stockMovementViewHolder;
this.view = view;
this.currentStockOnHand = currentStockOnHand;
this.model = model;
}
@Override
public void afterTextChanged(Editable editable) {
setValue(view, model, currentStockOnHand);
}
private void setValue(View v, StockMovementViewModel model, long currentStockOnHand) {
String text = ((TextView) v).getText().toString();
if (v != stockMovementViewHolder.etDocumentNo && v != stockMovementViewHolder.etRequested) {
updateStockExistence(v, model, currentStockOnHand, text);
}
if (v == stockMovementViewHolder.etReceived) {
model.setReceived(stockMovementViewHolder.etReceived.getText().toString());
} else if (v == stockMovementViewHolder.etIssued) {
model.setIssued(stockMovementViewHolder.etIssued.getText().toString());
} else if (v == stockMovementViewHolder.etPositiveAdjustment) {
model.setPositiveAdjustment(stockMovementViewHolder.etPositiveAdjustment.getText().toString());
} else if (v == stockMovementViewHolder.etNegativeAdjustment) {
model.setNegativeAdjustment(stockMovementViewHolder.etNegativeAdjustment.getText().toString());
} else if (v == stockMovementViewHolder.etDocumentNo) {
model.setDocumentNo(stockMovementViewHolder.etDocumentNo.getText().toString());
} else if (v == stockMovementViewHolder.etRequested) {
model.setRequested(stockMovementViewHolder.etRequested.getText().toString());
}
}
private void updateStockExistence(View v, StockMovementViewModel model, long currentStockOnHand, String text) {
long number = 0;
if (!StringUtils.isEmpty(text)) {
number = Long.parseLong(text);
}
String stockExistence = "";
if (v == stockMovementViewHolder.etReceived || v == stockMovementViewHolder.etPositiveAdjustment) {
stockExistence = String.valueOf(currentStockOnHand + number);
} else if (v == stockMovementViewHolder.etIssued || v == stockMovementViewHolder.etNegativeAdjustment) {
stockExistence = String.valueOf(currentStockOnHand - number);
}
stockMovementViewHolder.txStockExistence.setText(stockExistence);
model.setStockExistence(stockExistence);
}
}