public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile() { Path = base.GetFileLocation(), Type = CodeFileType.Repository, Name = Template.Element("FileName").Value .Replace("$SYS_TARGET$", data.Target) }; if (data.IncludeSmartFile) { file.Content = "using NextGen.NG7.Common.Interfaces.SmartFiles.DataAccess;" + Environment.NewLine + Template.Element("Main").Value .Replace("$SYS_REPOSITORYBASE$", "RepositoryBase, ISmartFileRepository") .Replace("$SYS_METHODS_TEMPLATE$", Template.Element("SmartFileMethods").Value .Replace("$SYS_VAR_TARGET$", GetVariableName(data.Target))) .Replace("$SYS_TARGET$", data.Target) .Replace("$SYS_PLURAL_TARGET$", Utils.Util.Pluralize(data.Target)); } else { file.Content = Template.Element("Main").Value .Replace("$SYS_REPOSITORYBASE$", "RepositoryBase") .Replace("$SYS_METHODS_TEMPLATE$", Template.Element("CRUDMethods").Value .Replace("$SYS_VAR_TARGET$", GetVariableName(data.Target))) .Replace("$SYS_TARGET$", data.Target) .Replace("$SYS_PLURAL_TARGET$", Utils.Util.Pluralize(data.Target)); } base.Files = new List<CodeFile>() { file }; return file; }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); string membersTemplate = Template.Element("MemberTemplate").Value; StringBuilder privateMember = new StringBuilder(); StringBuilder memberBuilder = new StringBuilder(); StringBuilder initializerBuilder = new StringBuilder(); data.MetaData.ForEach(m => { initializerBuilder.Append(String.Format("\t\t{0} = _{1},{2}", m.Name, GetVariableName(m.Name), Environment.NewLine)); privateMember.Append(String.Format("\t\t{0} _{1};{2}", GetDataType(m), GetVariableName(m.Name), Environment.NewLine)); memberBuilder.Append(membersTemplate.Replace("$MEMBER_NAME$", m.Name) .Replace("$MEMBER_DATATYPE$", GetDataType(m)) .Replace("$MEMBER_VAR_NAME$", GetVariableName(m.Name))); }); file.Content = Template.Element("Main").Value .Replace("$SYS_MEMBER_INIT$", initializerBuilder.ToString().Trim().TrimEnd(',')) .Replace("$SYS_MEMBER_TEMPLATE$", privateMember.Append(memberBuilder).ToString()) .Replace("$SYS_TARGET$", data.Target); file.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", data.Target); file.Path = base.GetFileLocation(); file.Type = CodeFileType.UnitTestBuilder; base.Files = new List<CodeFile>() { file }; return file; }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); StringBuilder members = new StringBuilder(); string memberTemplate = Template.Element("Members").Value; Dictionary<string, string> mTemplate = new Dictionary<string, string>(); data.MetaData.ForEach(m => { mTemplate["$SYS_DATAMEMBER$"] = m.IsDataMember ? "[DataMember]" : string.Empty; mTemplate["$SYS_NEWGUID$"] = m.Guid.ToUpper(); mTemplate["$SYS_DATATYPE$"] = GetDataType(m); mTemplate["$SYS_MEMBERNAME$"] = m.Name; mTemplate["$SYS_ATTRNAME$"] = m.Name; mTemplate["$SYS_ATTRDESCRIPTION$"] = string.IsNullOrEmpty(m.Description) ? m.Name.ToStringDescription() : m.Description; mTemplate["$SYS_ATTR1$"] = !data.IsViewTarget && m.IsRequired ? ", Required = true" : string.Empty; mTemplate["$SYS_ATTR2$"] = m.IsPK ? ", PrimaryOrCompositeKey = true" : string.Empty; members.Append(memberTemplate.ReplaceContent(mTemplate)); }); Dictionary<string, string> mainTemplate = new Dictionary<string, string>(); mainTemplate["$SYS_NEWGUID$"] = data.TargetGuid; mainTemplate["$SYS_MEMBERS_TEMPLATE$"] = members.ToString(); mainTemplate["$SYS_TARGET$"] = data.Target; mainTemplate["$SYS_TABLEDATANAME$"] = data.TableDataName; mainTemplate["$SYS_TABLEDATADESCRIPTION$"] = data.TableDataDescription; file.Content = Template.Element("Main").Value.ReplaceContent(mainTemplate); file.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", data.Target); file.Path = base.GetFileLocation(); file.Type = CodeFileType.ServiceObject; base.Files = new List<CodeFile>() { file }; return file; }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); StringBuilder content = new StringBuilder(); content.Append(Template.Element("Using").Value); if (data.IncludeSmartFile) content.Append("using NextGen.NG7.Common.BusinessLogic.SmartFiles;"); content.Append(Environment.NewLine + "namespace " + Template.Element("Namespace").Value + Environment.NewLine); content.Append(String.Format("{{{0}public interface I{1}Manager : IBusinessLogicManager {0}{{{0}", Environment.NewLine, data.Target)); content.Append("//ATTENTION: CHECK THE ROUTES AND FUNCTION NAME/PARAMETERS" + Environment.NewLine); Dictionary<string, string> mTemplate = new Dictionary<string, string>(); mTemplate["$SYS_TARGET$"] = data.Target; new RouteMetaData().GenerateRoutes(data.Target, data.IncludeSmartFile, data.TargetProduct,data.TargetModule).ForEach(r => { //content.Append(Environment.NewLine); content.Append(r.Summary); //content.Append(Environment.NewLine); }); content.Append("}" + Environment.NewLine + "}"); file.Content = content.ToString(); file.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", data.Target); file.Path = base.GetFileLocation(); file.Type = CodeFileType.IManager; base.Files = new List<CodeFile>() { file }; return file; }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); StringBuilder validationMembers = new StringBuilder(); string stringFieldValidateTemplate = Template.Element("StringFieldValidate").Value.TrimStart(); string guidFieldValidateTemplate = Template.Element("GuidFieldValidate").Value.TrimStart(); string guidNullableFieldTemplate = Template.Element("GuidNullableField").Value.TrimStart(); data.MetaData.ForEach(m => { if (m.IsRequired && !m.Name.Equals(data.Target + "Id")) { if (m.DataType == typeof(string)) { validationMembers.Append(stringFieldValidateTemplate.Replace("$SYS_MEMBERNAME$", m.Name)); } else if (m.DataType == typeof(Guid)) { validationMembers.Append(guidFieldValidateTemplate.Replace("$SYS_MEMBERNAME$", m.Name)); } } }); data.MetaData.ForEach(m => { if (!m.IsRequired && m.DataType == typeof(Guid)) { validationMembers.Append(guidNullableFieldTemplate.Replace("$SYS_MEMBERNAME$", m.Name)); } }); string templateValue = string.Empty; if (data.IncludeSmartFile) { var getSmartFileById = string.Empty; if (data.TargetProduct.ToLower().Equals("core")) templateValue = Template.Element("SmartFileOperations").Value.Replace("$SYS_GETSMARTFILEIDTEMPLATE$", Template.Element("GetSmartFileId_Core").Value); else templateValue = Template.Element("SmartFileOperations").Value.Replace("$SYS_GETSMARTFILEIDTEMPLATE$", Template.Element("GetSmartFileId_NonCore").Value); templateValue = Template.Element("Main").Value.Replace("$SYS_METHODS_TEMPLATE$", templateValue); } else { templateValue = Template.Element("Main").Value.Replace("$SYS_METHODS_TEMPLATE$", Template.Element("CRUDOperations").Value); } file.Content = templateValue.Replace("$SYS_VALIDATION_MEMBERS$", validationMembers.ToString()) .Replace("$SYS_VAR_TARGET$", GetVariableName(data.Target)) .Replace("$SYS_TARGET$", data.Target) .Replace("$SYS_PLURAL_TARGET$", Utils.Util.Pluralize(data.Target)); file.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", data.Target); file.Path = base.GetFileLocation(); file.Type = CodeFileType.Manager; base.Files = new List<CodeFile>() { file }; return file; }
public CodeDOMEngine Register(DOMEngineArgs regArgs) { registerArgs = regArgs; schema = new InformationSchema(registerArgs.Target); schema.TargetProduct = registerArgs.ProductName; schema.TargetModule = registerArgs.Module; schema.IncludeSmartFile = registerArgs.IncludeSmartFile; builders = new List<ICodeBuilder>(); registerArgs.FileTypes.ForEach(type => { switch (type) { case CodeFileType.ServiceObject: builders.Add(new ServiceObject(registerArgs.ProductName, type)); break; case CodeFileType.RepositoryObject: builders.Add(new RepositoryObject(registerArgs.ProductName, type)); break; case CodeFileType.Repository: builders.Add(new Repository(registerArgs.ProductName, type)); break; case CodeFileType.IManager: builders.Add(new APIManager(registerArgs.ProductName, CodeFileType.IManager)); break; case CodeFileType.Manager: builders.Add(new BusinessManager(registerArgs.ProductName, CodeFileType.Manager)); break; case CodeFileType.UnitTest: builders.Add(new UnitTest(registerArgs.ProductName, CodeFileType.UnitTest)); break; case CodeFileType.UnitTestBuilder: builders.Add(new UnitTestBuilder(registerArgs.ProductName, CodeFileType.UnitTestBuilder)); break; default: break; } }); return this; }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); string memberTemplate = Template.Element("Members").Value; Func<List<MetaData>, bool, string> fnGetMemberString = (metadata, isColumAttrAdd) => { StringBuilder members = new StringBuilder(); metadata.ForEach(m => { if (!(m.Name.ToLower().Equals("amendfilterorganizationid") || m.Name.ToLower().Equals("amendstatus"))) { if (isColumAttrAdd && !m.Name.Equals(data.Target + "Id") && m.Name.StartsWith(data.Target)) { members.Append("[Column(\"" + m.Name + "\")] " + Environment.NewLine); var cName = m.Name.Replace(data.Target, ""); members.Append(memberTemplate.Replace("$SYS_DATATYPE$", GetDataType(m)).Replace("$SYS_MEMBERNAME$", cName)); } else members.Append(memberTemplate.Replace("$SYS_DATATYPE$", GetDataType(m)).Replace("$SYS_MEMBERNAME$", m.Name)); } }); return members.ToString(); }; Dictionary<string, string> mTemplate = new Dictionary<string, string>(); Func<InformationSchema, CodeFile> fnCreateFile = (infoX) => { CodeFile fileX = new CodeFile(); mTemplate["$SYS_TARGET$"] = infoX.Target; mTemplate["$SYS_MEMBERS_TEMPLATE$"] = fnGetMemberString(infoX.MetaData, false); mTemplate["$SYS_MAINTARGET$"] = infoX.Target; fileX.Content = Template.Element("Main").Value.ReplaceContent(mTemplate); fileX.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", infoX.Target); fileX.Path = base.GetFileLocation(); fileX.Type = CodeFileType.RepositoryObject; return fileX; }; Func<InformationSchema, CodeFile> fnCreateViewFile = (infoX) => { CodeFile fileX = new CodeFile(); mTemplate["$SYS_TARGET$"] = infoX.Target; mTemplate["$SYS_MAINTARGET$"] = infoX.TargetName; mTemplate["$SYS_MEMBERS_TEMPLATE$"] = fnGetMemberString(infoX.MetaData, true); mTemplate["$SYS_BASEVIEW$"] = data.IncludeSmartFile ? ": SmartItemViewBase" : string.Empty; fileX.Content = Template.Element("MainView").Value.ReplaceContent(mTemplate); fileX.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", infoX.Target + "View"); fileX.Path = base.GetFileLocation(); fileX.Type = CodeFileType.RepositoryObject; return fileX; }; if (data.IsViewTarget) { base.Files = new List<CodeFile>() { fnCreateViewFile(data) }; } else { base.Files = new List<CodeFile>() { fnCreateFile(data) }; if (data.IncludeSmartFile) { var info = new InformationSchema(data.Target + "Library"); base.Files.Add(fnCreateFile(info)); info = new InformationSchema(data.Target + "LibraryAmendFilter"); base.Files.Add(fnCreateFile(info)); info = new InformationSchema("ngvwGetAll" + data.Target + "Library"); base.Files.Add(fnCreateViewFile(info)); } else { var info = new InformationSchema("ngvwGet" + data.Target); base.Files.Add(fnCreateViewFile(info)); } } return file; }
private void Process() { List<AnalyzeData> lst = new List<AnalyzeData>(); string text = (acNameBox.SelectedValue ?? string.Empty) as string; if (!string.IsNullOrEmpty(text)) { //get all columns & display them on screen. InformationSchema schema = new InformationSchema(text, true); //TODO: Display already existing routes for verifications GetDependants(text); dgDBSchema.ItemsSource = schema.MetaData.Select(m => new MetaData { Name = m.Name, DataType = m.DataType, ParentRefTable = m.ParentRefTable, IsRequired = !m.IsRequired, IsPK = m.IsPK, Remarks = m.Remarks, Key = m.Key }).ToList(); if (!text.Contains("ngvw")) { txtProcessingInfo.Visibility = Visibility.Visible; ProcessingInfoLbl.Visibility = Visibility.Visible; //GetAnalyzingInfoText(schema.MetaData); GetKeyInfo(text); } else { txtProcessingInfo.Visibility = Visibility.Hidden; ProcessingInfoLbl.Visibility = Visibility.Hidden; //var dTable = SQLHelper.ExecuteDataTable("SELECT m.definition FROM sys.views v INNER JOIN sys.sql_modules m ON m.object_id = v.object_id WHERE name = '" + acNameBox.Text + "'"); //if (dTable.Rows.Count > 0) //{ // var temp = dTable.Rows[0][0].ToString(); // int index = temp.IndexOf("from"); // if (index < 0) // index = temp.IndexOf("FROM"); // var xtext = temp.Substring(index + 4, temp.Length - (index + 4)); // FlowDocument aFlowDoc = new FlowDocument(); // aFlowDoc.PagePadding = new Thickness(01); // aFlowDoc.Foreground = new SolidColorBrush(Colors.LightBlue); // aFlowDoc.FontFamily = new FontFamily("Consolas"); // aFlowDoc.FontSize = 12; // aFlowDoc.LineHeight = 2; // var para = new Paragraph(); // para.Inlines.Add(new Run(xtext)); // aFlowDoc.Blocks.Add(para); // txtProcessingInfo.Document = aFlowDoc; // TextRange tr = new TextRange(txtProcessingInfo.Document.ContentEnd, txtProcessingInfo.Document.ContentEnd); // tr.Text = "JOIN"; // tr.ApplyPropertyValue(TextElement.BackgroundProperty, new SolidColorBrush(Colors.Red)); //} } } }
public List<ClassMetaData> ProcessAssembly(List<Type> types) { List<ClassMetaData> output = new List<ClassMetaData>(); foreach (Type type in types) { var propertyMetaData = new List<PropertyMetaData>(); if (!type.IsSealed && type.IsClass) { var dataContractAttr = Attribute.GetCustomAttribute(type, typeof(DataContractAttribute)); string tableDataDescription = string.Empty; string tableDataName = string.Empty; string GuidValue = string.Empty; if (dataContractAttr != null) { var properties = type.GetProperties(BindingFlags.Public | BindingFlags.Instance); var classDBMetadata = new InformationSchema(type.Name, includeDescription: true); var tableDataAttr = Attribute.GetCustomAttribute(type, typeof(TableDataAttribute)); if (tableDataAttr != null) { var attrTemp = (((TableDataAttribute)tableDataAttr)); tableDataDescription = attrTemp.Description; tableDataName = attrTemp.Name; } var guidAttr = Attribute.GetCustomAttribute(type, typeof(System.Runtime.InteropServices.GuidAttribute)); if (guidAttr != null) { GuidValue = (((System.Runtime.InteropServices.GuidAttribute)guidAttr)).Value; } if (classDBMetadata == null) { classDBMetadata = new InformationSchema(tableDataName, includeDescription: true); } foreach (var p in properties) { bool isDataMemberAttr = false; try { MetaData m = null; if (classDBMetadata != null && classDBMetadata.MetaData != null) { m = classDBMetadata.MetaData.Find(c => c.Name.ToLower().Equals(p.Name.ToLower())); if (m == null) m = new MetaData(); } var datamemberAttr = Attribute.GetCustomAttribute(p, typeof(DataMemberAttribute)); if (datamemberAttr != null) { isDataMemberAttr = true; } var attr = Attribute.GetCustomAttribute(p, typeof(ColumnDataAttribute)); if (attr != null) { ColumnDataAttribute cat = ((ColumnDataAttribute)attr); propertyMetaData.Add(new PropertyMetaData() { ClassName = type.Name, Name = p.Name, Type = p.PropertyType.GetDisplayName(), Guid = cat.ModelTupleId, IsDataMember = isDataMemberAttr, Description = string.IsNullOrEmpty(cat.Description) ? m.Remarks : cat.Description, PrimaryOrCompositeKey = cat.PrimaryOrCompositeKey || m.IsPK, Required = cat.Required || m.IsRequired }); } else { propertyMetaData.Add(new PropertyMetaData() { ClassName = type.Name, Name = p.Name, IsDataMember = isDataMemberAttr, Guid = string.Empty, Type = p.PropertyType.GetDisplayName(), Description = m.Remarks, PrimaryOrCompositeKey = m.IsPK, Required = m.IsRequired }); } } catch (Exception) { propertyMetaData.Add(new PropertyMetaData() { IsDataMember = isDataMemberAttr, ClassName = type.Name, Type = p.PropertyType.GetDisplayName(), Name = p.Name, Guid = string.Empty }); } } } output.Add(new ClassMetaData { Name = type.Name, Guid = GuidValue, TableDataDescription = tableDataDescription, TableDataName = tableDataName, PropertyMetaData = propertyMetaData }); } } return output; }
public List<CodeFile> ApplyFixToCodeAnalysisDocument(string filePath, List<Type> types, string productName = "Core") { DataSet ds = new DataSet(); ds.ReadFromExcel(filePath); List<ClassMetaData> classMeta = new List<ClassMetaData>(); List<ClassMetaData> aseemblyData = new List<ClassMetaData>(); List<PropertyMetaData> propMeta = new List<PropertyMetaData>(); if (types != null && types.Any()) aseemblyData = ProcessAssembly(types); if (ds.Tables[0].Rows.Count > 0 && ds.Tables[1].Rows.Count > 0) { foreach (DataRow rs in ds.Tables[0].Rows) { if (!string.IsNullOrEmpty(rs["Name"].ToString())) classMeta.Add(new ClassMetaData() { Name = rs["Name"].ToString(), Guid = rs["Guid"].ToString(), TableDataDescription = rs["TableDataDescription"].ToString(), TableDataName = rs["TableDataName"].ToString() }); } foreach (DataRow rs in ds.Tables[1].Rows) { if (!string.IsNullOrEmpty(rs["ClassName"].ToString())) propMeta.Add(new PropertyMetaData() { Name = rs["Name"].ToString(), Guid = rs["Guid"].ToString(), Description = rs["Description"].ToString(), ClassName = rs["ClassName"].ToString(), Type = rs["Type"].ToString(), IsDataMember = rs["IsDataMember"].ToString().Equals("1") ? true : false, PrimaryOrCompositeKey = rs["PrimaryOrCompositeKey"].ToString().Equals("1") ? true : false, Required = rs["Required"].ToString().Equals("1") ? true : false }); } } var files = new List<CodeFile>(); var svcObj = new ServiceObject(productName, CodeFileType.ServiceObject); classMeta.ForEach(c => { c.PropertyMetaData = propMeta.FindAll(p => p.ClassName == c.Name); var aC = aseemblyData.Find(ax => ax.Name == c.Name); List<PropertyMetaData> exceptMeta = null; if (aC != null) { exceptMeta = (from c1 in aC.PropertyMetaData join c2 in c.PropertyMetaData on c1.Name equals c2.Name into gt from sub in gt.DefaultIfEmpty() where sub == null select c1).ToList(); if (exceptMeta.Count > 0) { c.PropertyMetaData.AddRange(exceptMeta); } } var schema = new InformationSchema(); schema.Target = schema.TargetName = c.Name; schema.TableDataDescription = c.TableDataDescription; schema.TableDataName = c.TableDataName; schema.TargetGuid = c.Guid; schema.MetaData = c.PropertyMetaData.Select(p => p.GetMetaData()).ToList(); files.Add(svcObj.Build(schema)); }); string path = @"C:\temp\"; files.ForEach(f => { //if (f.Type == CodeFileType.RepositoryObject || f.Type == CodeFileType.ServiceObject || f.Type == CodeFileType.IManager) f.Content = f.Content.Replace("$PRODUCTNAME$", productName).FormatWhiteSpaces(); //else // f.Content = f.Content.Replace("$PRODUCTNAME$", productName); Utils.Util.Write2File(path, f.Content, f.Name); }); Process.Start(new ProcessStartInfo(path)); return files; }
public string CreateMochaDocument(RouteConfig _RouteConfig, string target) { StringBuilder content = new StringBuilder(); content.Append(String.Format("var testWrapper = require('../../node_modules/TestWrapper/TestWrapper');{0}var should = require('../../node_modules/should');{0}var assert = require('../../node_modules/assert');{0}var objectComparison = require('../../node_modules/objectcompare');{0}", Environment.NewLine)); content.Append(String.Format("{1}var new{0}Id=null;{1}", target, Environment.NewLine)); content.Append(String.Format("var organizationId = '99E62AD8-D585-48CE-9D97-A315BEA2760C'; //Baxter physician group {0}", Environment.NewLine)); content.Append(String.Format("var new{0}={{ {1}", target, Environment.NewLine)); var data = new InformationSchema(target); data.MetaData.ForEach(m => { if (!m.Name.Equals(target + "Id")) content.Append(String.Format("'{0}':'{1}',{2}", m.Name, GetDefaultDataValue(m), Environment.NewLine)); }); content.Append(String.Format("}};{0}", Environment.NewLine)); string eFunctionName = String.Format("evaluateCreate{0}Response", target); content.Append(string.Format( @"//Custom response evaluator for {0} POST test function evaluateCreate{0}Response(actual, expected, testCompletionCallback) {{ var keysToIgnore = ['{0}Id', 'SessionKey', 'Success']; var transportMessage = JSON.parse(actual); var expectedMessage = JSON.parse(expected); var actual{0} = testWrapper.ElementsToIgnore(JSON.stringify(transportMessage.response), keysToIgnore); var expected{0} = testWrapper.ElementsToIgnore(JSON.stringify(expectedMessage), keysToIgnore); try {{ if (transportMessage.response != undefined && transportMessage.response[0] != undefined && transportMessage.response[0].{0}Id != undefined) {{ new{0}Id = transportMessage.response[0].{0}Id; }} testCompletionCallback(); }} catch (e) {{ }} }}", target)); //var typesOrder = new List<String> { "POST", "PUT", "GET", "DELETE" }; //typesOrder.ForEach(type => //{.Where(m => m.Type.ToUpper() == type) _RouteConfig.MetaData.OrderBy(m => m.OrdinalPosition).ToList().ForEach(r => { if (r.MochaScript == null) { var rx = _RouteConfig.MetaData.Where(mx => mx.Type == r.Type).FirstOrDefault(); r.MochaScript = rx.MochaScript ?? string.Empty; } content.Append(r.MochaScript.Replace("$SYS_DESCR$", r.Description) .Replace("$SYS_URI$", r.Uri) .Replace("$SYS_NAME$", r.Name) .Replace("$SYS_TARGET$", target) .Replace("$SYS_NEW_OBJECT$", "new" + target) .Replace("$SYS_EVAL_FUNC_NAME$", eFunctionName) .Replace("$SYS_EXEC_URI$", formatURI(r.Uri))); content.Append(Environment.NewLine); }); //}); return content.ToString().FormatWhiteSpaces(); }
public override CodeFile Build(InformationSchema data) { CodeFile file = new CodeFile(); StringBuilder insertMembers = new StringBuilder(); StringBuilder updateMembers = new StringBuilder(); StringBuilder svcObjMembers = new StringBuilder(); string insertMemberTemplate = data.IncludeSmartFile ? Template.Element("InsertSmartFileMember").Value : Template.Element("InsertMember").Value; string updateMemberTemplate = Template.Element("UpdateMember").Value; data.MetaData.ForEach(m => { if (!m.Name.Equals(data.Target + "Id")) { svcObjMembers.Append(String.Format("\t\t.With{0}({2}){1}", m.Name, Environment.NewLine, GetDefaultDataValue(m))); if (m.IsRequired) { if (m.DataType == typeof(string)) { insertMembers.Append(insertMemberTemplate .Replace("$SYS_MEMBERNAME$", m.Name) .Replace("$SYS_NULLVALUE$", "string.Empty") .Replace("$SYS_NULLVALUE_MSG$", "Empty")); updateMembers.Append(updateMemberTemplate .Replace("$SYS_MEMBERNAME$", m.Name) .Replace("$SYS_NULLVALUE$", "string.Empty") .Replace("$SYS_NULLVALUE_MSG$", "Empty")); } else if (m.DataType == typeof(Guid)) { insertMembers.Append(insertMemberTemplate .Replace("$SYS_MEMBERNAME$", m.Name) .Replace("$SYS_NULLVALUE$", "Guid.Empty") .Replace("$SYS_NULLVALUE_MSG$", "Guid.Empty")); updateMembers.Append(updateMemberTemplate .Replace("$SYS_MEMBERNAME$", m.Name) .Replace("$SYS_NULLVALUE$", "Guid.Empty") .Replace("$SYS_NULLVALUE_MSG$", "Guid.Empty")); } } } }); string templateValue = Template.Element(data.IncludeSmartFile ? "SmartFileTest" : "CRUDTest").Value; if (data.TargetProduct.ToLower().Equals("core")) { templateValue = templateValue .Replace("SetupMocks(InsertedParentOrganization.OrganizationId, $SYS_TARGET$Library);", "") .Replace("SetupMocks(InsertedParentOrganization.OrganizationId, Mapper.Map<CoreRepositoryObject.Library>($SYS_TARGET$Library));", "") .Replace("SetupMocks(InsertedOrganization.OrganizationId, Mapper.Map<CoreRepositoryObject.Library>($SYS_TARGET$Library));", "") .Replace("SetupMocks(InsertedOrganization.OrganizationId, $SYS_TARGET$Library);", "") .Replace("SetupMocks(newOrganization.OrganizationId, $SYS_VAR_TARGET$Library);", "") .Replace("SetupMocks(inheritorOrganization.OrganizationId, $SYS_TARGET$Library);", "") .Replace("$SYS_MOCKSTEMPLATE$", ""); } else { templateValue = templateValue.Replace("$SYS_MOCKSTEMPLATE$", Template.Element("MockTemplate").Value); } file.Content = templateValue .Replace("$SYS_INSERT_OPS_VALIDATIONS$", insertMembers.ToString()) .Replace("$SYS_UPDATE_OPS_VALIDATIONS$", updateMembers.ToString()) .Replace("$SYS_SVCOBJ_MEMBERS$", svcObjMembers.ToString()) .Replace("$SYS_VAR_TARGET$", GetVariableName(data.Target)) .Replace("$SYS_VAR_PLURAL_TARGET$", Util.Pluralize(GetVariableName(data.Target))) .Replace("$SYS_TARGET$", data.Target) .Replace("$SYS_PLURAL_TARGET$", Util.Pluralize(data.Target)); file.Name = Template.Element("FileName").Value.Replace("$SYS_TARGET$", data.Target); file.Path = base.GetFileLocation(); file.Type = CodeFileType.UnitTest; base.Files = new List<CodeFile>() { file }; return file; }
public abstract CodeFile Build(InformationSchema data);