public DataObjectCollection <UserProfileDataObject> ExtractUserProfileItems()
        {
            if (InternalObjectIds == null)
            {
                return(null);
            }

            var result = new DataObjectCollection <UserProfileDataObject> {
                ObjectsDataSet = this.ObjectsDataSet
            };

            result.ObjectsDataSet.DirtyHandlerOn = false;
            result.ObjectsDataSet.NotifyChanges  = false;


            foreach (var internalObjectId in InternalObjectIds)
            {
                var item = this.ObjectsDataSet.GetObject <UserProfileDataObject>(typeof(UserProfileDataObject), internalObjectId);
                result.Add(item);
            }

            result.ObjectsDataSet.DirtyHandlerOn = true;
            result.ObjectsDataSet.NotifyChanges  = true;

            return(result);
        }
示例#2
0
        public override DataObjectCollection <TDataObject> GetRelatedObjects <TDataObject>(IDataObject rootObject, string relationName)
        {
            if (relationName == "VisitedPlaceItems")
            {
                IEnumerable <VisitedPlaceDataObject> relatedObjects;
                relatedObjects = _rootObjectDataSet.VisitedPlaceObjectsDataSet.GetVisitedPlaceItemsForCountry(rootObject as CountryDataObject);

                var result = new DataObjectCollection <TDataObject>();

                if (relatedObjects != null)
                {
                    result.NotifyChanges = false;

                    foreach (var relatedObject in relatedObjects)
                    {
                        result.Add(relatedObject as TDataObject);
                    }

                    result.NotifyChanges = true;
                }

                result.ObjectsDataSet = this._rootObjectDataSet;

                return(result);
            }

            return(null);
        }
        protected override DataObjectCollection <GORoleDataObject> DoGetCollection(LambdaExpression securityFilterExpression, string filterPredicate, object[] filterArguments, string orderByPredicate, int pageNumber, int pageSize, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters)
        {
            var result = new DataObjectCollection <GORoleDataObject>();

            result.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

            result.Add(new GORoleDataObject()
            {
                Name                  = "Guest",
                DisplayName           = "Guest",
                PasswordExpiry        = null,
                PasswordRegEx         = null,
                PasswordPolicySummary = null,
                IsNew                 = false,
                IsDirty               = false
            });

            result.Add(new GORoleDataObject()
            {
                Name                  = "User",
                DisplayName           = "User",
                PasswordExpiry        = null,
                PasswordRegEx         = null,
                PasswordPolicySummary = null,
                IsNew                 = false,
                IsDirty               = false
            });

            result.Add(new GORoleDataObject()
            {
                Name                  = "Administrator",
                DisplayName           = "Administrator",
                PasswordExpiry        = null,
                PasswordRegEx         = null,
                PasswordPolicySummary = null,
                IsNew                 = false,
                IsDirty               = false
            });

            return(result);
        }
        public override DataObjectCollection <TDataObject> GetRelatedObjects <TDataObject>(IDataObject rootObject, string relationName)
        {
            if (relationName == "UserGroupItems")
            {
                IEnumerable <GOUserGroupDataObject> relatedObjects;
                relatedObjects = _rootObjectDataSet.GOUserGroupObjectsDataSet.GetUserGroupItemsForUser(rootObject as GOUserDataObject);

                var result = new DataObjectCollection <TDataObject>();

                if (relatedObjects != null)
                {
                    result.NotifyChanges = false;

                    foreach (var relatedObject in relatedObjects)
                    {
                        result.Add(relatedObject as TDataObject);
                    }

                    result.NotifyChanges = true;
                }

                result.ObjectsDataSet = this._rootObjectDataSet;

                return(result);
            }


            if (relationName == "UserRoleItems")
            {
                IEnumerable <GOUserRoleDataObject> relatedObjects;
                relatedObjects = _rootObjectDataSet.GOUserRoleObjectsDataSet.GetUserRoleItemsForUser(rootObject as GOUserDataObject);

                var result = new DataObjectCollection <TDataObject>();

                if (relatedObjects != null)
                {
                    result.NotifyChanges = false;

                    foreach (var relatedObject in relatedObjects)
                    {
                        result.Add(relatedObject as TDataObject);
                    }

                    result.NotifyChanges = true;
                }

                result.ObjectsDataSet = this._rootObjectDataSet;

                return(result);
            }

            return(null);
        }
		public DataObjectCollection<GOGroupDataObject> ExtractGOGroupItems()
        {
			if (InternalObjectIds == null)
				return null;

            var result = new DataObjectCollection<GOGroupDataObject> {ObjectsDataSet = this.ObjectsDataSet };

			result.ObjectsDataSet.DirtyHandlerOn = false;
			result.ObjectsDataSet.NotifyChanges = false;


			foreach (var internalObjectId in InternalObjectIds)
            {
                var item = this.ObjectsDataSet.GetObject<GOGroupDataObject>(typeof(GOGroupDataObject), internalObjectId);
                result.Add(item);
            }

			result.ObjectsDataSet.DirtyHandlerOn = true;
			result.ObjectsDataSet.NotifyChanges = true;
		
            return result;
        }
示例#6
0
        protected override DataObjectCollection <UserProfileDataObject> DoGetCollection(LambdaExpression securityFilterExpression, string filterPredicate, object[] filterArguments, string orderByPredicate, int pageNumber, int pageSize, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters)
        {
            DataObjectCollection <UserProfileDataObject> result = new DataObjectCollection <UserProfileDataObject>();

            result.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

            foreach (var arg in filterArguments[0] as string[])
            {
                var uri = arg;

                try
                {
                    var userprofile = DoGet(new UserProfileDataObject(uri), null, null, context, parameters);

                    result.Add(userprofile);
                }
                catch (Exception)
                {
                }
            }


            return(result);
        }
示例#7
0
        protected override DataObjectCollection <PlaceDataObject> DoGetCollection(LambdaExpression securityFilterExpression, string filterPredicate, object[] filterArguments, string orderByPredicate, int pageNumber, int pageSize, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters)
        {
            SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org");

            var regex = new Regex("Name\\.Contains\\(\"(.*)\"\\)");

            string nameFilter = null;
            var    match      = regex.Match(filterPredicate);

            if (match.Success)
            {
                nameFilter = match.Groups[1].Value;
            }
            else if (filterPredicate.Contains("(@0.Contains(outerIt.URI))"))
            {
                var places = new DataObjectCollection <PlaceDataObject>();
                places.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

                foreach (var arg in filterArguments[0] as string[])
                {
                    try
                    {
                        var uri   = arg;
                        var place = DoGet(new PlaceDataObject(uri), null, includes, context, parameters);
                        places.Add(place);
                    }
                    catch (Exception)
                    { }
                }

                return(places);
            }

            string query = @"SELECT distinct(?place), ?name, ?abstract
                                WHERE {
                                {?place a <http://dbpedia.org/ontology/HistoricPlace>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/Monument>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/Garden>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/Cemetery>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/ArchitecturalStructure>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/Park>}
                                UNION
                                {?place a <http://dbpedia.org/ontology/NaturalPlace>}
                                ?place rdfs:label ?name .
                                ?place dbo:abstract ?abstract .

                                FILTER langMatches(lang(?name), 'en')
                                FILTER langMatches(lang(?abstract), 'en')";

            if (!String.IsNullOrEmpty(nameFilter))
            {
                query += $"FILTER regex(?name,\"{nameFilter}\",\"i\")";
            }

            query += "}";

            if (pageNumber != 0 || pageSize != 0)
            {
                query += $"LIMIT {pageSize} OFFSET {(pageNumber - 1) * pageSize}";
            }

            //Make a SELECT query against the Endpoint
            SparqlResultSet results = endpoint.QueryWithResultSet(query);

            var toReturn = new DataObjectCollection <PlaceDataObject>();

            toReturn.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

            foreach (var result in results)
            {
                var place = new PlaceDataObject();

                place.URI      = (result.Where(r => r.Key == "place").Single().Value as UriNode).Uri.ToString();
                place.Name     = (result.Where(r => r.Key == "name").Single().Value as BaseLiteralNode).Value;
                place.Abstract = (result.Where(r => r.Key == "abstract").Single().Value as BaseLiteralNode)?.Value;
                place.IsNew    = false;
                place.IsDirty  = false;

                toReturn.Add(place);
            }

            return(toReturn);
        }
示例#8
0
        protected override DataObjectCollection <VisitedPlaceDataObject> DoGetCollection(LambdaExpression securityFilterExpression, string filterPredicate, object[] filterArguments, string orderByPredicate, int pageNumber, int pageSize, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters)
        {
            var userUri = GetUserBaseUriFromFilter(filterPredicate);

            if (userUri == null)
            {
                // search all the users registered in application
                var userNames = DataFacade.GOUserDataProvider.GetCollection(null).Select(u => u.UserName);
                var toReturn  = new DataObjectCollection <VisitedPlaceDataObject>();
                toReturn.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

                foreach (var userName in userNames)
                {
                    try
                    {
                        var userfilter       = $"UserProfileUri == \"{userName}\" && {filterPredicate}";
                        var subvisitedplaces = DoGetCollection(securityFilterExpression, userfilter, filterArguments, orderByPredicate, 0, 0, includes, context, parameters);

                        foreach (var subvisitedplace in subvisitedplaces)
                        {
                            toReturn.Add(subvisitedplace);
                        }
                    }
                    catch (Exception e)
                    { }
                }

                return(toReturn);
            }


            string visitedPlaceDocumentName = "myvisitedplaces.ttl";
            string visitedPlaceDocumentUri  = $"{userUri}/public/{visitedPlaceDocumentName}";
            string tempfile = null;

            var placeUriFilter   = GetPropertyFromFilter(filterPredicate, "PlaceURI");
            var countryUriFilter = GetPropertyFromFilter(filterPredicate, "CountryURI");

            try
            {
                tempfile = DataProviderHelper.DownloadFile(visitedPlaceDocumentUri, ".ttl");

                var g = new Graph();
                g.LoadFromFile(tempfile);
                //UriLoader.Load(g, new Uri(visitedPlaceDocumentUri)); // NOT WORKING ... ??? SOMEHOW SHOULD WORK


                var query = new SparqlParameterizedString();

                if (placeUriFilter == null && countryUriFilter == null)
                {
                    query.CommandText = @"SELECT *
                                      WHERE 
                                        { 
                                            ?VisitedPlace a <http://generativeobjects.com/apps#VisitedPlace> ; 
                                            <http://schema.org/startDate> ?Date;
                                            <http://schema.org/description> ?Description .
                                            OPTIONAL {
                                                ?VisitedPlace <http://generativeobjects.com/apps#VisitedPlaceType> ?PlaceOrCountry .
                                            }
                                            OPTIONAL {
                                                ?VisitedPlace <http://dbpedia.org/ontology/Place> ?PlaceURI .
                                            }
                                            OPTIONAL {
                                                ?VisitedPlace <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> ?CountryURI .
                                           }
                                        } ";
                    ////<http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> ?CountryURI ;
                    if (pageNumber != 0 || pageSize != 0)
                    {
                        query.CommandText += $"LIMIT {pageSize} OFFSET {(pageNumber - 1) * pageSize}";
                    }
                }
                else if (placeUriFilter != null)
                {
                    query.CommandText = @"SELECT *
                                      WHERE 
                                        { 
                                            ?VisitedPlace a <http://generativeobjects.com/apps#VisitedPlace> ; 
                                            <http://dbpedia.org/ontology/Place> @PlaceUri ;
                                            <http://schema.org/startDate> ?Date;
                                            <http://schema.org/description> ?Description .
                                            
                                            OPTIONAL {
                                                ?VisitedPlace <http://generativeobjects.com/apps#VisitedPlaceType> ?PlaceOrCountry .
                                            }
                                        } ";

                    query.SetUri("@PlaceUri", new Uri(placeUriFilter));
                }
                else
                {
                    query.CommandText = @"SELECT *
                                      WHERE 
                                        { 
                                            ?VisitedPlace a <http://generativeobjects.com/apps#VisitedPlace> ; 
                                            <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> @CountryURI ;
                                            <http://schema.org/startDate> ?Date;
                                            <http://schema.org/description> ?Description .

                                            OPTIONAL {
                                                ?VisitedPlace <http://generativeobjects.com/apps#VisitedPlaceType> ?PlaceOrCountry .
                                            }
                                        } ";

                    query.SetUri("@CountryURI", new Uri(countryUriFilter));
                }

                var results = (SparqlResultSet)g.ExecuteQuery(query);

                var toReturn = new DataObjectCollection <VisitedPlaceDataObject>();
                toReturn.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

                foreach (var result in results)
                {
                    var visitedPlace = MapSparqlResultToVisitedPlace(result);
                    visitedPlace.UserProfileUri = GetPropertyFromFilter(filterPredicate, "UserProfileUri");
                    toReturn.Add(visitedPlace);
                }

                return(toReturn);
            }
            finally
            {
                if (File.Exists(tempfile))
                {
                    File.Delete(tempfile);
                }
            }
        }
示例#9
0
        protected override DataObjectCollection <CountryDataObject> DoGetCollection(LambdaExpression securityFilterExpression, string filterPredicate, object[] filterArguments, string orderByPredicate, int pageNumber, int pageSize, List <string> includes, IObjectsDataSet context, Dictionary <string, object> parameters)
        {
            if (filterPredicate.Contains("(@0.Contains(outerIt.URI))"))
            {
                var countries = new DataObjectCollection <CountryDataObject>();
                countries.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

                foreach (var arg in filterArguments[0] as string[])
                {
                    try
                    {
                        var uri     = arg;
                        var country = DoGet(new CountryDataObject(uri), null, includes, context, parameters);
                        countries.Add(country);
                    }
                    catch (Exception)
                    { }
                }

                return(countries);
            }

            SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri("http://dbpedia.org/sparql"), "http://dbpedia.org");

            string query = @"SELECT ?country, ?countryName, ?longName, ?flag, ?populationTotal, MAX(?populationDensity) as ?density ,  ?abstract
                             WHERE {
                                ?country a <http://dbpedia.org/class/yago/WikicatMemberStatesOfTheUnitedNations> .
                                ?country rdfs:label ?countryName .

                                FILTER langMatches(lang(?countryName), 'en')

                                OPTIONAL {
                                ?country dbo:longName ?longName.
                                ?country dbo:abstract ?abstract.
                                ?country dbo:flag ?flag.
                                ?country dbo:populationTotal ?populationTotal .
                                ?country dbo:populationDensity ?populationDensity

                                FILTER langMatches(lang(?longName), 'en')
                                FILTER langMatches(lang(?abstract), 'en')
                                FILTER (?longName !=  ""font-size:88%;""@en)
                                }
                                }
                                ORDER BY ?countryName
                                ";

            if (pageNumber != 0 || pageSize != 0)
            {
                query += $"LIMIT {pageSize} OFFSET {(pageNumber - 1) * pageSize}";
            }

            //Make a SELECT query against the Endpoint
            SparqlResultSet results = endpoint.QueryWithResultSet(query);

            var toReturn = new DataObjectCollection <CountryDataObject>();

            toReturn.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();

            foreach (var result in results)
            {
                var country = new CountryDataObject();

                country.URI      = (result.Where(r => r.Key == "country").Single().Value as UriNode).Uri.ToString();
                country.Name     = (result.Where(r => r.Key == "countryName").Single().Value as BaseLiteralNode).Value;
                country.LongName = (result.Where(r => r.Key == "longName").Single().Value as BaseLiteralNode)?.Value;
                country.Abstract = (result.Where(r => r.Key == "abstract").Single().Value as BaseLiteralNode)?.Value;
                country.IsNew    = false;
                country.IsDirty  = false;

                toReturn.Add(country);
            }

            return(toReturn);
        }