private void GenerateAllSprocsFile(CslaObjectInfo info, string dir, GenerationParameters generationParams) { var selfLoad = CslaTemplateHelper.GetSelfLoad(info); StringBuilder proc = new StringBuilder(); //make sure we don't generate selects when we don't need to. if (!((info.ObjectType == CslaObjectType.EditableChildCollection || info.ObjectType == CslaObjectType.EditableChild) && !selfLoad)) { foreach (Criteria crit in info.CriteriaObjects) { if (crit.GetOptions.Procedure && !String.IsNullOrEmpty(crit.GetOptions.ProcedureName)) { proc.AppendLine(GenerateProcedure(info, crit, "SelectProcedure.cst", crit.GetOptions.ProcedureName)); } } } if (info.ObjectType != CslaObjectType.ReadOnlyObject && info.ObjectType != CslaObjectType.ReadOnlyCollection && info.ObjectType != CslaObjectType.EditableRootCollection && info.ObjectType != CslaObjectType.DynamicEditableRootCollection && info.ObjectType != CslaObjectType.EditableChildCollection && info.ObjectType != CslaObjectType.NameValueList) { //Insert if (info.InsertProcedureName != "") { proc.AppendLine(GenerateProcedure(info, null, "InsertProcedure.cst", info.InsertProcedureName)); } //update if (info.UpdateProcedureName != "") { proc.AppendLine(GenerateProcedure(info, null, "UpdateProcedure.cst", info.UpdateProcedureName)); } //delete foreach (Criteria crit in info.CriteriaObjects) { if (crit.DeleteOptions.Procedure && !String.IsNullOrEmpty(crit.DeleteOptions.ProcedureName)) { proc.AppendLine(GenerateProcedure(info, crit, "DeleteProcedure.cst", crit.DeleteOptions.ProcedureName)); } } if (_targetFramework != TargetFramework.CSLA40 && info.ObjectType == CslaObjectType.EditableChild) { proc.AppendLine(GenerateProcedure(info, null, "DeleteProcedure.cst", info.DeleteProcedureName)); } } if (proc.Length > 0) { CheckDirectory(dir + @"\sprocs"); WriteToFile(dir + @"\sprocs\" + info.ObjectName + ".sql", proc.ToString()); } }
private void GenerateSelectProcedure(CslaObjectInfo info, string dir) { var lazyLoad = CslaTemplateHelper.GetLazyLoad(info); //make sure we don't generate selects when we don't need to. if (!((info.ObjectType == CslaObjectType.EditableChildCollection || info.ObjectType == CslaObjectType.EditableChild) && !lazyLoad)) { foreach (Criteria crit in info.CriteriaObjects) { if (crit.GetOptions.Procedure && !String.IsNullOrEmpty(crit.GetOptions.ProcedureName)) { string proc = GenerateProcedure(info, crit, "SelectProcedure.cst", crit.GetOptions.ProcedureName); CheckDirectory(dir + @"\sprocs"); WriteToFile(dir + @"\sprocs\" + crit.GetOptions.ProcedureName + ".sql", proc); } } } }
public void SetValuePropertyInfo(IDataBaseObject obj, IResultSet rs, IColumnInfo prop, ValueProperty destination) { IColumnInfo p = prop; SetDbBindColumn(obj, rs, p, destination.DbBindColumn); destination.Nullable = (p.IsNullable); if (p.NativeTypeName == "timestamp") { destination.ReadOnly = true; destination.MarkDirtyOnChange = false; destination.Undoable = false; destination.DeclarationMode = _currentUnit.Params.CreateTimestampPropertyMode; } if (_currentCslaObject.ObjectType == CslaObjectType.ReadOnlyObject) { destination.DeclarationMode = _currentUnit.Params.CreateReadOnlyObjectsPropertyMode; } if (p.IsPrimaryKey) { if (p.IsIdentity) { destination.PrimaryKey = ValueProperty.UserDefinedKeyBehaviour.DBProvidedPK; destination.ReadOnly = true; destination.PropSetAccessibility = AccessorVisibility.Default; } else { destination.PrimaryKey = ValueProperty.UserDefinedKeyBehaviour.UserProvidedPK; } if (destination.PropertyType == TypeCodeEx.Guid) { destination.DefaultValue = _currentUnit.Params.IDGuidDefaultValue; } else if (p.IsIdentity) { switch (p.DbType) { case DbType.Int16: destination.DefaultValue = _currentUnit.Params.IDInt16DefaultValue; break; case DbType.Int32: destination.DefaultValue = _currentUnit.Params.IDInt32DefaultValue; break; case DbType.Int64: destination.DefaultValue = _currentUnit.Params.IDInt64DefaultValue; break; } } } if (_currentUnit.Params.CreationDateColumn == p.ColumnName) { destination.ReadOnly = true; destination.PropSetAccessibility = AccessorVisibility.Default; destination.DataAccess = ValueProperty.DataAccessBehaviour.CreateOnly; if (destination.PropertyType == TypeCodeEx.SmartDate) { destination.DefaultValue = _currentUnit.Params.LogDateAndTime ? "new SmartDate(DateTime.Now)" : "new SmartDate(DateTime.Today)"; } else { destination.DefaultValue = _currentUnit.Params.LogDateAndTime ? "DateTime.Now" : "DateTime.Today"; } } else if (_currentUnit.Params.CreationUserColumn == p.ColumnName) { destination.ReadOnly = true; destination.PropSetAccessibility = AccessorVisibility.Default; destination.DataAccess = ValueProperty.DataAccessBehaviour.CreateOnly; destination.DefaultValue = _currentUnit.Params.GetUserMethod; } else if (_currentUnit.Params.ChangedDateColumn == p.ColumnName) { destination.ReadOnly = true; destination.PropSetAccessibility = AccessorVisibility.Default; if (CslaTemplateHelper.IsCreationDateColumnPresent(_currentCslaObject)) { destination.DefaultValue = "$" + _currentUnit.Params.CreationDateColumn; } else { destination.DefaultValue = _currentUnit.Params.LogDateAndTime ? "new SmartDate(DateTime.Now)" : "new SmartDate(DateTime.Today)"; } } else if (_currentUnit.Params.ChangedUserColumn == p.ColumnName) { destination.ReadOnly = true; destination.PropSetAccessibility = AccessorVisibility.Default; if (CslaTemplateHelper.IsCreationUserColumnPresent(_currentCslaObject)) { destination.DefaultValue = "$" + _currentUnit.Params.CreationUserColumn; } else { destination.DefaultValue = _currentUnit.Params.GetUserMethod; } } else if (_currentUnit.Params.DatesDefaultStringWithTypeConversion && (destination.PropertyType == TypeCodeEx.SmartDate || destination.PropertyType == TypeCodeEx.DateTime)) { destination.BackingFieldType = destination.PropertyType; destination.PropertyType = TypeCodeEx.String; destination.DeclarationMode = PropertyDeclaration.ManagedWithTypeConversion; } return; }
private void BuildCollectionCriteriaGet(CslaObjectInfo info, AssociativeEntity.EntityFacade entity, ChildProperty child) { const string critName = "CriteriaGet"; var selfLoad = CslaTemplateHelper.GetSelfLoad(info); if (!selfLoad) { DeleteDefaultCollectionCriteria(info, critName); return; } StringBuilder sb; // make collection criteria if needed var collCriteria = info.CriteriaObjects; Criteria criteria = null; foreach (var crit in collCriteria) { if (CheckAndSetCollectionCriteriaGet(crit, info, critName)) { criteria = crit; break; } } if (criteria == null) { criteria = new Criteria(); criteria.Name = critName; SetCollectionCriteriaGet(criteria, info, critName); info.CriteriaObjects.Add(criteria); // display message to the user sb = new StringBuilder(); sb.AppendFormat("Successfully added criteria {0} to {1} collection object.", critName, info.ObjectName); OutputWindow.Current.AddOutputInfo(sb.ToString()); } if (criteria.Name != critName) { return; } if (criteria.Properties.Count > 0) { // clear CriteriaGet properties criteria.Properties.Clear(); // display message to the user sb = new StringBuilder(); sb.AppendFormat("Successfully removed all criteria properties of {0} on {1} collection object.", critName, info.ObjectName); OutputWindow.Current.AddOutputInfo(sb.ToString()); } // populate collection criteria properties var addedProps = new List <string>(); if (entity.LoadProperties.Count == 0) { criteria.Properties.AddRange(CriteriaPropertyCollection.Clone(FacadeRootCriteriaProperties)); foreach (var property in FacadeRootCriteriaProperties) { addedProps.Add(property.Name); } } else { criteria.Properties.AddRange(CriteriaPropertyCollection.Clone(entity.LoadProperties)); foreach (var property in entity.LoadProperties) { addedProps.Add(property.Name); } } if (addedProps.Count > 0) { // display message to the user sb = new StringBuilder(); sb.Append("Successfully added the following criteria properties:" + Environment.NewLine); foreach (var propName in addedProps) { sb.AppendFormat("\t{0}.{1}.{2}" + Environment.NewLine, critName, info.ObjectName, propName); } OutputWindow.Current.AddOutputInfo(sb.ToString()); } child.LoadParameters.Clear(); foreach (var property in criteria.Properties) { child.LoadParameters.Add(new Parameter(criteria, property)); } }