package net.sf.dvstar.uacodecheck.codec; import android.app.Activity; import android.graphics.Color; import android.text.Spannable; import android.text.SpannableString; import android.text.Spanned; import android.text.style.ForegroundColorSpan; import android.util.Log; /** * Created by dstarzhynskyi on 28.04.2015. */ public class MFOCodec implements ICodec { public static final int[] weightOfControl ={ 1, 3, 7, 1, 3, 7 }; private String mCheckValue; private Activity mParent; private String TAG="MFOCodec"; public MFOCodec(Activity parent, String vCheckValue){ this.mParent = parent; this.mCheckValue = vCheckValue; } public String getCheckSum(){ String ret = ""; String aMfo = mCheckValue.substring(0, 5)+"0"; int sum = 0; for(int i=0;i<weightOfControl.length;i++){ sum += Integer.parseInt( ""+aMfo.charAt(i) ) * weightOfControl[i]; } sum = ((sum % 10)*7)%10; ret += sum; return ret; } public String getValue(){ String ret = mCheckValue.substring(0, 5)+ getCheckSum(); Log.v(TAG, "getValue() [" + mCheckValue + "][" + ret + "]"); return ret; } @Override public int getMinLen() { return 6; } @Override public int getMaxLen() { return 6; } @Override public Spannable getSpannable() { Spannable ret = new SpannableString(getValue()); ret.setSpan(new ForegroundColorSpan(Color.GREEN), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ret.setSpan(new ForegroundColorSpan(Color.RED), 5, 6, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return ret; } }