Ejemplo n.º 1
0
        public static double PerformCalculationsBetweenGivenSummarizators(List <Summarizator> summarizatorsSet,
                                                                          SingleCrimeInfo singleCrime, OperationType oOperator)
        {
            List <double> membershipSummarizationValues = summarizatorsSet.Select(s =>
                                                                                  s.MembershipFunction.GetMembershipFunctionValue(singleCrime.GetAttributeValue(s.AttributeName)))
                                                          .ToList();

            if (summarizatorsSet.Count > 1)
            {
                if (oOperator == OperationType.And)
                {
                    return(membershipSummarizationValues.Min());
                }
                else
                {
                    return(membershipSummarizationValues.Max());
                }
            }
            else
            {
                return(membershipSummarizationValues[0]);
            }
        }
        public static List <SingleCrimeInfo> ReadData()
        {
            CrimeInfoDBContext     dBContext           = new CrimeInfoDBContext();
            DataTable              dataSet             = dBContext.OpenConnection();
            List <SingleCrimeInfo> crimeInfoCollection = new List <SingleCrimeInfo>();

            foreach (DataRow dataSetRow in dataSet.Rows)
            {
                SingleCrimeInfo simpleCrime = new SingleCrimeInfo();
                string[]        singleRow   = new string[dataSetRow.ItemArray.Length];

                for (int i = 0; i < singleRow.Length; i++)
                {
                    singleRow[i] = dataSetRow.ItemArray[i].ToString();
                }

                if (singleRow.Contains(""))
                {
                    continue;
                }
                simpleCrime.Id      = int.Parse(singleRow[0]);
                simpleCrime.Date    = DateTime.Parse(singleRow[1]).Date;
                simpleCrime.State   = singleRow[2];
                simpleCrime.Killed  = int.Parse(singleRow[3]);
                simpleCrime.Injured = int.Parse(singleRow[4]);
                string[] gunStatus = SplitString(singleRow[5]);
                string[] gunType   = SplitString(singleRow[6]);

                if (gunStatus.Length != gunType.Length || gunStatus.Contains("") || gunStatus.Contains(""))
                {
                    continue;
                }

                for (int i = 0; i < gunStatus.Length; i++)
                {
                    simpleCrime.GunInfos.Add(new GunInfo(gunStatus[i], gunType[i]));
                }

                string[] incidents = SplitString(singleRow[7]);

                if (incidents.Contains(""))
                {
                    continue;
                }

                for (int i = 0; i < incidents.Length; i++)
                {
                    simpleCrime.CharacteristicsInfos.Add(new CharacteristicsInfo(incidents[i]));
                }

                simpleCrime.Latitude  = float.Parse(singleRow[8]);
                simpleCrime.Longitude = Math.Abs(float.Parse(singleRow[9]));
                string[] partAge      = SplitString(singleRow[11]);
                string[] partAgeGroup = SplitString(singleRow[12]);
                string[] partGender   = SplitString(singleRow[13]);
                string[] partStatus   = SplitString(singleRow[14]);
                string[] partType     = SplitString(singleRow[15]);

                if (partAge.Length != partAgeGroup.Length || partAgeGroup.Length != partGender.Length ||
                    partGender.Length != partStatus.Length || partStatus.Length != partType.Length ||
                    partAge.Contains("") || partAgeGroup.Contains("") || partGender.Contains("") ||
                    partStatus.Contains("") || partType.Contains(""))
                {
                    continue;
                }

                List <List <string> > partStatusList = new List <List <string> >();
                string[] splitSeparators             = new string[] { "," };
                for (int i = 0; i < partStatus.Length; i++)
                {
                    partStatusList.Add(new List <string>());
                    if (partStatus[i].Contains(","))
                    {
                        string[] splittedPartStatusItem =
                            partStatus[i].Split(splitSeparators, StringSplitOptions.None);
                        foreach (string item in splittedPartStatusItem)
                        {
                            partStatusList[i].Add(item.Replace(" ", String.Empty));
                        }
                    }
                    else
                    {
                        partStatusList[i].Add(partStatus[i]);
                    }
                }

                bool IsAgeAbove = false;
                foreach (string item in partAge)
                {
                    if (int.Parse(item) > 80)
                    {
                        IsAgeAbove = true;
                    }
                }
                if (IsAgeAbove)
                {
                    continue;
                }

                for (int i = 0; i < partAge.Length; i++)
                {
                    simpleCrime.ParticipantsInfo.Add(new ParticipantInfo(int.Parse(partAge[i]), partAgeGroup[i], partGender[i], partStatusList[i], partType[i]));
                }

                crimeInfoCollection.Add(simpleCrime);
            }

            List <SingleCrimeInfo> sortedCollection = crimeInfoCollection.OrderBy(d => d.Date).ToList();

            SingleCrimeInfo.BeginDate = sortedCollection.First().Date;
            SingleCrimeInfo.EndDate   = sortedCollection.Last().Date;
            return(crimeInfoCollection);
        }