/// <summary> /// Fire Model Change. /// Call modelChange method of added validators /// </summary> /// <param name="po">persistent objects</param> /// <param name="changeType">ModalValidatorVariables.CHANGETYPE_*</param> /// <returns>error message or NULL for no veto</returns> public String FireModelChange(PO po, int changeType) { if (po == null || _modelChangeListeners.Count == 0) { return(null); } // String propertyName = po.Get_TableName() + po.GetAD_Client_ID(); List <ModelValidator> list = null; if (_modelChangeListeners.ContainsKey(propertyName)) { list = new List <ModelValidator>(); list = _modelChangeListeners[propertyName]; } if (list == null || list.Count == 0) { return(null); } // for (int i = 0; i < list.Count; i++) { try { ModelValidator validator = (ModelValidator)list[i]; if (validator.GetAD_Client_ID() == po.GetAD_Client_ID()) { String error = validator.ModelChange(po, changeType); if (error != null && error.Length > 0) { return(error); } } } catch (Exception e) { String error = e.Message; if (error == null) { error = e.ToString(); } return(error); } } return(null); }