// make sure, that ChangeType was properly registered or show an error message if not // while retrieving the ChangeInitInfo for the parameter types public bool ValidateChangeInit(ChangeType changeType, out ChangeInitInfo info) { if (BaseChangeInit.TryGetChangeInitInfo(ChangeType.Vob_CodeName_Set, out info)) { return(true); } else { MakeLogError("Tried to calculate TotalChange with non-initialized ChangeType " + changeType); return(false); } }
protected bool TryGenerateIDAndChanges(List <List <object> > tableChange, out List <IDAndChanges> idAndChangesList) { idAndChangesList = new List <IDAndChanges>(); if ((tableChange == null) || (tableChange.Count < 1)) { return(false); } Change change = null; int effectID, changeID; ChangeType changeType; string paramsString = null; List <object> parameters = null; ChangeInitInfo changeInitInfo = null; try { lock (loadLock) { for (int i = 0; i < tableChange.Count; i++) { changeID = (int)tableChange[i][0]; effectID = (int)tableChange[i][1]; // translate the changeType if (!Enum.TryParse((string)tableChange[i][2], out changeType)) { MakeLogError(string.Format("Received unsupported ChangeType {0} " + "from database! Aborting initialization of Change with ID {1}.", tableChange[i][2], changeID)); continue; } // translate the parameters paramsString = (string)tableChange[i][3]; if (!BaseChangeInit.TryGetChangeInitInfo(changeType, out changeInitInfo)) { MakeLogError("Aborting initialization of Change with ID " + changeID + " because ChangeInitInfo for retrieving parameter types was not found!"); continue; } if (!TryParseParameters(paramsString, changeInitInfo.ParameterTypes, out parameters)) { MakeLogError("Aborting initialization of Change because an error occured " + "while parsing respective parameters!"); continue; } // finally create the change change = Change.Create(changeType, parameters); if ((idAndChangesList.Count > 0) && (effectID == idAndChangesList[idAndChangesList.Count - 1].ID)) { idAndChangesList[i].Changes.Add(change); } else { idAndChangesList.Add(new IDAndChanges(effectID, new List <Change>() { change })); } } } } catch (Exception ex) { MakeLogError("Error while parsing sqlResults to Changes and Effects: " + ex); return(false); } return(true); }