public void Present(MultimediaObject mmo)
 {
     DisplayInfo(mmo);
     imagePresenter.LoadImage(CineastUtils.GetThumbnailUrl(mmo));
     active          = mmo;
     titleLabel.text = "Result " + mmo.resultIndex;
 }
/**
 * Takes an Int and returns an Exhibit[] with filled with the specific number of Exhibits
 */
    private static Exhibit[] getExhibits(int number, List <String> ids)
    {
        Exhibit[]     re = new Exhibit[number];
        List <String> id = ids;
        Exhibit       add;
        float         pos  = 1;
        int           name = 1;

        for (int i = 0; i < number; i++)
        {
            var exhibitToAdd = new Exhibit
            {
                path        = CineastUtils.GetImageUrlbyID(id[i]),
                name        = name.ToString(),
                position    = new Vector3(pos, 1.5f, 1),
                size        = new Vector3(1, 1, 1),
                id          = "" + i,
                type        = "IMAGE",
                light       = false,
                description = ""
            };
            pos += 1.5f;
            name++;
            re[i] = exhibitToAdd;
        }


        return(re);
    }
Example #3
0
    public void Present(MultimediaObject mmo, bool loadInRange = true)
    {
        Debug.Log("Presenting " + mmo.id);
        //panelSwitcher.SwitchToDisplay();

        panelManager.ShowPanel("display");

        presenter.LoadImage(CineastUtils.GetImageUrl(mmo));
        logger.Debug("URL: " + CineastUtils.GetImageUrl(mmo));


        alphaController.SetAlpha(0.5f);

        if (controller.GetHeading(mmo) != -1)
        {
            headingDisplay.targetHeading = controller.GetHeading(mmo);
        }

        infoText.text = string.Format("Index: {0}\nDate: {1}", mmo.resultIndex, FormatDate(mmo));
        activeMmo     = mmo;

        if (loadInRange)
        {
            Debug.Log("LOAD IN RANGE");
            List <MultimediaObject> inRangeList = controller.GetInRange(activeMmo);
            temporalSlider.Setup(inRangeList, activeMmo); // ArgumentNull in DatetimeParser, parameter name s
        }

        controller.StopLocationServices();
        // TODO Remove activeMMO and restart location service
    }
Example #4
0
        public void GoMultiTermQuery(SimilarQuery query)
        {
            logger.Debug("GoMultiQuery");
            ChangeState(State.CINEAST_REQUEST);
            Clean();
            ResetSession();
            uiManager.panelManager.ShowPanel("waiting");
            CategoryRatio cr = CineastUtils.CreateUniformRatio(query);

            logger.Debug("Ratios: " + cr.ToString());
            cineast.RequestWeightedSimilarAndThen(query, cr, HandleCineastResult);
        }
Example #5
0
        private void Display3D(MultimediaObject mmo)
        {
            logger.Debug("Displaying AR style! " + mmo.id);
            var scrn         = Instantiate(ScreenPrefab);
            var mmoContainer = scrn.AddComponent <MMOContainer>();
            var textured     = scrn.GetComponentInChildren <WebTextured>();

            if (textured == null)
            {
                textured = scrn.AddComponent <WebTextured>();
            }
            textured.url = CineastUtils.GetImageUrl(mmo); // Too high res?
            //textured.url = CineastUtils.GetThumbnailUrl(mmo);
            textured.LoadImageFromWeb();
            mmoContainer.MultimediaObject = mmo;
            var geoposed = scrn.AddComponent <GeoPositioned>();

            geoposed.GeoCoordinates = new GeoArithmetic.GeoCoordinates(mmo.latitude, mmo.longitude);
            geoposed.Bearing        = (float)mmo.bearing;
            arMapper.AddGeoPositioned(geoposed);
            ActiveScreens.Add(scrn);
        }
Example #6
0
    private void AddObjectToScroll(MultimediaObject mmo)
    {
        Debug.Log(":AddObjectToScroll " + (mmo != null ? JsonUtility.ToJson(mmo) : "null"));
        GameObject panel = Instantiate(prefab);

        Debug.Log("panel: " + (panel == null ? "null" : "found"));
        panel.transform.SetParent(scrollContent, false);

        var ctrl = panel.GetComponent <DisplayController>();

        Debug.Log("ctrl " + (ctrl == null ? "Null" : "received"));
        ctrl.SetTitle(string.Format("Result: {0}", mmo.resultIndex));
        Debug.Log("initalGeoLoc: " + (initialGeoLocation == null ? "null" : "present"));
        double dist = Utilities.HaversineDistance(mmo.latitude, mmo.longitude, initialGeoLocation.latitude,
                                                  initialGeoLocation.longitude);
        string footerText = string.Format("Distance: {0}m\nDate: {1}", Round(dist), FormatDate(mmo));

        ctrl.SetFooter(footerText);
        ctrl.LoadImageFromWeb(CineastUtils.GetThumbnailUrl(mmo));
        ctrl.Mmo        = mmo;
        ctrl.UiManager  = this;
        ctrl.Controller = controller;
    }
        private IEnumerator ExecuteMultiQuery(SimilarQuery query, CategoryRatio ratio, string guid = null)
        {
            // === SIMILAR ===
            // Initial SimilarQuery
            yield return(similarRequest = CineastUtils.BuildSimilarRequest(CineastUtils.Configuration.FindSimilarSegmentsUrl(), query));

            // Parse response
            earlyBreak = !Parse(similarRequest.text, out similarResult);
            yield return(similarResult);

            if (earlyBreak)
            {
                yield break;
            }

            // Check if empty
            if (similarResult.IsEmpty())
            {
                earlyBreak = true;
                yield break; // Stop and
            }

            ContentObject[] tempResult = CineastUtils.ExtractContentObjects(similarResult);

            if (ratio != null && similarResult.results.Length > 1)
            {
                ResultMerger merger = new ResultMerger();
                tempResult = merger.Merge(similarResult.results, ratio)
                             .ToArray();
            }

            // === SEGMENTS ===
            // segments
            yield return(segmentRequest =
                             CineastUtils.BuildSegmentRequest(CineastUtils.Configuration.FindSegmentsByIdUrl(),
                                                              CineastUtils.ExtractIdArray(tempResult)));

            // parse response
            earlyBreak = !Parse(segmentRequest.text, out segmentResult);
            yield return(segmentResult);

            if (earlyBreak)
            {
                yield break;
            }

            // === METAS ===
            yield return(metaRequest =
                             CineastUtils.BuildMetadataRequest(CineastUtils.Configuration.FindMetadataUrl(),
                                                               CineastUtils.ExtractIdArray(segmentResult.content)));

            earlyBreak = !Parse(metaRequest.text, out metaResult);
            yield return(metaResult);

            if (earlyBreak)
            {
                yield break;
            }
            // meta->mmo
            objectList = CineastUtils.Convert(metaResult.content);

            // === OBJECTS ===
            yield return(objectRequest =
                             CineastUtils.BuildObjectsRequest(CineastUtils.Configuration.FindObjectsUrl(),
                                                              CineastUtils.ExtractIdArray(objectList.ToArray())));

            yield return(objectsResult = JsonUtility.FromJson <ObjectsResult>(objectRequest.text));

            // merge results
            List <MultimediaObject> objects = CineastUtils.Convert(objectsResult.content);

            foreach (MultimediaObject mmo in objects)
            {
                if (objectList.Contains(mmo))
                {
                    objectList.Find(o => o.Equals(mmo)).Merge(mmo);
                }
            }

            results = new List <MultimediaObject>(objectList);

            // === WRAPUP ===
            foreach (MultimediaObject mmo in objectList)
            {
                mmo.resultIndex = CineastUtils.GetIndexOf(mmo, similarResult) + 1;
            }

            // === SORT LIST ===
            objectList.Sort(Comparison);

            List <MultimediaObject> transferList;

            if (filterEngine != null)
            {
//                logger.Debug("FilterEngine installed with " + filterEngine.GetFilterCount() + " filters.");
                transferList = filterEngine.ApplyFilters(objectList);
            }
            else
            {
//                logger.Debug("No FilterEngine installed - no filtering");
                transferList = objectList;
            }


            // cleanup
            finished = true;
            if (guid == null)
            {
                // LEGACY
                if (queryFinishedCallback != null)
                {
                    //                logger.Info("Query completed, passing resulting MultimediaObject list to callback");
                    queryFinishedCallback.Invoke(transferList);
                }
            }
            else
            {
                CineastResponseHandler <List <MultimediaObject> > handler = _guidHandlerMap[guid];
                if (handler != null)
                {
                    handler.onSuccess(transferList);
                }
            }

            yield return(true);
        }
        private IEnumerator ExecuteQuery(SimilarQuery query, string guid = null)
        {
            // === SIMILAR ===
            // Initial SimilarQuery
//            logger.Debug("Starting initial similar request.\n" + JsonUtility.ToJson(query));
            yield return(similarRequest = CineastUtils.BuildSimilarRequest(CineastUtils.Configuration.FindSimilarSegmentsUrl(), query));

//            logger.Debug("Received similar response: " + similarRequest.text);

            // Parse response
            earlyBreak = !Parse(similarRequest.text, out similarResult);
            yield return(similarResult);

            if (earlyBreak)
            {
//                logger.Error("HTTP error upon similar response");
                yield break;
            }

//            logger.Info("Successfully parsed similar response");

            // Check if empty
            if (similarResult.IsEmpty())
            {
                earlyBreak = true;
//                logger.Error("Empty similar result");
                yield break; // Stop and
            }

            // === SEGMENTS ===
            // segments
//            logger.Debug("Starting segments query");
            yield return(segmentRequest =
                             CineastUtils.BuildSegmentRequest(CineastUtils.Configuration.FindSegmentsByIdUrl(),
                                                              CineastUtils.ExtractIdArray(CineastUtils.ExtractContentObjects(similarResult))));

//            logger.Debug("Received segments response:\n" + segmentRequest.text);
            // parse response
            earlyBreak = !Parse(segmentRequest.text, out segmentResult);
            yield return(segmentResult);

            if (earlyBreak)
            {
//                logger.Error("HTTP error upon segments response");
                yield break;
            }

//            logger.Info("Successfully parsed segments response");

            // === METAS ===
//            logger.Debug("Starting metadata request");
            yield return(metaRequest =
                             CineastUtils.BuildMetadataRequest(CineastUtils.Configuration.FindMetadataUrl(),
                                                               CineastUtils.ExtractIdArray(segmentResult.content)));

//            logger.Debug("Received metadata response:\n" + metaRequest.text);
            earlyBreak = !Parse(metaRequest.text, out metaResult);
            yield return(metaResult);

            if (earlyBreak)
            {
//                logger.Error("HTTP error upon metadata response");
                yield break;
            }

//            logger.Info("Successfully parsed metadata response");
            // meta->mmo

            objectList = CineastUtils.Convert(metaResult.content);
//            logger.Info("Successfully converted metadata result to MultimediaObjects");


            // === OBJECTS ===
//            logger.Debug("Starting object query");
            yield return(objectRequest =
                             CineastUtils.BuildObjectsRequest(CineastUtils.Configuration.FindObjectsUrl(),
                                                              CineastUtils.ExtractIdArray(objectList.ToArray())));

//            logger.Debug("Received objects response:\n" + objectRequest.text);

            yield return(objectsResult = JsonUtility.FromJson <ObjectsResult>(objectRequest.text));

//            logger.Info("Successfully parsed objects response");

            // merge results
            List <MultimediaObject> objects = CineastUtils.Convert(objectsResult.content);

//            logger.Debug("Successfully converted object result to MultimediaObjects");
            foreach (MultimediaObject mmo in objects)
            {
                if (objectList.Contains(mmo))
                {
                    objectList.Find(o => o.Equals(mmo)).Merge(mmo);
                }
            }

//            logger.Info("Finished merging different MultimediaObject lists");

            results = new List <MultimediaObject>(objectList);

            // === WRAPUP ===
//            logger.Debug("Applying result index to MultimediaObject list");
            foreach (MultimediaObject mmo in objectList)
            {
                mmo.resultIndex = CineastUtils.GetIndexOf(mmo, similarResult) + 1;
            }

//            logger.Info("Result contains " + objectList.Count + " entities");
//            logger.Debug("Full result list:\n" + DumpMMOList(objectList));


            // === SORT LIST ===
//            logger.Debug("Sorting list");
            objectList.Sort(
                Comparison);
//            logger.Debug("Sorted list: \n" + DumpMMOList(objectList));

            List <MultimediaObject> transferList;

            if (filterEngine != null)
            {
//                logger.Debug("FilterEngine installed with " + filterEngine.GetFilterCount() + " filters.");
                transferList = filterEngine.ApplyFilters(objectList);
            }
            else
            {
//                logger.Debug("No FilterEngine installed - no filtering");
                transferList = objectList;
            }


            // cleanup
            finished = true;
            if (guid == null)
            {
                // LEGACY
                if (queryFinishedCallback != null)
                {
                    //                logger.Info("Query completed, passing resulting MultimediaObject list to callback");
                    queryFinishedCallback.Invoke(transferList);
                }
            }
            else
            {
                CineastResponseHandler <List <MultimediaObject> > handler = _guidHandlerMap[guid];
                if (handler != null)
                {
                    handler.onSuccess(transferList);
                }
            }

            yield return(true);
        }
Example #9
0
 private void SetTimeTerm(int lower, int upper)
 {
     timeTerm = QueryFactory.BuildTimeTerm(CineastUtils.ConvertYearToISO8601((lower + upper) / 2));
 }