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);
            }
        }
示例#3
0
        /// <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);
            }
        }