public void EffectsFromSQLResults(AbstractRunnable sender, FinishedQueueEventHandlerArgs e) { lock (loadLock) { sqlResults = e.GetSQLResults(); // return if there is nothing to process if ((sqlResults == null) || (sqlResults.Count < 2)) { return; } // convert the data-strings to their respective types ConvertSQLResults(sqlResults, colGetTypeInfo); var tableEffect = sqlResults[DBTableLoadOrder.IndexOf("Effect")]; var tableChange = sqlResults[DBTableLoadOrder.IndexOf("Change")]; List <IDAndChanges> idAndChangesList = null; if (!TryGenerateIDAndChanges(tableChange, out idAndChangesList)) { MakeLogError("Aborting effect generation due to" + " failed generation of Changes from raw database-data!"); return; } List <int> failedIndices; if (!TryGenerateEffects(idAndChangesList, out effectByID, out failedIndices)) { StringBuilder sb = new StringBuilder(); sb.Append("Failed to generate Effects with [temporary index | EffectID]: "); for (int i = 0; i < failedIndices.Count; i++) { sb.Append("["); sb.Append(i); sb.Append("|"); if ((failedIndices[i] < 0) || (failedIndices[i] > (idAndChangesList.Count - 1))) { sb.Append("?"); } else { sb.Append(failedIndices[i]); } sb.Append("],"); } MakeLogError(sb.ToString()); } } // no return value necessary because final results, effectsByID, is already saved as property in the loader }
protected void VobDefFromSQLResults(AbstractRunnable s, DBAgent.FinishedQueueEventHandlerArgs e) { try { var cgi = GetColGetTypeInfo(); // convert the received database-results List <List <List <object> > > sqlResults = e.GetSQLResults(); DBTables.ConvertSQLResults(sqlResults, cgi); int i_VobDef = DBTableLoadOrder.IndexOf("VobDef"); List <DBTables.ColumnGetTypeInfo> cgt_VobDef = cgi[i_VobDef]; List <List <object> > tableVobDef = sqlResults[DBTableLoadOrder.IndexOf("VobDef")]; int i_VobDefEffect = DBTableLoadOrder.IndexOf("VobDefEffect"); List <DBTables.ColumnGetTypeInfo> cgt_VobDefEffect = cgi[i_VobDefEffect]; List <List <object> > tableVobDefEffect = sqlResults[DBTableLoadOrder.IndexOf("VobDefEffect")]; Dictionary <int, Effect> effectByID = null; //EffectLoader effectLoader = new EffectLoader(dbFilePath, "Vob"); EffectLoader effectLoader = new EffectLoader(GetDBFilePath(), "DefEffect", "DefChange"); effectLoader.Load(true, (object sender, EffectLoader.FinishedLoadingEffectsArgs eff) => { effectByID = eff.EffectsByID; }); if ((effectByID == null) || (effectByID.Count < 1)) { MakeLogError("Aborting generation of VobDef because no Effects were loaded!"); return; } List <IDAndEffectIDs> idAndEffectIDList = null; if (!TryGenerateIDAndEffectIDList(tableVobDefEffect, out idAndEffectIDList)) { MakeLogWarning("The provided parameter tableVobDefEffect was either null " + "or didn't contain any elements!"); } List <int> failedIndices; if (!TryGenerateVobDefs(idAndEffectIDList, effectByID, out vobDefByID, out failedIndices)) { MakeLogError("Generation of VobDef failed!"); StringBuilder sb = new StringBuilder(); sb.Append("Failed to generate VobDef with [temporary index | VobDefID]: "); for (int i = 0; i < failedIndices.Count; i++) { sb.Append("["); sb.Append(i); sb.Append("|"); if ((failedIndices[i] < 0) || (failedIndices[i] > (idAndEffectIDList.Count - 1))) { sb.Append("?"); } else { sb.Append(failedIndices[i]); } sb.Append("],"); } MakeLogError(sb.ToString()); return; } } catch (Exception ex) { MakeLogError("Failed to finish generating VodDef-objects from sqlResults: " + ex); } }
/// <summary> /// Event handler used to create visuals from completed database query. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void VisualsFromSQLResults(AbstractRunnable sender, FinishedQueueEventHandlerArgs e) { lock (loadLock) { sqlResults = e.GetSQLResults(); if (sqlResults == null) { return; } // convert the data-strings to their respective types ConvertSQLResults(sqlResults, colGetTypeInfo); var tableOverlayAniJob = sqlResults[DBTableLoadOrder.IndexOf("OverlayAniJobRelation")]; var tableOverlayModelDef = sqlResults[DBTableLoadOrder.IndexOf("ScriptOverlayModelDef")]; var tableAniJobModelDef = sqlResults[DBTableLoadOrder.IndexOf("ScriptAniJobModelDef")]; var tableScriptAni = sqlResults[DBTableLoadOrder.IndexOf("ScriptAni")]; var tableScriptOverlay = sqlResults[DBTableLoadOrder.IndexOf("ScriptOverlay")]; var tableScriptAniJob = sqlResults[DBTableLoadOrder.IndexOf("ScriptAniJob")]; var tableModelDef = sqlResults[DBTableLoadOrder.IndexOf("ModelDef")]; List <ScriptOverlayAniJobRelation> overlayAniJobRelations = MapOverlayAniJobRelations(tableOverlayAniJob); Dictionary <int, List <int> > overlayIDByModelDefID = MapOverlayByModelDef(tableOverlayModelDef); Dictionary <int, List <int> > aniJobIDByModelDefID = MapAniJobByModelDef(tableAniJobModelDef); Dictionary <int, ScriptAni> aniByID; if (!TryGenerateScriptAnis(tableScriptAni, out aniByID)) { MakeLogError("Failed to produce ScriptAni-objects from sql data. " + "Aborting Generation of Visuals."); return; } Dictionary <int, ScriptOverlay> overlayByID; if (!TryGenerateScriptOverlays(tableScriptOverlay, out overlayByID)) { MakeLogError("Failed to produce ScriptOverlay-objects from sql data. " + "Aborting Generation of Visuals."); return; } Dictionary <int, int> nextIDByAniJobID; Dictionary <int, ScriptAniJob> aniJobByID; if (!TryGenerateScriptAniJobs(tableScriptAniJob, aniByID, overlayByID, overlayAniJobRelations, out nextIDByAniJobID, out aniJobByID)) { MakeLogError("Failed to produce ScriptAniJob-objects from sql data. " + "Aborting Generation of Visuals."); return; } Dictionary <int, ModelDef> modelDefByID; if (!TryGenerateModelDefs(tableModelDef, overlayByID, aniJobByID, overlayIDByModelDefID, aniJobIDByModelDefID, nextIDByAniJobID, out modelDefByID)) { MakeLogError("Failed to produce ModelDef-objects from sql data. " + "Aborting Generation of Visuals."); return; } } }