public CSharpMethod GenerateFetchAll() { List <String> methodCode = new List <String>(); DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray(); methodCode.Add("IEnumerable<" + this.Entity.ReferencedTable.ProgrammaticName + "Record> recordCollection = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchAll();"); methodCode.Add("foreach (" + this.Entity.ReferencedTable.ProgrammaticName + "Record record in recordCollection)"); methodCode.Add("{"); methodCode.Add(" if (record != null" + (this.Entity.FilterCode != null ? " && " + this.Entity.FilterCode : "") + ")"); methodCode.Add(" {"); foreach (DomainEntityExtender extender in extenders) { methodCode.Add(" " + (extender == extenders[0] ? "if" : "else if") + " (" + extender.FilterCode + ")"); methodCode.Add(" yield return new Local" + extender.EntityName + "Model(this.Provider, record);"); } if (extenders.Length != 0) { methodCode.Add(" else"); } methodCode.Add((extenders.Length == 0 ? "" : " ") + " yield return new Local" + this.Entity.EntityName + "Model(this.Provider, record);"); methodCode.Add(" }"); methodCode.Add("}"); CSharpMethod result = new CSharpMethod(this); result.XmlSummary = "Retrieves all instances of the <see cref='" + this.Entity.EntityName + "Model' /> class."; result.XmlReturns = "An enumerable collection of <see cref='" + this.Entity.EntityName + "Model' /> instances."; result.MethodType = "IEnumerable<Local" + this.Entity.EntityName + "Model>"; result.Name = "FetchAll"; result.MethodCode = methodCode.ToArray(); return(result); }
private CSharpMethod GenerateFetchById() { List <String> methodCode = new List <String>(); DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray(); methodCode.Add(this.Entity.ReferencedTable.ProgrammaticName + "Record record = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchById(id);"); methodCode.Add("if (record == null)"); methodCode.Add(" return null;"); foreach (DomainEntityExtender extender in extenders) { methodCode.Add("if (" + extender.FilterCode + ")"); methodCode.Add(" return new Local" + extender.EntityName + "Model(this.Provider, record);"); } methodCode.Add("return new Local" + this.Entity.EntityName + "Model(this.Provider, record);"); CSharpMethod result = new CSharpMethod(this); result.XmlSummary = "Retrieves a specific <see cref='" + this.Entity.EntityName + "Model' /> instance."; result.XmlReturns = "The <see cref='" + this.Entity.EntityName + "Model' /> instance that matches the specified <paramref name='id' />; or null, if no matching instance can be found."; result.MethodType = "Local" + this.Entity.EntityName + "Model"; result.Name = "FetchById"; result.MethodParameters = new CSharpParameter[] { new CSharpParameter() { ParameterType = this.Entity.ReferencedTable.TableKey.ProgrammaticType, ParameterName = "id", XmlSummary = "The unique value which distinctly identifies the <see cref='" + this.Entity.EntityName + "Model' /> instance to be returned." }, }; result.MethodCode = methodCode.ToArray(); return(result); }
/// <summary> /// Generates a method member within the runtime type. /// </summary> /// <param name="writer"> /// The text writer that outputs the content into the file. /// </param> /// <param name="member"> /// The method to be generated. /// </param> protected virtual void GenerateMember(StreamWriter writer, CSharpMethod member) { // Generate the documentation this.GenerateDocumentation(writer, true, "summary", member.XmlSummary); this.GenerateDocumentation(writer, true, member.MethodGenerics); this.GenerateDocumentation(writer, true, member.MethodParameters); this.GenerateDocumentation(writer, true, "returns", member.XmlReturns); this.GenerateDocumentation(writer, true, "remarks", member.XmlRemarks); // Generate the signature if (member.Attributes != null && member.Attributes.Length != 0) { writer.WriteLine(" [" + String.Join(", ", member.Attributes) + "]"); } writer.Write(" "); writer.Write(String.IsNullOrEmpty(member.MethodType) ? "void" : member.MethodType); writer.Write(" "); writer.Write(member.Name); writer.Write(member.MethodGenerics == null || !member.MethodGenerics.Any() ? "" : "<" + String.Join(", ", member.MethodGenerics.Select(generic => generic.GenericName)) + ">"); writer.Write("("); writer.Write(member.MethodParameters == null || !member.MethodParameters.Any() ? "" : String.Join(", ", member.MethodParameters.Select(parameter => (parameter.ParameterReference == CSharpReference.None ? "" : parameter.ParameterReference.ConvertTo <String>().ToLower() + " ") + parameter.ParameterType + " " + parameter.ParameterName))); writer.Write(")"); writer.Write(member.MethodGenerics == null || !member.MethodGenerics.Any() ? "" : String.Join("", member.MethodGenerics.Select(generic => generic.GenericConstraints == null || !generic.GenericConstraints.Any() ? "" : " where " + generic.GenericName + " : " + String.Join(", ", generic.GenericConstraints)))); writer.Write(";"); writer.WriteLine(); }
private CSharpMethod GenerateGetTableName() { CSharpMethod result = new CSharpMethod(this); result.XmlSummary = "Gets the underlying database table name for <see cref='" + this.Entity.EntityName + "/>."; result.XmlReturns = "The table name."; result.MethodType = "String"; result.Name = "GetTableName"; result.MethodCode = new String[] { "return this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".TableName;" }; return(result); }
private CSharpMethod GenerateCreate() { CSharpMethod result = new CSharpMethod(this); result.XmlSummary = "Creates a new <see cref='" + this.Entity.EntityName + "Model' /> instance."; result.XmlReturns = "A newly instantiated <see cref='" + this.Entity.EntityName + "Model' /> instance."; result.MethodType = "Local" + this.Entity.EntityName + "Model"; result.Name = "Create"; result.MethodCode = new String[] { "return new Local" + this.Entity.EntityName + "Model(this.Provider);" }; return(result); }
public CSharpMethod GenerateFetchAllByAttribute(DomainEntityAttribute attribute) { String parameterName = attribute.AttributeName.Substring(0, 1).ToLower() + attribute.AttributeName.Substring(1) + "Id"; List <String> methodCode = new List <String>(); DomainEntityExtender[] extenders = this.Entity.Container.Domain.Containers.SelectMany(c => c.ContainerEntities).OfType <DomainEntityExtender>().Where(e => e.ReferencedEntity == this.Entity && !String.IsNullOrEmpty(e.FilterCode)).ToArray(); methodCode.Add("IEnumerable<" + this.Entity.ReferencedTable.ProgrammaticName + "Record> recordCollection = this.Provider.DataProvider." + this.BaseEntity.Container.ContainerName + "." + this.BaseEntity.EntityName + ".FetchAllBy" + attribute.Column.ProgrammaticName + "(" + parameterName + ");"); methodCode.Add("foreach (" + this.Entity.ReferencedTable.ProgrammaticName + "Record record in recordCollection)"); methodCode.Add("{"); methodCode.Add(" if (record != null" + (this.Entity.FilterCode != null ? " && " + this.Entity.FilterCode : "") + ")"); methodCode.Add(" {"); foreach (DomainEntityExtender extender in extenders) { methodCode.Add(" " + (extender == extenders[0] ? "if" : "else if") + " (" + extender.FilterCode + ")"); methodCode.Add(" yield return new Local" + extender.EntityName + "Model(this.Provider, record);"); } if (extenders.Length != 0) { methodCode.Add(" else"); } methodCode.Add((extenders.Length == 0 ? "" : " ") + " yield return new Local" + this.Entity.EntityName + "Model(this.Provider, record);"); methodCode.Add(" }"); methodCode.Add("}"); CSharpMethod result = new CSharpMethod(this); result.XmlSummary = "Retrieves a collection of <see cref='" + this.Entity.EntityName + "Model' /> instances."; result.XmlReturns = "The <see cref='" + this.Entity.EntityName + "Model' /> instances that match the specified <paramref name='" + parameterName + "' />."; result.MethodType = "IEnumerable<Local" + this.Entity.EntityName + "Model>"; result.Name = "FetchAllBy" + attribute.AttributeName + "Id"; result.MethodParameters = new CSharpParameter[] { new CSharpParameter() { XmlSummary = "The value which identifies the <see cref='" + this.Entity.EntityName + "Model' /> instances to be returned.", ParameterType = attribute.Column.ProgrammaticType, ParameterName = parameterName } }; result.MethodCode = methodCode.ToArray(); return(result); }