示例#1
0
        private void Spawnable(DataObjectCollection collection, string search, IMenuLabel label, string type)
        {
            try
            {
                search     = search.ToLower().Trim();
                label.Text = "";
                DataObject data;

                if (int.TryParse(search, out int index))
                {
                    Logger.Debug("ID found: " + index);
                    data = GetByIndex(collection, index, label, type);
                    if (data == null)
                    {
                        return;
                    }
                }
                else
                {
                    Logger.Debug("Search text found: " + search);
                    data = GetByNameOrGuid(collection, search, label, type);
                    if (data == null)
                    {
                        return;
                    }
                }

                Entity result = null;
                switch (data)
                {
                case ItemData item:
                    result = GameInstance.SpawnRelic(item);
                    break;

                case EntityData enemy:
                    result = GameInstance.SpawnEnemy(enemy);
                    break;

                case AchievementData achievement:
                    GameInstance.Game.AchievementManager.SetCompleted(achievement, !achievement.Completed);
                    label.Text = $"{achievement.name} has been set to: {achievement.Completed}";
                    return;

                default:
                    label.Text = $"Invalid object! Cannot spawn a {data.name} ({data.GetType().Name})!";
                    return;
                }

                if (result == null)
                {
                    label.Text = $"{type} couldn't spawn!";
                    return;
                }
            }
            catch (Exception ex)
            {
                Logger.Error($"Error occurred when spawning {search} ({type}): {ex}");
                label.Text = "Something went wrong";
            }
        }
        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);
        }
示例#3
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);
        }
示例#4
0
 private void Spawner(DataObjectCollection collection, string type)
 {
     _spawners.Add(type, "");
     MenuRenderer.AddTextBox($"{type} Name", (t, c) => _spawners[type] = t)
     .AddButton($"Spawn {type}", (c) => Spawn(type, collection))
     .AddLabel("", out IMenuLabel label);
     _spawnerLabels.Add(type, label);
 }
示例#5
0
        private void Spawn(string type, DataObjectCollection collection)
        {
            var label  = _spawnerLabels[type];
            var search = _spawners[type];

            Logger.Debug($"Attempting to find {search} ({type})");

            Spawnable(collection, search, label, type);
        }
        /// <summary>
        /// Retrieves the user input from the value control and assigns it to Value
        /// </summary>
        internal override void ControlToValue()
        {
            //set value to null by default
            Value = null;

            //null values
            if (string.IsNullOrWhiteSpace(ValueControl.Text))
            {
                return;
            }

            //search primary KeyNotFoundException string at the end of the Text, betewwn parenthesis
            //example: My Company Inc. (id=34)
            try
            {
                string pkString = ValueControl.Text.Substring(ValueControl.Text.IndexOf('(') + 1);
                pkString = pkString.TrimEnd(')');
                pkString = pkString.Trim();

                DataObject dobj = DataObject.From(this.ValueType);
                TypeConverter.ToDataValueInstances(pkString, dobj.PrimaryKey);

                Value = dobj;
            }
            catch { }

            //if last attempt was succesfull, load selected from database and exit
            if (!NullValues.IsNull(Value))
            {
                //if select operation returns null, set value to null again
                if (DataBase.Current.Select((DataObject)Value) == null)
                {
                    Value = null;
                }

                //otherwise value is already selected and loaded, so exit
                else
                {
                    return;
                }
            }

            //otherwise search in the database for a match
            DataObjectCollection found = DataBase.Current.Search(ValueType, ValueControl.Text);

            //if found a match, get the first result, otherwise, set Value to null
            if (found.Count > 0)
            {
                Value = found[0];
            }
            else
            {
                Value = null;
            }
        }
        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);
        }
示例#8
0
        private DataObject GetByIndex(DataObjectCollection collection, int index, IMenuLabel label, string type)
        {
            index -= 1;

            if (collection.Count <= index || index < 0)
            {
                label.Text = $"Invalid {type} number! It has to be between 1 and {collection.Count}";
                return(null);
            }

            return(collection[index]);
        }
示例#9
0
        private string GetSuggestions(DataObjectCollection collection, string search)
        {
            var entities = collection.Where(t => t.name.ToLower().Contains(search.ToLower()))
                           .ToArray();

            if (entities == null || entities.Length <= 0)
            {
                return(null);
            }

            var suggestion = string.Join(", ", entities.Select(t => t.name));

            return(suggestion.Length > 64 ? suggestion.Substring(0, 64) + "..." : suggestion);
        }
		public void Construct(DataObjectCollection<GOGroupDataObject> gOGroupItems)
        {
            if (gOGroupItems == null)
                return;
				
			this.PrimaryKeys = gOGroupItems.Select(c => c.PrimaryKey).ToList();
            if (gOGroupItems.ObjectsDataSet == null)
            {
                gOGroupItems.ObjectsDataSet = ApplicationSettings.Container.Resolve<IObjectsDataSet>();
            }
	
			this.InternalObjectIds = gOGroupItems.Select(c => c.InternalObjectId).Cast<int>().ToList();
            this.ObjectsDataSet = gOGroupItems.ObjectsDataSet;
		}
示例#11
0
        private DataObject GetByNameOrGuid(DataObjectCollection collection, string search, IMenuLabel label, string type)
        {
            var entity = collection.FirstOrDefault(t =>
                                                   t.guid.ToLower() == search.ToLower() ||
                                                   t.name.ToLower() == search.ToLower());

            if (entity == null)
            {
                var suggestion = GetSuggestions(collection, search);
                label.Text = suggestion == null ? $"Couldn't find a {type} by that name or guid!" : $"Did you mean: {suggestion}";
                return(null);
            }

            return(entity);
        }
        public void Construct(DataObjectCollection <VisitedPlaceDataObject> visitedPlaceItems)
        {
            if (visitedPlaceItems == null)
            {
                return;
            }

            this.PrimaryKeys = visitedPlaceItems.Select(c => c.PrimaryKey).ToList();
            if (visitedPlaceItems.ObjectsDataSet == null)
            {
                visitedPlaceItems.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();
            }

            this.InternalObjectIds = visitedPlaceItems.Select(c => c.InternalObjectId).Cast <int>().ToList();
            this.ObjectsDataSet    = visitedPlaceItems.ObjectsDataSet;
        }
        public void Construct(DataObjectCollection <PlaceToLocationDataObject> placeToLocationItems)
        {
            if (placeToLocationItems == null)
            {
                return;
            }

            this.PrimaryKeys = placeToLocationItems.Select(c => c.PrimaryKeysCollection).ToList();
            if (placeToLocationItems.ObjectsDataSet == null)
            {
                placeToLocationItems.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();
            }

            this.InternalObjectIds = placeToLocationItems.Select(c => c.InternalObjectId).Cast <int>().ToList();
            this.ObjectsDataSet    = placeToLocationItems.ObjectsDataSet;
        }
        public void Construct(DataObjectCollection <UserProfileDataObject> userProfileItems)
        {
            if (userProfileItems == null)
            {
                return;
            }

            this.PrimaryKeys = userProfileItems.Select(c => c.PrimaryKey).ToList();
            if (userProfileItems.ObjectsDataSet == null)
            {
                userProfileItems.ObjectsDataSet = ApplicationSettings.Container.Resolve <IObjectsDataSet>();
            }

            this.InternalObjectIds = userProfileItems.Select(c => c.InternalObjectId).Cast <int>().ToList();
            this.ObjectsDataSet    = userProfileItems.ObjectsDataSet;
        }
        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 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;
        }
示例#17
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);
        }
示例#18
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);
                }
            }
        }
 public object CreateDataSetContainer(DataObjectCollection <PlaceDataObject> entityCollection)
 {
     return(new PlaceCollectionContainer(entityCollection));
 }
 public UserProfileCollectionContainer(DataObjectCollection <UserProfileDataObject> userProfileItems)
 {
     Construct(userProfileItems);
 }
示例#21
0
 public object CreateDataSetContainer(DataObjectCollection <CountryDataObject> entityCollection)
 {
     return(new CountryCollectionContainer(entityCollection));
 }
 public CountryCollectionContainer(DataObjectCollection <CountryDataObject> countryItems)
 {
     Construct(countryItems);
 }
 public GOGroupRoleCollectionContainer(DataObjectCollection <GOGroupRoleDataObject> gOGroupRoleItems)
 {
     Construct(gOGroupRoleItems);
 }
示例#24
0
 public object CreateDataSetContainer(DataObjectCollection <LocationDataObject> entityCollection)
 {
     return(new LocationCollectionContainer(entityCollection));
 }
 public object CreateDataSetContainer(DataObjectCollection <GOLoginHistoryDataObject> entityCollection)
 {
     return(new GOLoginHistoryCollectionContainer(entityCollection));
 }
 public VisitedPlaceCollectionContainer(DataObjectCollection <VisitedPlaceDataObject> visitedPlaceItems)
 {
     Construct(visitedPlaceItems);
 }
 public object CreateDataSetContainer(DataObjectCollection <GOUserDataObject> entityCollection)
 {
     return(new GOUserCollectionContainer(entityCollection));
 }
 public PlaceToLocationCollectionContainer(DataObjectCollection <PlaceToLocationDataObject> placeToLocationItems)
 {
     Construct(placeToLocationItems);
 }
示例#29
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);
        }
示例#30
0
 public LocationCollectionContainer(DataObjectCollection <LocationDataObject> locationItems)
 {
     Construct(locationItems);
 }