Example #1
0
        private void btnNovaConsulta_Click(object sender, EventArgs e)
        {
            //this.Close();

            DaoCaso dao = new DaoCaso();

            List <Caso> casos = dao.getAll();

            CMaxMin maxMin = new CMaxMin();

            PropertyInfo[] nomeAtribs = casos[0].GetType().GetProperties();

            MaxMinimos mm = MaxMinimos.getInstance();


            for (int i = 3; i < nomeAtribs.Length - 1; i++)
            {
                List <double> valores = new List <double>();

                valores = maxMin.maxMinCol(casos, nomeAtribs[i]);

                mm.table.Add(nomeAtribs[i].Name, valores);
            }



            SelecionaAtributos st = new SelecionaAtributos();

            st.Show();
            this.Hide();
        }
        private void btn_avançar_Click(object sender, EventArgs e)
        {
            DaoCaso dao = new DaoCaso();

            Caso novoCaso = new Caso();

            novoCaso.caso = Convert.ToInt32(GridViewCasoscomSimilaridade.SelectedCells[0].Value.ToString());

            novoCaso = dao.search(novoCaso);

            CasoNovo casoSel = CasoNovo.getInstance();

            casoSel._id             = novoCaso._id;
            casoSel.area_damaged    = novoCaso.area_damaged;
            casoSel.canker_lesion   = novoCaso.canker_lesion;
            casoSel.caso            = novoCaso.caso;
            casoSel.crop_hist       = novoCaso.crop_hist;
            casoSel.date            = novoCaso.date;
            casoSel.doenca          = novoCaso.doenca;
            casoSel.external_decay  = novoCaso.external_decay;
            casoSel.fruiting_bodies = novoCaso.fruiting_bodies;
            casoSel.fruit_pods      = novoCaso.fruit_pods;
            casoSel.fruit_spots     = novoCaso.fruit_spots;
            casoSel.germination     = novoCaso.germination;
            casoSel.hail            = novoCaso.hail;
            casoSel.int_discolor    = novoCaso.int_discolor;
            casoSel.leafspots_halo  = novoCaso.leafspots_halo;
            casoSel.leafspots_marg  = novoCaso.leafspots_marg;
            casoSel.leafspot_size   = novoCaso.leafspot_size;
            casoSel.leaf_malf       = novoCaso.leaf_malf;
            casoSel.leaf_mild       = novoCaso.leaf_mild;
            casoSel.leaf_shread     = novoCaso.leaf_shread;
            casoSel.leaves          = novoCaso.leaves;
            casoSel.lodging         = novoCaso.lodging;
            casoSel.mold_growth     = novoCaso.mold_growth;
            casoSel.mycelium        = novoCaso.mycelium;
            casoSel.plant_growth    = novoCaso.plant_growth;
            casoSel.plant_stand     = novoCaso.plant_stand;
            casoSel.precip          = novoCaso.precip;
            casoSel.roots           = novoCaso.precip;
            casoSel.roots           = novoCaso.roots;
            casoSel.sclerotia       = novoCaso.sclerotia;
            casoSel.seed            = novoCaso.seed;
            casoSel.seed_discolor   = novoCaso.seed_discolor;
            casoSel.seed_size       = novoCaso.seed_size;
            casoSel.seed_tmt        = novoCaso.seed_tmt;
            casoSel.severity        = novoCaso.severity;
            casoSel.shriveling      = novoCaso.shriveling;
            casoSel.stem            = novoCaso.stem;
            casoSel.stem_cankers    = novoCaso.stem_cankers;
            casoSel.temp            = casoSel.temp;

            this.Hide();
            TelaFinal final = new TelaFinal();

            final.Show();
        }
        public void gravaNovoCaso(Caso caso)
        {
            DaoCaso dao = new DaoCaso();

            int num = dao.numDocumentos();

            caso.caso = num;

            dao.create(caso);
        }
        public int numCasos()
        {
            DaoCaso dao = new DaoCaso();

            return(dao.numDocumentos());
        }
        public Caso getCasos(int i)
        {
            DaoCaso casosDao = new DaoCaso();

            Caso c = new Caso();

            c.caso = i;

            return(casosDao.search(c));

            //List<Caso> casos = casosDao.getAll();

            //Hashtable atri_casos = new Hashtable();

            /*if (casos != null)
            *  {
            *   foreach (Caso c in casos)
            *   {
            *
            *       /*foreach(Caso c1 in casos)
            *       {
            *
            *       }
            *
            *       atri_casos.Add("area_damaged", c.area_damaged);
            *       atri_casos.Add("canker_lesion", c.canker_lesion);
            *       atri_casos.Add("crop_hist", c.crop_hist);
            *       atri_casos.Add("date", c.date);
            *       atri_casos.Add("externalDecay", c.externalDecay);
            *       atri_casos.Add("fruitingBodies", c.fruitingBodies);
            *       atri_casos.Add("fruitPods", c.fruitPods);
            *       atri_casos.Add("fruitSpots", c.fruitSpots);
            *       atri_casos.Add("germination", c.germination);
            *       atri_casos.Add("hail", c.hail);
            *       atri_casos.Add("intDiscolor", c.intDiscolor);
            *       atri_casos.Add("leafShread", c.leafShread);
            *       atri_casos.Add("leafsports_halo", c.leafsports_halo);
            *       atri_casos.Add("leafspotMarg", c.leafspotMarg);
            *       atri_casos.Add("leafspotSize", c.leafspotSize);
            *       atri_casos.Add("leaf_malf", c.leaf_malf);
            *       atri_casos.Add("leaf_mild", c.leaf_mild);
            *       atri_casos.Add("leaves", c.leaves);
            *       atri_casos.Add("lodging", c.lodging);
            *       atri_casos.Add("moldGrowth", c.moldGrowth);
            *       atri_casos.Add("mycelium", c.mycelium);
            *       atri_casos.Add("plantStand", c.plantStand);
            *       atri_casos.Add("plant_growth", c.plant_growth);
            *       atri_casos.Add("precip", c.precip);
            *       atri_casos.Add("roots", c.roots);
            *       atri_casos.Add("sclerotia", c.sclerotia);
            *       atri_casos.Add("seed", c.seed);
            *       atri_casos.Add("seedDiscolor", c.seedDiscolor);
            *       atri_casos.Add("seedSize", c.seedSize);
            *       atri_casos.Add("seedTmt", c.seedTmt);
            *       atri_casos.Add("severity", c.severity);
            *       atri_casos.Add("shriveling", c.shriveling);
            *       atri_casos.Add("stem", c.stem);
            *       atri_casos.Add("stemCankers", c.stemCankers);
            *       atri_casos.Add("temp", c.temp);
            *
            *   }
            *  }
            *
            *  return atri_casos;*/
        }
        public List <Caso> calculaSimilaridadeLocal(Caso casoBase)
        {
            DaoCaso dao_caso = new DaoCaso();

            List <Caso> allCasos = dao_caso.getAll();

            //Hashtable sl = new Hashtable();

            PropertyInfo[] valCaso = casoBase.GetType().GetProperties();

            DaoAtributo at = new DaoAtributo();

            Atributo atb2 = new Atributo();

            Hashtable pesos = getPesos();

            List <Atributo> atbs = at.getAll();

            List <Caso> casoSimilar = new List <Caso>();

            double similaridadeLocal  = 0;
            double similaridadeGlobal = 0;
            double div = 0;

            for (int j = 0; j < allCasos.Count; j++)
            {
                Hashtable      similaridades = new Hashtable();
                PropertyInfo[] valTab        = allCasos[j].GetType().GetProperties();

                similaridadeLocal = 0;
                div = 0;

                for (int i = 3; i <= 37; i++)
                {
                    //atb.atributo = valTab[i].Name;

                    //Atributo atb2 = at.searchOther(atb);

                    atb2 = atbs.Find(a => a.atributo.Equals(valTab[i].Name.Replace('_', '-')));



                    if (valCaso[i].GetValue(casoBase).Equals("Desconhecido") || valTab[i].GetValue(allCasos[j]).Equals("Desconhecido"))
                    {
                        similaridadeLocal += 0;

                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else if (valCaso[i].GetValue(casoBase).Equals("Desconhecido") && valTab[i].GetValue(allCasos[j]).Equals("Desconhecido"))
                    {
                        similaridadeLocal += (1 * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                        div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else if (atb2.similaridade.Equals("Não"))
                    {
                        if (valCaso[i].Name.Equals(valTab[i].Name))
                        {
                            similaridadeLocal += (1 * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }

                        similaridadeLocal += 0;

                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                    else
                    {
                        var atbVal    = valCaso[i].GetValue(casoBase);
                        var atbTabela = valTab[i].GetValue(allCasos[j]);

                        double valorCaso = valAtributo(valCaso[i].Name, (String)atbVal);
                        double valorTab  = valAtributo(valTab[i].Name, (String)atbTabela);

                        double[] maxMin = maxMinCol(valCaso[i].Name);

                        /*maxMin[0] = 1;
                        *  maxMin[1] = 3;*/

                        if (maxMin[0] != maxMin[1])
                        {
                            similaridadeLocal += (1 - ((Math.Abs(valorCaso - valorTab))) / (maxMin[1] - maxMin[0]) * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }

                        else
                        {
                            similaridadeLocal += (1 - (Math.Abs(valorCaso - valorTab)) * Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString()));
                            div += Convert.ToDouble(pesos[valTab[i].Name.Replace('_', '-')].ToString());
                        }


                        //similaridades.Add(valCaso[i].Name, similaridadeLocal);
                    }
                }

                //sl.Add(allCasos[j].caso, similaridades);

                similaridadeGlobal = similaridadeLocal / div;

                Caso c = allCasos[j];
                c.SimilaridadeGlobal = similaridadeGlobal;

                casoSimilar.Add(c);
            }


            return(casoSimilar);
        }