Beispiel #1
0
 // 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);
     }
 }
Beispiel #2
0
        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);
        }