public static bool IsAcceptable(SatyamAggregatedResultsTableEntry aggEntry, SatyamResultsTableEntry result)
        {
            switch (result.JobTemplateType)
            {
            case TaskConstants.Classification_Image:
            case TaskConstants.Classification_Image_MTurk:
            case TaskConstants.Classification_Video:
            case TaskConstants.Classification_Video_MTurk:
                return(SingleObjectLabelingAggregator.IsAcceptable(aggEntry, result));

            case TaskConstants.Counting_Image:
            case TaskConstants.Counting_Image_MTurk:
            case TaskConstants.Counting_Video:
            case TaskConstants.Counting_Video_MTurk:
                return(ObjectCountingAggregator.IsAcceptable(aggEntry, result));

            case TaskConstants.Detection_Image:
            case TaskConstants.Detection_Image_MTurk:
                return(MultiObjectLocalizationAndLabelingAggregator.IsAcceptable(aggEntry, result));

            case TaskConstants.Tracking:
            case TaskConstants.Tracking_MTurk:
                return(MultiObjectTrackingAggregator.IsAcceptable(aggEntry, result));

            case TaskConstants.Segmentation_Image:
            case TaskConstants.Segmentation_Image_MTurk:
                return(ImageSegmentationAggregator.IsAcceptable(aggEntry, result));

            case TaskConstants.OpenEndedQuestion_Image:
            case TaskConstants.OpenEndedQuestion_Image_MTurk:
                return(true);    //TBD

            case TaskConstants.TrackletLabeling:
            case TaskConstants.TrackletLabeling_MTurk:
                return(TrackletLabelingAggregator.IsAcceptable(aggEntry, result));
            }
            return(false);
        }
        //public static void Aggregate()
        //{
        //    //first get all the results that are not aggregated
        //    SatyamResultsTableAccess resultsDB = new SatyamResultsTableAccess();
        //    List<SatyamResultsTableEntry> results = resultsDB.getEntriesByStatus();

        //    //first group all the results by the tasks since wach task may ahve multiple entries
        //    Dictionary<int, List<SatyamResultsTableEntry>> collectedResults = new Dictionary<int, List<SatyamResultsTableEntry>>();
        //    foreach (SatyamResultsTableEntry entry in results)
        //    {
        //        int taskID = entry.SatyamTaskTableEntryID;
        //        if (!collectedResults.ContainsKey(taskID))
        //        {
        //            collectedResults.Add(taskID, new List<SatyamResultsTableEntry>());
        //        }
        //        collectedResults[taskID].Add(entry);
        //    }

        //    //now aggreagate the results for eacht ask.
        //    List<int> taskIDList = collectedResults.Keys.ToList();
        //    List<SatyamAggregatedResultsTableEntry> aggEntries = new List<SatyamAggregatedResultsTableEntry>();
        //    foreach (int taskId in taskIDList)
        //    {
        //        SatyamAggregatedResultsTableEntry aggEntry = GetAggregatedResultString(taskId, collectedResults[taskId]);
        //        if (aggEntry != null)
        //        {
        //            aggEntries.Add(aggEntry);
        //        }
        //    }
        //    SatyamAggregatedResultsTableAccess aggDB = new SatyamAggregatedResultsTableAccess();
        //    aggDB.AddEntries(aggEntries);
        //    resultsDB.close();
        //    aggDB.close();
        //}

        public static SatyamAggregatedResultsTableEntry GetAggregatedResultString(int taskId, List <SatyamResultsTableEntry> resultEntries)
        {
            SatyamAggregatedResultsTableEntry aggEntry = null;
            string templateType    = resultEntries[0].JobTemplateType;
            string aggResultString = null;

            switch (templateType)
            {
            case TaskConstants.Classification_Image:
            case TaskConstants.Classification_Image_MTurk:
            case TaskConstants.Classification_Video:
            case TaskConstants.Classification_Video_MTurk:
                aggResultString = SingleObjectLabelingAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.Counting_Image:
            case TaskConstants.Counting_Image_MTurk:
            case TaskConstants.Counting_Video:
            case TaskConstants.Counting_Video_MTurk:
                aggResultString = ObjectCountingAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.Detection_Image:
            case TaskConstants.Detection_Image_MTurk:
                aggResultString = MultiObjectLocalizationAndLabelingAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.Tracking:
                aggResultString = null;    //Done testing, marked null so it becomes a demo page.
                break;

            case TaskConstants.Tracking_MTurk:
                aggResultString = MultiObjectTrackingAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.TrackletLabeling:
            case TaskConstants.TrackletLabeling_MTurk:
                aggResultString = TrackletLabelingAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.Segmentation_Image:
                aggResultString = null;    //Done testing, marked null so it becomes a demo page.
                break;

            case TaskConstants.Segmentation_Image_MTurk:
                aggResultString = ImageSegmentationAggregator.GetAggregatedResultString(resultEntries);
                break;

            case TaskConstants.OpenEndedQuestion_Image:
            case TaskConstants.OpenEndedQuestion_Image_MTurk:
                break;
            }
            if (aggResultString != null)
            {
                aggEntry                        = new SatyamAggregatedResultsTableEntry();
                aggEntry.JobGUID                = resultEntries[0].JobGUID;
                aggEntry.JobTemplateType        = resultEntries[0].JobTemplateType;
                aggEntry.SatyamTaskTableEntryID = resultEntries[0].SatyamTaskTableEntryID;
                aggEntry.UserID                 = resultEntries[0].UserID;
                aggEntry.ResultString           = aggResultString;
            }
            return(aggEntry);
        }