MissionObjectData MODLabel(MissionObjectData mod) { MissionObjectData res = mod; EditorGUILayout.BeginHorizontal(); int id = 0; if (int.TryParse(GUILayout.TextField(mod.ID.ToString(), GUILayout.Width(30)), out id)) { res.ID = id; } EditorGUILayout.Space(); Vector3 pos; res.Position = EditorGUILayout.Vector3Field("", mod.Position, GUILayout.Width(200)); EditorGUILayout.Space(); res.Name = EditorGUILayout.TextField(mod.Name, GUILayout.Width(100)); EditorGUILayout.Space(); MissionObject mo2 = DataStorageController.GetMissionObjectByID(mod.ID); if (mo2 != null) { EditorGUILayout.ObjectField(mo2.gameObject, typeof(GameObject), true, GUILayout.Width(100)); } else { EditorGUILayout.LabelField("None", GUILayout.Width(100)); } EditorGUILayout.EndHorizontal(); return(res); }
public int QueryScalar(string query, params object[] parameters) { var raw = new SqlQueryDef(query, parameters); return(DataStorageController.RunQueryScalar(Connection, raw, Transaction, CommandBehavior)); }
public void SetUp() { _appSettings = new TestApplicationSettings(); _dataPointRepository = new SqliteImportedDataPointRepository(_appSettings); var aggregateDataFileLocation = Path.Combine(_appSettings.SqliteStorageFolderLocation, _appSettings.AggregateSqliteFileName); File.Create(aggregateDataFileLocation); var sqliteOption = new DbContextOptionsBuilder <AggregateDataContext>() .UseSqlite(AggregateDataContext.GetSqliteString(aggregateDataFileLocation)) .Options; var context = new AggregateDataContext(sqliteOption); _aggregateDataRepository = new AggregateDataRepository(context, _dataPointRepository); _dataStorageController = new DataStorageController(_appSettings, _aggregateDataRepository, new EmailServiceLayer(new EmailConfiguration(), new EmailService(new EmailConfiguration()))); }
public IDbConnection GetConnection() { return(DataStorageController.GetConnection(DefaultConnectionString)); }
/// <summary> /// options may include: an IDbConnection, an IDbTransaction, CommandBehavior. Save queries should not /// include any other parameters /// </summary> /// <param name="obj"></param> /// <param name="options"></param> /// <returns></returns> public bool Save(object obj, IQueryOptions options = null) { // TODO: This method is way too long. Break it down IClassInfo classInfo = GetClassInfo(obj); if (!classInfo.DoEvent(obj, IQEventType.BeforeSave, this)) { return(false); } // Determine if the object is tracked for changes. If not, we will just save everything. IObjectData dbData; bool tracked = IQ.MapperCache.TryGetObjectData(obj, out dbData); // Determine if the object is a new record based on the primary key value bool isNew = ClassInfo.IsNew(obj); QueryType queryType = isNew ? QueryType.Insert : QueryType.Update; ISqlQueryMaker query = classInfo.GetQuery(queryType, options); bool isDirty = false; string pk = classInfo.Query.PrimaryKey; foreach (var item in classInfo.Fields) { string name = item.Name; if (!item.IsPrimaryKey && !item.IsSqlReadOnly && (isNew || !tracked || dbData.IsDirty(name))) { query.AddUpdateData(classInfo[name].SqlName, classInfo[name].GetValue(obj)); isDirty = true; } } bool success = false; if (isDirty) { if (queryType == QueryType.Insert) { if (!classInfo.DoEvent(obj, IQEventType.BeforeInsert, this)) { return(false); } int newPK = DataStorageController.RunQueryInsert(Connection, query, Transaction, CommandBehavior); if (newPK <= 0) { throw new InvalidOperationException("The record could not be inserted."); } classInfo[pk].SetValue(obj, newPK); if (!classInfo.DoEvent(obj, IQEventType.OnInsert, this)) { throw new InvalidOperationException("The operation was cancelled after the database query was executed."); } success = true; } else { if (!classInfo.DoEvent(obj, IQEventType.BeforeUpdate, this)) { return(false); } query.Where.Add(classInfo.PrimaryKeyField.Name, classInfo.PrimaryKeyField.GetValue(obj)); success = DataStorageController.RunQueryScalar(Connection, query, Transaction, CommandBehavior) > 0; if (!classInfo.DoEvent(obj, IQEventType.OnUpdate, this)) { throw new InvalidOperationException("The operation was cancelled after the database query was executed."); } } } else { success = false; } if (!classInfo.DoEvent(obj, IQEventType.OnSave, this)) { throw new InvalidOperationException("The operation was cancelled after the database query was executed."); } if (success && tracked) { dbData.Clean(); } return(success); }
void OnGUI() { // DataStorage EditorGUILayout.Separator(); EditorGUILayout.BeginVertical(GUILayout.Width(this.position.width)); _scrollPos1 = EditorGUILayout.BeginScrollView(_scrollPos1); EditorGUILayout.BeginHorizontal(); GUILayout.Label("MissionObjects", GUILayout.Width(100)); if (GUILayout.Button("Collect data", GUILayout.Width(100))) { if (EditorUtility.DisplayDialog("Confirm...", "Are you sure, baby? This will rewrite all data...", "Yep", "Nope")) { DataStorageController.Instance.GetData(); } } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); _showIslands = EditorGUILayout.ToggleLeft("Islands", _showIslands, GUILayout.Width(200)); _showBases = EditorGUILayout.ToggleLeft("Bases", _showBases, GUILayout.Width(200)); _showRunways = EditorGUILayout.ToggleLeft("Runways", _showRunways, GUILayout.Width(200)); EditorGUILayout.EndHorizontal(); if (_showIslands) { DataStorageController.Instance.MissionIslandsID = MODBlock("Islands", DataStorageController.Instance.MissionIslandsID); } if (_showBases) { DataStorageController.Instance.MissionBasesID = MODBlock("Bases", DataStorageController.Instance.MissionBasesID); } if (_showRunways) { DataStorageController.Instance.MissionRunwaysID = MODBlock("Runways", DataStorageController.Instance.MissionRunwaysID); } EditorGUILayout.Separator(); EditorGUILayout.BeginHorizontal(); GUILayout.Label("Missions - Count [" + TransportGOController.Instance.Missions.Length + "]", GUILayout.Width(100)); if (GUILayout.Button("Set defs.", GUILayout.Width(100))) { for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++) { TransportGOController.Instance.Missions[i].Targets = new MissionObjectData[5]; TransportGOController.Instance.Missions[i].MissionTitle = "Mission " + (i + 1).ToString() + " title"; TransportGOController.Instance.Missions[i].MissionText = "Mission " + (i + 1).ToString() + " text"; TransportGOController.Instance.Missions[i].Blocked = i != 0; for (int j = 0; j < 5; j++) { TransportGOController.Instance.Missions[i].Targets[j] = new MissionObjectData(); } } } if (GUILayout.Button("Upd. Dist/Pay", GUILayout.Width(100))) { for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++) { MissionInfo info = TransportGOController.Instance.Missions[i]; Vector3 rpos = DataStorageController.Instance.MissionRunwaysID[0].Position; MissionObjectData obj = info.Targets[0]; float dist = 0; if (obj != null && obj.ID != -1) { dist = Vector3.Distance(rpos, DataStorageController.GetMissionObjectByID(obj.ID).transform.position); } for (int j = 0; j < 4; j++) { MissionObject mo = DataStorageController.GetMissionObjectByID(info.Targets[j].ID); MissionObject mo2 = DataStorageController.GetMissionObjectByID(info.Targets[j + 1].ID); if (mo != null && mo2 != null) { dist += Vector3.Distance(mo.transform.position, mo2.transform.position); } else { if (mo != null) { dist += Vector3.Distance(mo.transform.position, rpos); } break; } } info.Distance = (int)dist; info.Payment = (int)(dist / 25); } } if (GUILayout.Button("Set rand targets", GUILayout.Width(100))) { for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++) { TransportGOController.Instance.Missions[i].Targets[0] = GetRandTarget(); if (i > 7) { TransportGOController.Instance.Missions[i].Targets[1] = GetRandTarget(); } if (i > 12) { TransportGOController.Instance.Missions[i].Targets[2] = GetRandTarget(); } if (i > 15) { TransportGOController.Instance.Missions[i].Targets[3] = GetRandTarget(); } } } EditorGUILayout.EndHorizontal(); _showMissionsData = EditorGUILayout.ToggleLeft("Show Missions", _showMissionsData, GUILayout.Width(200)); if (_showMissionsData) { EditorGUILayout.BeginHorizontal(); GUILayout.Label("Num", GUILayout.Width(30)); GUILayout.Label("Mission Title", GUILayout.Width(300)); GUILayout.Label("Mission Text", GUILayout.Width(300)); GUILayout.Label("Distance", GUILayout.Width(80)); GUILayout.Label("Playment", GUILayout.Width(80)); GUILayout.Label("Blocked", GUILayout.Width(50)); EditorGUILayout.EndHorizontal(); for (int i = 0; i < TransportGOController.Instance.Missions.Length; i++) { EditorGUILayout.BeginHorizontal(); MissionInfo info = TransportGOController.Instance.Missions[i]; EditorGUILayout.LabelField((i + 1).ToString(), GUILayout.Width(30)); info.MissionTitle = EditorGUILayout.TextField(info.MissionTitle, GUILayout.Width(300)); info.MissionText = EditorGUILayout.TextField(info.MissionText, GUILayout.Width(300)); info.Distance = EditorGUILayout.IntField(info.Distance, GUILayout.Width(80)); info.Payment = EditorGUILayout.IntField(info.Payment, GUILayout.Width(80)); info.Blocked = EditorGUILayout.Toggle(info.Blocked, GUILayout.Width(50)); EditorGUILayout.EndHorizontal(); if (info.Targets.Length == 5) { for (int j = 0; j < 5; j++) { EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField("Target " + (j + 1).ToString(), GUILayout.Width(80)); info.Targets[j].Objective = EditorGUILayout.TextField(info.Targets[j].Objective, GUILayout.Width(300)); MissionObject mo = DataStorageController.GetMissionObjectByID(info.Targets[j].ID); if (mo) { mo = EditorGUILayout.ObjectField(mo, typeof(MissionObject), true, GUILayout.Width(200)) as MissionObject; } else { mo = EditorGUILayout.ObjectField(null, typeof(MissionObject), true, GUILayout.Width(200)) as MissionObject; } if (mo != null) { info.Targets[j].ID = mo.ID; } EditorGUILayout.EndHorizontal(); } } } } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); }