private void OnPropertyChanged(string propertyName) { if (propertyName == "PropertyValue" && _propertyName == "ParentType" && !string.IsNullOrEmpty(_propertyValue)) { var parentInfo = GeneratorController.Current.CurrentUnit.CslaObjects.Find(_propertyValue); var lstBox = _parent.tableLayoutPanel.Controls.Find("ParentProperties", true)[0] as ListBox; if (lstBox != null) { lstBox.Items.Clear(); if (CslaTemplateHelperCS.IsCollectionType(parentInfo.ObjectType)) { lstBox.Enabled = false; } else { lstBox.Enabled = true; var valProps = parentInfo.GetAllValueProperties(); foreach (var prop in valProps) { lstBox.Items.Add(prop.Name); } var first = true; var parentProps = string.Empty; foreach (var prop in parentInfo.ValueProperties) { if (prop.PrimaryKey != ValueProperty.UserDefinedKeyBehaviour.Default) { lstBox.SelectedItems.Add(prop.Name); if (!first) { parentProps += ","; } else { first = false; } parentProps += prop.Name; } } lstBox.Tag = parentProps; } } } if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } }
private bool IsBrowsable(ChildProperty[] objectType, string propertyName) { try { foreach (var childProperty in objectType) { if ((GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.None || GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.ObjectLevel || ((childProperty.AuthzProvider == AuthorizationProvider.Custom) && !GeneratorController.Current.CurrentUnit.GenerationParams.UsesCslaAuthorizationProvider)) && (propertyName == "ReadRoles" || propertyName == "WriteRoles")) { return(false); } if ((GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.None || GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.ObjectLevel || ((childProperty.AuthzProvider == AuthorizationProvider.IsInRole || childProperty.AuthzProvider == AuthorizationProvider.IsNotInRole) && !GeneratorController.Current.CurrentUnit.GenerationParams.UsesCslaAuthorizationProvider) || GeneratorController.Current.CurrentUnit.GenerationParams.UsesCslaAuthorizationProvider) && (propertyName == "ReadAuthzRuleType" || propertyName == "WriteAuthzRuleType")) { return(false); } if (((GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.None || GeneratorController.Current.CurrentUnit.GenerationParams.GenerateAuthorization == AuthorizationLevel.ObjectLevel) || GeneratorController.Current.CurrentUnit.GenerationParams.UsesCslaAuthorizationProvider) && propertyName == "AuthzProvider") { return(false); } if (!GeneratorController.Current.CurrentUnit.GenerationParams.TargetIsCsla4All && propertyName == "BusinessRules") { return(false); } var isParentCollection = false; var cslaObject = (CslaObjectInfo)GeneratorController.Current.MainForm.ProjectPanel.ListObjects.SelectedItem; var parentInfo2 = cslaObject.Parent.CslaObjects.Find(cslaObject.ParentType); if (parentInfo2 != null) { isParentCollection = CslaTemplateHelperCS.IsCollectionType(parentInfo2.ObjectType); } if (GeneratorController.Current.CurrentUnit.GenerationParams.TargetIsCsla4All && isParentCollection && propertyName == "LoadParameters") { return(false); } if ((!GeneratorController.Current.CurrentUnit.GenerationParams.TargetIsCsla4All || !isParentCollection) && propertyName == "ParentLoadProperties") { return(false); } /*if (SelectedObject[0].LoadingScheme == LoadingScheme.ParentLoad && propertyName == "LazyLoad") * return false;*/ if (_selectedObject.Length > 1 && IsEnumerable(GetPropertyInfoCache(propertyName))) { return(false); } } return(true); } catch //(Exception e) { Debug.WriteLine(objectType + ":" + propertyName); return(true); } }
/// <summary> /// Should be called after the object has all it's properties (if applicable). /// It creates the default criteria classes depending on the object type. /// </summary> /// <param name="getSprocName">Name of the sproc.</param> public void AddDefaultCriteriaAndParameters(string getSprocName) { if (_currentCslaObject.CriteriaObjects.Count != 0) { return; } if (_currentCslaObject.ObjectType == CslaObjectType.EditableRootCollection || _currentCslaObject.ObjectType == CslaObjectType.DynamicEditableRootCollection) { if (_currentUnit.Params.AutoCriteria) { var crit = CreateEmptyNewAndFetchCriteria(); _currentCslaObject.CriteriaObjects.Add(crit); crit.SetSprocNames(); } //no need to go through the properties here. return; } if (_currentCslaObject.ObjectType == CslaObjectType.NameValueList || (_currentCslaObject.ObjectType == CslaObjectType.ReadOnlyCollection && _currentCslaObject.ParentType == string.Empty)) { if (_currentUnit.Params.AutoCriteria) { var crit = CreateEmptyFetchCriteria(); _currentCslaObject.CriteriaObjects.Add(crit); crit.SetSprocNames(getSprocName); } //no need to go through the properties here. return; } // Condition excludes NameValueList if (CslaTemplateHelperCS.IsCollectionType(_currentCslaObject.ObjectType)) { return; } var primaryKeyProperties = new List <ValueProperty>(); ValueProperty timestampProperty = null; var useForCreate = false; // retrieve all primary key and timestamp properties foreach (var prop in _currentCslaObject.ValueProperties) { if (prop.PrimaryKey != ValueProperty.UserDefinedKeyBehaviour.Default) { primaryKeyProperties.Add(prop); if (!(prop.DbBindColumn.IsIdentity || prop.PropertyType == TypeCodeEx.Guid)) { useForCreate = true; } } else if (prop.DbBindColumn.NativeType == "timestamp") { timestampProperty = prop; } } if (primaryKeyProperties.Count > 0 || timestampProperty != null) { // Try to find default Criteria object Criteria defaultCriteria = _currentCslaObject.CriteriaObjects.Find("Criteria"); Criteria timestampCriteria = _currentCslaObject.CriteriaObjects.Find("CriteriaTS"); // If criteria objects are not set if (_currentCslaObject.CriteriaObjects.Count == 0) { // If default criteria doesn't exists, create a new criteria if (defaultCriteria == null) { if (!(_currentCslaObject.ObjectType == CslaObjectType.ReadOnlyObject && _currentCslaObject.ParentType != string.Empty)) { defaultCriteria = new Criteria(_currentCslaObject); defaultCriteria.Name = _currentCslaObject.ObjectType == CslaObjectType.ReadOnlyObject ? "CriteriaGet" : "Criteria"; defaultCriteria.GetOptions.Enable(); if (_currentCslaObject.ObjectType == CslaObjectType.EditableRoot || _currentCslaObject.ObjectType == CslaObjectType.EditableSwitchable || _currentCslaObject.ObjectType == CslaObjectType.EditableChild || _currentCslaObject.ObjectType == CslaObjectType.DynamicEditableRoot) { defaultCriteria.DeleteOptions.Enable(); if (defaultCriteria.Properties.Count > 0 && useForCreate) { defaultCriteria.CreateOptions.Factory = true; defaultCriteria.CreateOptions.DataPortal = true; defaultCriteria.CreateOptions.RunLocal = true; } else { var createCriteria = _currentCslaObject.CriteriaObjects.Find("CriteriaNew"); if (createCriteria == null) { createCriteria = new Criteria(_currentCslaObject); createCriteria.Name = "CriteriaNew"; createCriteria.CreateOptions.DataPortal = true; createCriteria.CreateOptions.Factory = true; createCriteria.CreateOptions.RunLocal = true; _currentCslaObject.CriteriaObjects.Add(createCriteria); } } } if (_currentCslaObject.ObjectType == CslaObjectType.EditableChild) { return; } defaultCriteria.SetSprocNames(); if (_currentUnit.GenerationParams.TargetIsCsla4All && _currentCslaObject.ObjectType != CslaObjectType.EditableRoot && _currentCslaObject.ObjectType != CslaObjectType.EditableSwitchable && _currentCslaObject.ObjectType != CslaObjectType.ReadOnlyObject) { defaultCriteria.Name = "CriteriaDelete"; defaultCriteria.GetOptions.Factory = false; defaultCriteria.GetOptions.DataPortal = false; defaultCriteria.GetOptions.Procedure = false; defaultCriteria.GetOptions.ProcedureName = string.Empty; defaultCriteria.DeleteOptions.Factory = false; defaultCriteria.DeleteOptions.DataPortal = false; } _currentCslaObject.CriteriaObjects.Add(defaultCriteria); AddPropertiesToCriteria(primaryKeyProperties, defaultCriteria); if (_currentUnit.Params.AutoTimestampCriteria && timestampProperty != null && timestampCriteria == null) { AddTimestampProperty(defaultCriteria, timestampProperty); } } } } } else if (getSprocName != string.Empty && _currentUnit.Params.AutoCriteria) { var crit = CreateEmptyFetchCriteria(); _currentCslaObject.CriteriaObjects.Add(crit); crit.SetSprocNames(getSprocName); } }