Exemplo n.º 1
0
        /// <summary>
        /// Get the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Get(DataPackageSearchDefaultRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.EverybodyView);
            IOpenSearchResultCollection result = null;

            try {
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default/search GET"));
                Terradue.Tep.DataPackage datapackage = DataPackage.GetTemporaryForCurrentUser(context);
                datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine);

                OpenSearchEngine ose = MasterCatalogue.OpenSearchEngine;

                Type responseType = OpenSearchFactory.ResolveTypeFromRequest(HttpContext.Current.Request.QueryString, HttpContext.Current.Request.Headers, ose);

                List <Terradue.OpenSearch.IOpenSearchable> osentities = new List <Terradue.OpenSearch.IOpenSearchable>();
                osentities.AddRange(datapackage.GetOpenSearchableArray());

                var settings = MasterCatalogue.OpenSearchFactorySettings;
                MultiGenericOpenSearchable multiOSE = new MultiGenericOpenSearchable(osentities, settings);
                result = ose.Query(multiOSE, Request.QueryString, responseType);

                MasterCatalogue.ReplaceSelfLinksFormat(result, Request.QueryString);

                context.Close();
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(new HttpResult(result.SerializeToString(), result.ContentType));
        }
Exemplo n.º 2
0
        public object Post(DataPackageAddItemsToDefaultRequestTep request)
        {
            //Get all requests from database
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebDataPackageTep result;

            try{
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default/items POST"));
                DataPackage tmp = DataPackage.GetTemporaryForCurrentUser(context);
                foreach (WebDataPackageItem item in request)
                {
                    RemoteResource tmp2 = new RemoteResource(context);
                    tmp2 = item.ToEntity(context, tmp2);
                    tmp.AddResourceItem(tmp2);
                }
                result = new WebDataPackageTep(tmp);
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(result);
        }
Exemplo n.º 3
0
        public object Delete(DataPackageRemoveItemFromDefaultRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebDataPackageTep result;

            try{
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default/item DELETE"));
                DataPackage def = DataPackage.GetTemporaryForCurrentUser(context);

                foreach (RemoteResource res in def.Resources)
                {
                    var reqDPUri   = new UriBuilder(HttpUtility.UrlDecode(request.Url)).Uri.AbsoluteUri;
                    var localDPUri = new UriBuilder(HttpUtility.UrlDecode(res.Location)).Uri.AbsoluteUri;

                    reqDPUri   = reqDPUri.SetQueryParam("format", "atom");
                    localDPUri = localDPUri.SetQueryParam("format", "atom");

                    if (reqDPUri.Equals(localDPUri))
                    {
                        res.Delete();
                        break;
                    }
                }

                result = new WebDataPackageTep(def);
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(result);
        }
Exemplo n.º 4
0
        public object Delete(DataPackageClearCurrentDefaultRequestTep request)
        {
            //Get all requests from database
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebDataPackageTep result;

            try{
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default DELETE"));
                DataPackage def = DataPackage.GetTemporaryForCurrentUser(context);

                foreach (RemoteResource res in def.Resources)
                {
                    res.Delete();
                }

                result = new WebDataPackageTep(def);
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(result);
        }
Exemplo n.º 5
0
        public void SaveDataPackage()
        {
            DataPackage def = DataPackage.GetTemporaryForCurrentUser(context);
            var         res = new RemoteResource(context);

            res.Location = "https://catalog.terradue.com:443/landsat8/search?format=json&uid=LC08_L1GT_070119_20190306_20190306_01_RT";

            def.AddResourceItem(res);
            def.LoadItems();
            Assert.AreEqual(1, def.Items.Count);

            DataPackage dp = new DataPackage(context);

            dp.Name = "test-dp";
            dp.Kind = RemoteResourceSet.KINDRESOURCESETNORMAL;
            dp.Store();
            dp.LoadItems();
            Assert.AreEqual(0, dp.Items.Count);

            foreach (RemoteResource r in def.Resources)
            {
                RemoteResource tmpres = new RemoteResource(context);
                tmpres.Location = r.Location;
                dp.AddResourceItem(tmpres);
            }
            dp.LoadItems();
            Assert.AreEqual(1, dp.Items.Count);

            var res2 = new RemoteResource(context);

            res2.Location = "https://catalog.terradue.com:443/sentinel3/search?format=json&uid=S3A_SR_2_LAN____20190307T092733_20190307T093355_20190307T102301_0382_042_136______LN3_O_NR_003";
            def.AddResourceItem(res2);
            def.LoadItems();
            Assert.AreEqual(2, def.Items.Count);

            foreach (var r in dp.Resources)
            {
                r.Delete();
            }
            dp.Items = new EntityList <RemoteResource>(context);
            foreach (RemoteResource r in def.Resources)
            {
                RemoteResource tmpres = new RemoteResource(context);
                tmpres.Location = r.Location;
                dp.AddResourceItem(tmpres);
            }
            dp.LoadItems();
            Assert.AreEqual(2, dp.Items.Count);
        }
Exemplo n.º 6
0
        /// <summary>
        /// Put the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Put(DataPackageUpdateDefaultRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebDataPackageTep result;

            try{
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default PUT"));
                DataPackage def = DataPackage.GetTemporaryForCurrentUser(context);
                //we want to do the copy of a datapackage into the default one
                if (def.Identifier != request.Identifier)
                {
                    foreach (RemoteResource res in def.Resources)
                    {
                        res.Delete();
                    }
                    def.LoadItems();
                    var tmp = DataPackage.FromIdentifier(context, request.Identifier);
                    foreach (RemoteResource res in tmp.Resources)
                    {
                        RemoteResource tmpres = new RemoteResource(context);
                        tmpres.Location = res.Location;
                        def.AddResourceItem(tmpres);
                    }
                    ActivityTep activity = new ActivityTep(context, tmp, EntityOperationType.View);
                    activity.SetParam("items", tmp.Resources.Count + "");
                    activity.Store();
                }
                else
                {
                    def = (DataPackage)request.ToEntity(context, def);
                }

                result = new WebDataPackageTep(def);
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(result);
        }
Exemplo n.º 7
0
        public void SearchDataPackage()
        {
            Terradue.Tep.DataPackage datapackage = DataPackage.GetTemporaryForCurrentUser(context);
            datapackage.LoadItems();
            foreach (RemoteResource res in datapackage.Resources)
            {
                res.Delete();
            }
            datapackage.LoadItems();
            Assert.AreEqual(0, datapackage.Items.Count);

            var ressourceItem = new RemoteResource(context);

            ressourceItem.Location = "https://catalog.terradue.com:443/sentinel1/search?uid=S1A_EW_OCN__2SDH_20200108T051332_20200108T051348_030704_038509_0C1C";
            datapackage.AddResourceItem(ressourceItem);

            ressourceItem          = new RemoteResource(context);
            ressourceItem.Location = "https://catalog.terradue.com:443/sentinel1/search?uid=S1A_IW_RAW__0SSH_20200108T050838_20200108T050910_030704_038508_ED48";
            datapackage.AddResourceItem(ressourceItem);

            ressourceItem          = new RemoteResource(context);
            ressourceItem.Location = "https://catalog.terradue.com:443/sentinel1/search?uid=S1A_IW_OCN__2SDV_20200108T043336_20200108T043412_030704_038504_3458";
            datapackage.AddResourceItem(ressourceItem);

            datapackage.LoadItems();
            Assert.AreEqual(3, datapackage.Items.Count);

            datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine);

            List <Terradue.OpenSearch.IOpenSearchable> osentities = new List <Terradue.OpenSearch.IOpenSearchable>();

            osentities.AddRange(datapackage.GetOpenSearchableArray());

            var settings = MasterCatalogue.OpenSearchFactorySettings;
            MultiGenericOpenSearchable multiOSE = new MultiGenericOpenSearchable(osentities, settings, true);

            var parameters = new NameValueCollection();

            IOpenSearchResultCollection osr = ose.Query(multiOSE, parameters);

            Assert.AreEqual(3, osr.TotalResults);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Get the specified request.
        /// </summary>
        /// <param name="request">Request.</param>
        public object Get(DataPackageDescriptionDefaultRequestTep request)
        {
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);

            try {
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default/description GET"));
                Terradue.Tep.DataPackage datapackage = DataPackage.GetTemporaryForCurrentUser(context);
                datapackage.SetOpenSearchEngine(MasterCatalogue.OpenSearchEngine);
                OpenSearchDescription osd = datapackage.GetLocalOpenSearchDescription();

                context.Close();

                return(new HttpResult(osd, "application/opensearchdescription+xml"));
            } catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }
        }
Exemplo n.º 9
0
        public object Post(DataPackageSaveDefaultRequestTep request)
        {
            //Get all requests from database
            var context = TepWebContext.GetWebContext(PagePrivileges.UserView);
            WebDataPackageTep result;

            try{
                context.Open();
                context.LogInfo(this, string.Format("/data/package/default POST"));

                DataPackage def = DataPackage.GetTemporaryForCurrentUser(context);
                DataPackage tmp = new DataPackage(context);

                context.StartTransaction();

                if (string.IsNullOrEmpty(request.Identifier) && string.IsNullOrEmpty(request.Name))
                {
                    throw new Exception("No identifier set");
                }
                //var identifier = !string.IsNullOrEmpty(request.Identifier) ? TepUtility.ValidateIdentifier(request.Identifier) : TepUtility.ValidateIdentifier(request.Name);

                if (request.Overwrite && tmp.OwnerId == context.UserId)
                {
                    tmp = DataPackage.FromNameAndOwner(context, request.Name, context.UserId);
                    foreach (var res in tmp.Resources)
                    {
                        res.Delete();
                    }
                    tmp.Items = new EntityList <RemoteResource>(context);
                }
                else
                {
                    tmp = (DataPackage)request.ToEntity(context, tmp);
                    //tmp.Identifier = identifier;
                    try{
                        tmp.Store();
                    }catch (DuplicateEntityIdentifierException e) {
                        //tmp = DataPackage.FromIdentifier(context, identifier);
                        //if(tmp.OwnerId == context.UserId){
                        throw new DuplicateNameException(e.Message);
                        //} else {
                        //    throw e;
                        //}
                    }catch (Exception e) {
                        if (e.Message.StartsWith("Duplicate entry"))
                        {
                            throw new DuplicateNameException(e.Message);
                        }
                        throw e;
                    }
                }

                foreach (RemoteResource res in def.Resources)
                {
                    RemoteResource tmpres = new RemoteResource(context);
                    tmpres.Location = res.Location;
                    tmp.AddResourceItem(tmpres);
                }
                context.Commit();

                result = new WebDataPackageTep(tmp);
                context.Close();
            }catch (Exception e) {
                context.LogError(this, e.Message, e);
                context.Close();
                throw e;
            }

            return(result);
        }