edu.ksu.cs.a4vm.bse.MorphologyCount.java Source code

Java tutorial

Introduction

Here is the source code for edu.ksu.cs.a4vm.bse.MorphologyCount.java

Source

/**
 * Created by Joydeep Mitra on 3/11/16.
 * Copyright (c) 2016, Kansas State University
 * Licensed under Eclipse Public License v1.0
 * http://www.eclipse.org/legal/epl-v10.html
 */
package edu.ksu.cs.a4vm.bse;

import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.widget.Toast;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import edu.ksu.cs.a4vm.bse.Constants.Constant;
import edu.ksu.cs.a4vm.bse.util.SharedPrefUtil;

public class MorphologyCount extends AppCompatActivity {

    public String morphKey = null;
    public String grpKey = null;
    //private Set<String> labels = null;
    private Set<String> initVals = null;
    private HashSet<String> morphologyLabels = null;
    private Set<String> morphologyCounts = null;
    private Button btn1 = null;
    private Button btn2 = null;
    private Button btn3 = null;
    private Button btn4 = null;
    private Button btn5 = null;
    private Button btn6 = null;
    private Button btn7 = null;
    private Button btn8 = null;
    private TextView tv = null;
    Button btn = null;
    String test = null;

    private String currentButton = null;
    TableRow row = null;
    public int limit = 1000000;

    int NormalCount = 0;
    double NormalProp = 0.00;
    int Lb2Count = 0;
    double Lb2Prop = 0.00;
    int Lb3Count = 0;
    double Lb3Prop = 0.00;
    int Lb4Count = 0;
    double Lb4Prop = 0.00;
    int Lb5Count = 0;
    double Lb5Prop = 0.00;
    int Lb6Count = 0;
    double Lb6Prop = 0.00;
    int Lb7Count = 0;
    double Lb7Prop = 0.00;
    int Lb8Count = 0;
    double Lb8Prop = 0.00;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_morphology_count);

        morphKey = getIntent().getStringExtra("morphKey");
        if (morphKey != null)
            grpKey = (morphKey.split("_"))[0];

    }

    @Override
    public void onResume() {
        super.onResume();
        test = "Resume called...";
        final MediaPlayer btnChangeSound = MediaPlayer.create(getApplicationContext(), R.raw.button_changed);
        final MediaPlayer limitRchdSound = MediaPlayer.create(getApplicationContext(), R.raw.limit_reached);
        initVals = (HashSet<String>) SharedPrefUtil.getValue(getApplicationContext(),
                Constant.PREFS_BULL_MORPHOLOGY_INFO, morphKey);
        /*morphologyLabels = (HashSet<String>) SharedPrefUtil.getValue(getApplicationContext(),
            Constant.PREFS_FILE_MORPH_INFO,Constant.KEY_MORPHOLOGY);*/
        morphologyLabels = (HashSet<String>) SharedPrefUtil.getValue(getApplicationContext(),
                Constant.PREFS_GRP_MORPH_CONFIG, grpKey);
        TableLayout table = new TableLayout(this);
        FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT);
        table.setLayoutParams(lp);
        table.setShrinkAllColumns(true);
        table.setStretchAllColumns(true);

        TableLayout.LayoutParams rowLp = new TableLayout.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 0.5f);
        TableRow.LayoutParams cellLp = new TableRow.LayoutParams(0, ViewGroup.LayoutParams.MATCH_PARENT, 1.0f);

        TableRow.LayoutParams cell1Lp = new TableRow.LayoutParams(60, 120, 1.0f);

        if (initVals != null) {
            for (String Val : initVals) {
                String[] values = Val.split("=");
                if (values != null && values.length == 2 && values[0].equalsIgnoreCase("Normal")) {
                    NormalCount = Integer.valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                    NormalProp = Double.valueOf(values[1].trim().substring(values[1].trim().indexOf("(") + 1,
                            values[1].trim().indexOf("%")));
                } else if (morphologyLabels != null) {
                    for (String label : morphologyLabels) {
                        String[] lbls = label.split("=");
                        if (lbls != null && lbls.length == 2 && lbls[1].equalsIgnoreCase(values[0])) {
                            if (lbls[0].equalsIgnoreCase("Morphology Field 2")) {
                                Lb2Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb2Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 3")) {
                                Lb3Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb3Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 4")) {
                                Lb4Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb4Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 5")) {
                                Lb5Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb5Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 6")) {
                                Lb6Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb6Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 7")) {
                                Lb7Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb7Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            } else if (lbls[0].equalsIgnoreCase("Morphology Field 8")) {
                                Lb8Count = Integer
                                        .valueOf(values[1].trim().substring(0, values[1].trim().indexOf("(")));
                                Lb8Prop = Double.valueOf(values[1].trim().substring(
                                        values[1].trim().indexOf("(") + 1, values[1].trim().indexOf("%")));
                            }
                        }
                    }
                }
            }
        }

        Constant.sum = NormalCount + Lb2Count + Lb3Count + Lb4Count + Lb5Count + Lb6Count + Lb7Count + Lb8Count;

        row = new TableRow(this);
        btn1 = new Button(this);
        btn1.setId(R.id.button1);
        btn1.setText("Normal:" + NormalCount + "(" + String.format("%.2f", NormalProp) + "%)");
        btn1.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button));
        btn1.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
        row.addView(btn1, cellLp);
        table.addView(row, rowLp);
        setContentView(table);
        if (morphologyLabels != null) {
            Iterator<String> it;

            TableRow row2 = new TableRow(this);
            TableRow row3 = new TableRow(this);
            TableRow row4 = new TableRow(this);
            TableRow row5 = new TableRow(this);

            it = morphologyLabels.iterator();
            while (it.hasNext()) {
                String label = it.next();
                String text[] = label.split("=");
                if (label.contains("Morphology Field 2")) {
                    btn2 = new Button(this);
                    btn2.setId(R.id.button2);
                    if (text != null && text.length == 2) {
                        btn2.setText(text[1] + ":" + Lb2Count + "(" + String.format("%.2f", Lb2Prop) + "%)");
                    }
                    btn2.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button2));
                    btn2.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn2.setHeight(300);
                    row2.addView(btn2);
                } else if (label.contains("Morphology Field 4")) {
                    btn4 = new Button(this);
                    btn4.setId(R.id.button4);
                    if (text != null && text.length == 2) {
                        btn4.setText(text[1] + ":" + Lb4Count + "(" + String.format("%.2f", Lb4Prop) + "%)");
                    }
                    btn4.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button4));
                    btn4.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn4.setHeight(300);
                    row3.addView(btn4);
                } else if (label.contains("Morphology Field 6")) {
                    btn6 = new Button(this);
                    btn6.setId(R.id.button6);
                    if (text != null && text.length == 2) {
                        btn6.setText(text[1] + ":" + Lb6Count + "(" + String.format("%.2f", Lb6Prop) + "%)");
                    }
                    btn6.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button6));
                    btn6.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn6.setHeight(300);
                    row4.addView(btn6);
                } else if (label.contains("Morphology Field 8")) {
                    btn8 = new Button(this);
                    btn8.setId(R.id.button8);
                    if (text != null && text.length == 2) {
                        btn8.setText(text[1] + ":" + Lb8Count + "(" + String.format("%.2f", Lb8Prop) + "%)");
                    }
                    btn8.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button8));
                    btn8.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    //btn = new Button(this);
                    btn8.setHeight(300);
                    row5.addView(btn8);
                    //row5.addView(btn);
                }
            }

            it = morphologyLabels.iterator();
            while (it.hasNext()) {
                String label = it.next();
                String text[] = label.split("=");
                if (label.contains("Limit")) {
                    if (text != null && text.length == 2) {
                        limit = Integer.valueOf(text[1]);
                    }
                } else if (label.contains("Morphology Field 3")) {
                    btn3 = new Button(this);
                    btn3.setId(R.id.button3);
                    if (text != null && text.length == 2) {
                        btn3.setText(text[1] + ":" + Lb3Count + "(" + String.format("%.2f", Lb3Prop) + "%)");
                    }
                    btn3.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button3));
                    btn3.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn3.setHeight(300);
                    row2.addView(btn3);
                } else if (label.contains("Morphology Field 5")) {
                    btn5 = new Button(this);
                    btn5.setId(R.id.button5);
                    if (text != null && text.length == 2) {
                        btn5.setText(text[1] + ":" + Lb5Count + "(" + String.format("%.2f", Lb5Prop) + "%)");
                    }
                    btn5.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button5));
                    btn5.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn5.setHeight(300);
                    row3.addView(btn5);
                } else if (label.contains("Morphology Field 7")) {
                    btn7 = new Button(this);
                    btn7.setId(R.id.button7);
                    if (text != null && text.length == 2) {
                        btn7.setText(text[1] + ":" + Lb7Count + "(" + String.format("%.2f", Lb7Prop) + "%)");
                    }
                    btn7.setBackground(ContextCompat.getDrawable(getApplicationContext(), R.drawable.button7));
                    btn7.setTextColor(ContextCompat.getColor(getApplicationContext(), R.color.white));
                    btn7.setHeight(300);
                    row4.addView(btn7);
                }

            }

            table.addView(row2, rowLp);
            table.addView(row3, rowLp);
            table.addView(row4, rowLp);
            table.addView(row5, rowLp);

        }

        row = new TableRow(this);

        btn = new Button(this);
        btn.setId(R.id.button);
        btn.setText("Edit Morphology Counts");
        btn.setGravity(Gravity.CENTER);
        row.addView(btn, cell1Lp);

        tv = new TextView(this);
        tv.setId(R.id.totals);
        tv.setText("Total Count:" + Constant.sum);
        tv.setGravity(Gravity.CENTER);
        row.addView(tv, cell1Lp);
        //table.addView(row, rowLp);
        //setContentView(table);

        //row = new TableRow(this);

        table.addView(row, rowLp);
        setContentView(table);

        //initializing morphology counts
        if (initVals == null) {
            morphologyCounts = new HashSet<String>();
            if (btn1 != null) {
                String initEntry = btn1.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn2 != null) {
                String initEntry = btn2.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn3 != null) {
                String initEntry = btn3.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn4 != null) {
                String initEntry = btn4.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn5 != null) {
                String initEntry = btn5.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn6 != null) {
                String initEntry = btn6.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn7 != null) {
                String initEntry = btn7.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
            if (btn8 != null) {
                String initEntry = btn8.getText().toString().trim().replace(":", "=");
                morphologyCounts.add(initEntry);
            }
        } else {
            morphologyCounts = new HashSet<String>();
            for (String initVal : initVals) {
                morphologyCounts.add(initVal);
            }
        }

        if (btn != null) {
            btn.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //SharedPrefUtil.saveGroup(getApplicationContext(),Constant.PREFS_BULL_MORPHOLOGY_INFO,morphKey,morphologyCounts);
                    Intent gotoEditCount = new Intent(getApplicationContext(), EditMorphologyCounts.class);
                    gotoEditCount.putExtra("morphKey", morphKey);
                    startActivity(gotoEditCount);
                }
            });
        }
        if (btn1 != null) {
            btn1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //final MediaPlayer btnChangeSound = MediaPlayer.create(getApplicationContext(),R.raw.button_changed);
                    if (currentButton == null)
                        currentButton = "btn1";
                    else {
                        if (!"btn1".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn1";
                        }
                    }
                    try {
                        String[] btnStrings = btn1.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        NormalCount = Integer.valueOf(btnCount);
                        NormalProp = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + NormalCount + "(" + String.format("%.2f", NormalProp)
                                    + "%" + ")";
                            morphologyCounts.remove(oldTxt);
                            NormalCount = NormalCount + 1;
                            Constant.sum = Constant.sum + 1;
                            NormalProp = (NormalCount * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + NormalCount + "(" + String.format("%.2f", NormalProp)
                                    + "%" + ")";
                            btn1.setText(newTxt);
                            newTxt = btnLbl + "=" + NormalCount + "(" + String.format("%.2f", NormalProp) + "%"
                                    + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }

                }
            });
        }

        if (btn2 != null) {
            tv.setText("Total Count:" + Constant.sum);
            btn2.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //final MediaPlayer btnChangeSound = MediaPlayer.create(getApplicationContext(),R.raw.button_changed);
                    if (currentButton == null)
                        currentButton = "btn2";
                    else {
                        if (!"btn2".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn2";
                        }
                    }

                    try {
                        String[] btnStrings = btn2.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb2Count = Integer.valueOf(btnCount);
                        Lb2Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb2Count + "(" + String.format("%.2f", Lb2Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb2Count = Lb2Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb2Prop = (Lb2Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb2Count + "(" + String.format("%.2f", Lb2Prop) + "%"
                                    + ")";
                            btn2.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb2Count + "(" + String.format("%.2f", Lb2Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn3 != null) {
            btn3.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn3";
                    else {
                        if (!"btn3".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn3";
                        }
                    }

                    try {
                        String[] btnStrings = btn3.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb3Count = Integer.valueOf(btnCount);
                        Lb3Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb3Count + "(" + String.format("%.2f", Lb3Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb3Count = Lb3Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb3Prop = (Lb3Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb3Count + "(" + String.format("%.2f", Lb3Prop) + "%"
                                    + ")";
                            btn3.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb3Count + "(" + String.format("%.2f", Lb3Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn4 != null) {
            btn4.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn4";
                    else {
                        if (!"btn4".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn4";
                        }
                    }

                    try {
                        String[] btnStrings = btn4.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb4Count = Integer.valueOf(btnCount);
                        Lb4Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb4Count + "(" + String.format("%.2f", Lb4Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb4Count = Lb4Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb4Prop = (Lb4Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb4Count + "(" + String.format("%.2f", Lb4Prop) + "%"
                                    + ")";
                            btn4.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb4Count + "(" + String.format("%.2f", Lb4Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn5 != null) {
            btn5.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn5";
                    else {
                        if (!"btn5".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn5";
                        }
                    }

                    try {
                        String[] btnStrings = btn5.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb5Count = Integer.valueOf(btnCount);
                        Lb5Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb5Count + "(" + String.format("%.2f", Lb5Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb5Count = Lb5Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb5Prop = (Lb5Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb5Count + "(" + String.format("%.2f", Lb5Prop) + "%"
                                    + ")";
                            btn5.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb5Count + "(" + String.format("%.2f", Lb5Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn6 != null) {
            btn6.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn6";
                    else {
                        if (!"btn6".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn6";
                        }
                    }

                    try {
                        String[] btnStrings = btn6.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb6Count = Integer.valueOf(btnCount);
                        Lb6Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb6Count + "(" + String.format("%.2f", Lb6Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb6Count = Lb6Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb6Prop = (Lb6Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb6Count + "(" + String.format("%.2f", Lb6Prop) + "%"
                                    + ")";
                            btn6.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb6Count + "(" + String.format("%.2f", Lb6Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn7 != null) {
            btn7.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn7";
                    else {
                        if (!"btn7".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn7";
                        }
                    }

                    try {
                        String[] btnStrings = btn7.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb7Count = Integer.valueOf(btnCount);
                        Lb7Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb7Count + "(" + String.format("%.2f", Lb7Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb7Count = Lb7Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb7Prop = (Lb7Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb7Count + "(" + String.format("%.2f", Lb7Prop) + "%"
                                    + ")";
                            btn7.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb7Count + "(" + String.format("%.2f", Lb7Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
        if (btn8 != null) {
            btn8.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (currentButton == null)
                        currentButton = "btn8";
                    else {
                        if (!"btn8".equalsIgnoreCase(currentButton)) {
                            //make sound
                            btnChangeSound.start();
                            currentButton = "btn8";
                        }
                    }

                    try {
                        String[] btnStrings = btn8.getText().toString().trim().split(":");
                        String btnLbl = btnStrings[0].trim();
                        String btnCount = btnStrings[1].trim().substring(0, btnStrings[1].trim().indexOf("("));
                        String btnprop = btnStrings[1].trim().substring(btnStrings[1].trim().indexOf("(") + 1,
                                btnStrings[1].trim().indexOf("%"));

                        Lb8Count = Integer.valueOf(btnCount);
                        Lb8Prop = Double.valueOf(btnprop);
                        if (Constant.sum < limit) {
                            String oldTxt = btnLbl + "=" + Lb8Count + "(" + String.format("%.2f", Lb8Prop) + "%"
                                    + ")";
                            morphologyCounts.remove(oldTxt);
                            Lb8Count = Lb8Count + 1;
                            Constant.sum = Constant.sum + 1;
                            Lb8Prop = (Lb8Count * 100.0) / Constant.sum;
                            String newTxt = btnLbl + ":" + Lb8Count + "(" + String.format("%.2f", Lb8Prop) + "%"
                                    + ")";
                            btn8.setText(newTxt);
                            newTxt = btnLbl + "=" + Lb8Count + "(" + String.format("%.2f", Lb8Prop) + "%" + ")";
                            morphologyCounts.add(newTxt);
                        } else if (Constant.sum == limit) {
                            limitRchdSound.start();
                            Constant.sum++;
                        }

                        if (Constant.sum < limit)
                            tv.setText("Total Count:" + Constant.sum);
                        else
                            tv.setText("Total Count:" + limit);
                    } catch (Exception e) {
                        e.printStackTrace();
                        Toast.makeText(getApplicationContext(), "Error occured. Restart and try again",
                                Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }

    }

    @Override
    public void onPause() {
        super.onPause();
        if (morphologyCounts != null && morphologyCounts.size() > 0) {
            //capture date of collection
            if (morphologyCounts != null && morphologyCounts.size() > 0) {
                Date cDate = new Date();
                String fDate = new SimpleDateFormat("dd-MM-yyyy hh:mm:ss").format(cDate);
                String timestamp = null;
                for (String item : morphologyCounts) {
                    if (item.contains("TimeStamp")) {
                        timestamp = item;
                    }
                }
                if (timestamp != null)
                    morphologyCounts.remove(timestamp);
                morphologyCounts.add("TimeStamp=" + fDate);
            }
            //saving count
            morphologyCounts.add("Threshold=" + this.limit);
            SharedPrefUtil.saveGroup(getApplicationContext(), Constant.PREFS_BULL_MORPHOLOGY_INFO, morphKey,
                    morphologyCounts);
            //saving key
            final Set<String> keySet = SharedPrefUtil.getValue(getApplicationContext(),
                    Constant.PREFS_MORPHOLOGY_COUNT_KEYS, Constant.KEY_MORPHOLOGY_COUNT_KEY);
            if (keySet != null && !keySet.contains(morphKey)) {
                Set<String> keySet1 = new HashSet<String>();
                Iterator<String> it = keySet.iterator();
                while (it.hasNext()) {
                    keySet1.add(it.next());
                }
                keySet1.add(morphKey);
                SharedPrefUtil.clear_pref(getApplicationContext(), Constant.PREFS_MORPHOLOGY_COUNT_KEYS);
                SharedPrefUtil.saveGroup(getApplicationContext(), Constant.PREFS_MORPHOLOGY_COUNT_KEYS,
                        Constant.KEY_MORPHOLOGY_COUNT_KEY, keySet1);
            } else if (keySet == null) {
                Set<String> keySet1 = new HashSet<String>();
                keySet1.add(morphKey);
                SharedPrefUtil.saveGroup(getApplicationContext(), Constant.PREFS_MORPHOLOGY_COUNT_KEYS,
                        Constant.KEY_MORPHOLOGY_COUNT_KEY, keySet1);

            }
        }
    }

}