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; import net.sf.dvstar.uacodecheck.R; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * Created by dstarzhynskyi on 28.04.2015. */ public class INNCodec { private final Activity mParent; private final String mInn; private String TAG = "INNCodec"; public INNCodec(Activity parent, String vInn) { this.mParent = parent; this.mInn = vInn; try { mDateStart = mFormatter.parse("1899-12-31"); } catch (ParseException e) { e.printStackTrace(); } } public static final DateFormat mFormatter = new SimpleDateFormat("yyyy-MM-dd"); public static final DateFormat mFormatterOut = new SimpleDateFormat("dd.MM.yyyy"); public static Date mDateStart; public static final int[] weightOfControl ={ -1, 5, 7, 9, 4, 6, 10, 5, 7 }; public int getIGenger(String val) { int ret; int vCheck = Integer.parseInt(val); if(vCheck%2!=0) ret = 0; else ret = 1; return ret; } public String getCheckSum(){ String ret = ""; int sum = 0; for(int i=0;i<weightOfControl.length;i++){ sum += Integer.parseInt( ""+mInn.charAt(i) ) * weightOfControl[i]; } sum = (sum % 11) % 10; ret += sum; return ret; } public String getDayOfBirth( String c ){ String ret; int vCheck = Integer.parseInt(c); Calendar cal = Calendar.getInstance(); cal.setTime(mDateStart); cal.add(Calendar.DATE, vCheck); Date newDate = cal.getTime(); ret = mFormatterOut.format(newDate); return ret; } public String getSGender( String c ){ String ret; int vCheck = Integer.parseInt(c); String genders[] = mParent.getResources().getStringArray(R.array.list_gender); if(vCheck%2!=0) ret = genders[0]; else ret = genders[1]; return ret; } public String getValue(){ String ret = mInn.substring(0, 9)+ getCheckSum(); Log.v(TAG, "getValue() [" + mInn + "][" + ret + "]"); return ret; } public Spannable getSpannable(){ Spannable ret = new SpannableString(mInn); ret.setSpan(new ForegroundColorSpan(Color.GREEN), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ret.setSpan(new ForegroundColorSpan(Color.GRAY), 5, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ret.setSpan(new ForegroundColorSpan(Color.YELLOW), 8, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); ret.setSpan(new ForegroundColorSpan(Color.RED), 9, 10, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return ret; } }