public static void ValidateTargetField(TargetField targetField, bool isDirty, string sourceClassFullName, string sourceFieldName, EnumTargetControlType targetControlType, string targetFieldName) { Assert.AreEqual(isDirty, targetField.IsDirty); Assert.AreEqual(sourceClassFullName, targetField.SourceClassFullName); Assert.AreEqual(sourceFieldName, targetField.SourceFieldName); Assert.AreEqual(targetControlType, targetField.TargetControlType); Assert.AreEqual(targetFieldName, targetField.TargetFieldName); }
public static TargetField TryLoad(CSProperty csProperty) { TargetField returnValue = null; var uiClientPropertyAttribute = csProperty.AttributeList.SingleOrDefault(i => i.TypeName == typeof(UIClientPropertyAttribute).Name && i.TypeNamespace == typeof(UIClientPropertyAttribute).Namespace); if (uiClientPropertyAttribute != null) { returnValue = new TargetField { SourceFieldName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(0, "SourceFieldName", true)), SourceClassFullName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(1, "SourceFieldTypeFullName", true)) }; } return returnValue; }
public static TargetField TryLoad(CSProperty csProperty) { TargetField returnValue = null; var uiClientPropertyAttribute = csProperty.AttributeList.SingleOrDefault(i => i.TypeName == typeof(UIClientPropertyAttribute).Name && i.TypeNamespace == typeof(UIClientPropertyAttribute).Namespace); if (uiClientPropertyAttribute != null) { returnValue = new TargetField { SourceFieldName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(0, "SourceFieldName", true)), SourceClassFullName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(1, "SourceFieldTypeFullName", true)) }; } return(returnValue); }
public TargetField TryLoadField(CSProperty csProperty) { TargetField returnValue = null; var uiClientPropertyAttribute = csProperty.AttributeList.SingleOrDefault(i => i.TypeFullName == typeof(UIClientPropertyAttribute).FullName); if (uiClientPropertyAttribute != null) { string sourceFieldName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(0, "sourceFieldName", true)); string sourceClassFullName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(1, "sourceFieldTypeFullName", true)); returnValue = new TargetField { SourceFieldName = sourceFieldName, SourceClassFullName = sourceClassFullName, TargetFieldName = csProperty.PropertyName, TargetControlType = GetTargetControlType(sourceClassFullName) }; } return returnValue; }
public TargetField TryLoadField(CSProperty csProperty) { TargetField returnValue = null; var uiClientPropertyAttribute = csProperty.AttributeList.SingleOrDefault(i => i.TypeFullName == typeof(UIClientPropertyAttribute).FullName); if (uiClientPropertyAttribute != null) { string sourceFieldName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(0, "sourceFieldName", true)); string sourceClassFullName = Convert.ToString(uiClientPropertyAttribute.GetAttributeParameter(1, "sourceFieldTypeFullName", true)); returnValue = new TargetField { SourceFieldName = sourceFieldName, SourceClassFullName = sourceClassFullName, TargetFieldName = csProperty.PropertyName, TargetControlType = GetTargetControlType(sourceClassFullName) }; } return(returnValue); }
public static void AddHyperLinkControl(TypeDeclaration classObject, TargetField field, string fullTypeName) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("[{0}(\"{1}\",\"{2}\")] ", typeof(UIClientPropertyAttribute).FullName, field.SourceFieldName, fullTypeName); sb.AppendFormat("public Link {0}", field.SourceFieldName); sb.AppendFormat("{{ get {{ return this.TryGetLink(\"ctrl00_{0}\"); }} }}", field.SourceFieldName); using(StringReader reader = new StringReader(sb.ToString())) { CSharpParser parser = new CSharpParser(); var memberList = parser.ParseTypeMembers(reader); foreach(var member in memberList) { var property = (PropertyDeclaration)member; var role = new ICSharpCode.NRefactory.Role<ICSharpCode.NRefactory.CSharp.AttributedNode>("Member"); property.Remove(); classObject.AddChild(property, TypeDeclaration.MemberRole); } } }
public static TargetClassComparisonResult Compare(SourceWebPage webPage, TargetClass targetClass) { TargetClassComparisonResult comparison = new TargetClassComparisonResult(); foreach(var control in webPage.Controls) { var targetField = targetClass.TargetFieldList.FirstOrDefault(i=>i.SourceFieldName == control.FieldName && i.SourceClassFullName == control.ClassFullName); if(targetField == null) { targetField = new TargetField() { SourceFieldName = control.FieldName, SourceClassFullName = control.ClassFullName }; comparison.FieldsToAdd.Add(targetField); } } return comparison; }
public static void AddHyperLinkControl(TypeDeclaration classObject, TargetField field, string fullTypeName) { StringBuilder sb = new StringBuilder(); sb.AppendFormat("[{0}(\"{1}\",\"{2}\")] ", typeof(UIClientPropertyAttribute).FullName, field.SourceFieldName, fullTypeName); sb.AppendFormat("public Link {0}", field.SourceFieldName); sb.AppendFormat("{{ get {{ return this.TryGetLink(\"ctrl00_{0}\"); }} }}", field.SourceFieldName); using (StringReader reader = new StringReader(sb.ToString())) { CSharpParser parser = new CSharpParser(); var memberList = parser.ParseTypeMembers(reader); foreach (var member in memberList) { var property = (PropertyDeclaration)member; var role = new ICSharpCode.NRefactory.Role <ICSharpCode.NRefactory.CSharp.AttributedNode>("Member"); property.Remove(); classObject.AddChild(property, TypeDeclaration.MemberRole); } } }
public static TargetClassComparisonResult Compare(SourceWebPage webPage, TargetClass targetClass) { TargetClassComparisonResult comparison = new TargetClassComparisonResult(); foreach (var control in webPage.Controls) { var targetField = targetClass.TargetFieldList.FirstOrDefault(i => i.SourceFieldName == control.FieldName && i.SourceClassFullName == control.ClassFullName); if (targetField == null) { targetField = new TargetField() { SourceFieldName = control.FieldName, SourceClassFullName = control.ClassFullName }; comparison.FieldsToAdd.Add(targetField); } } return(comparison); }
public TargetClass UpdateClass(SourceWebPage sourceWebPage, TargetClass targetClass) { foreach (var sourceControl in sourceWebPage.Controls) { var targetField = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); if (targetField == null) { targetField = new TargetField { IsDirty = true, SourceNamespaceName = sourceControl.NamespaceName, SourceClassName = sourceControl.ClassName, SourceFieldName = sourceControl.FieldName, TargetFieldName = sourceControl.FieldName }; EnumTargetControlType targetControlType; targetControlType = GetTargetControlType(sourceControl); targetField.TargetControlType = targetControlType; targetClass.TargetFieldList.Add(targetField); } else { if (targetField.SourceClassFullName != sourceControl.ClassFullName) { targetField.SourceClassName = sourceControl.ClassName; targetField.SourceNamespaceName = sourceControl.NamespaceName; targetField.IsDirty = true; } var targetControlType = GetTargetControlType(sourceControl); if (targetField.TargetControlType != targetControlType) { targetField.TargetControlType = targetControlType; targetField.IsDirty = true; } } } return(targetClass); }
public static void AddLiteralControl(TypeDeclaration classObject, TargetField field) { //throw new NotImplementedException(); }
public TargetClass UpdateClass(SourceWebPage sourceWebPage, TargetClass targetClass) { foreach(var sourceControl in sourceWebPage.Controls) { var targetField = targetClass.TargetFieldList.SingleOrDefault(i=>i.SourceFieldName == sourceControl.FieldName); if(targetField == null) { targetField = new TargetField { IsDirty = true, SourceNamespaceName = sourceControl.NamespaceName, SourceClassName = sourceControl.ClassName, SourceFieldName = sourceControl.FieldName, TargetFieldName = sourceControl.FieldName }; EnumTargetControlType targetControlType; targetControlType = GetTargetControlType(sourceControl); targetField.TargetControlType = targetControlType; targetClass.TargetFieldList.Add(targetField); } else { if(targetField.SourceClassFullName != sourceControl.ClassFullName) { targetField.SourceClassName = sourceControl.ClassName; targetField.SourceNamespaceName = sourceControl.NamespaceName; targetField.IsDirty = true; } var targetControlType = GetTargetControlType(sourceControl); if(targetField.TargetControlType != targetControlType) { targetField.TargetControlType = targetControlType; targetField.IsDirty = true; } } } return targetClass; }
//public TargetProject UpdateProject(TargetProject targetProject, SourceWebProject sourceProject) //{ // //List<TargetClass> classesToAddToProject = new List<TargetClass>(); // //foreach (var masterPage in sourceProject.MasterPageList) // //{ // // //Find existing object // // var targetClass = targetProject.TargetClassList.SingleOrDefault(i => i.SourceClassFullName == masterPage.ClassFullName); // // if (targetClass == null) // // { // // //If does not exist, create it // // targetClass = TargetClass.Create(targetProject, sourceProject, masterPage); // // classesToAddToProject.Add(targetClass); // // } // // targetClass.ExpectedUrl = masterPage.PageUrl; // // targetClass.TargetObjectType = EnumTargetObjectType.MasterPage; // // //For each missing field, add it // // var comparison = TargetClassComparisonResult.Compare(masterPage, targetClass); // // targetClass.EnsureFiles(targetProjectPath); // // targetClass.AddFieldsToFile(targetProjectPath, targetClass.DesignerFilePath, comparison.FieldsToAdd); // //} // foreach (var sourcePage in sourceProject.WebPageList) // { // var targetClass = targetProject.TargetClassList.FirstOrDefault(i=>i.SourceClassFullName == sourcePage.ClassFullName); // if(targetClass == null) // { // string relativeSourceNamespace; // if(sourcePage.NamespaceName == sourceProject.RootNamespace) // { // relativeSourceNamespace = string.Empty; // } // else if(sourcePage.NamespaceName.StartsWith(sourceProject.RootNamespace)) // { // relativeSourceNamespace = sourcePage.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); // } // else // { // relativeSourceNamespace = sourcePage.NamespaceName; // } // string targetClassName = sourcePage.ClassName + "PageClient"; // string targetDirectory = @"Client\Pages\" + relativeSourceNamespace.Replace(".","\\");; // string targetNamespace = targetProject.RootNamespace + ".Client.Pages." + relativeSourceNamespace; // targetClass = new TargetClass // { // SourceClassFullName = sourcePage.ClassFullName, // TargetClassFullName = targetNamespace + "." + targetClassName, // DesignerFilePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), // UserFilePath = Path.Combine(targetDirectory, targetClassName + ".cs"), // TargetObjectType = EnumTargetObjectType.WebPage, // ExpectedUrl = sourcePage.PageUrl // }; // targetProject.TargetClassList.Add(targetClass); // } // } // return targetProject; //} public TargetClassComparisonResult CompareClass(SourceWebProject sourceProject, SourceWebPage sourceClass, TargetProject targetProject, TargetClass targetClass) { TargetClassComparisonResult result; if(targetClass == null) { string relativeSourceNamespace; if (sourceClass.NamespaceName == sourceProject.RootNamespace) { relativeSourceNamespace = string.Empty; } else if (sourceClass.NamespaceName.StartsWith(sourceProject.RootNamespace)) { relativeSourceNamespace = sourceClass.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); } else { relativeSourceNamespace = sourceClass.NamespaceName; } string targetClassName = sourceClass.ClassName + "PageClient"; string targetDirectory = @"Client\Pages"; string targetNamespace = targetProject.RootNamespace + ".Client.Pages"; if(!string.IsNullOrEmpty(relativeSourceNamespace)) { targetDirectory += "\\" + relativeSourceNamespace.Replace(".", "\\"); targetNamespace += "." + relativeSourceNamespace; } result = new TargetClassComparisonResult { SourceClassFullName = sourceClass.ClassFullName, TargetClassName = targetClassName, TargetNamespaceName = targetNamespace, DesignerFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), UserFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".cs"), SourceObjectType = EnumSourceObjectType.WebPage, ExpectedUrl = sourceClass.PageUrl, IsDirty = true }; } else { result = new TargetClassComparisonResult { SourceClassFullName = targetClass.SourceClassFullName, TargetClassFullName = targetClass.TargetClassFullName, DesignerFileRelativePath = targetClass.DesignerFileRelativePath, UserFileRelativePath = targetClass.UserFileRelativePath, SourceObjectType = targetClass.SourceObjectType, ExpectedUrl = targetClass.ExpectedUrl }; if(targetClass.ExpectedUrl != sourceClass.PageUrl) { result.ExpectedUrl = sourceClass.PageUrl; result.IsDirty = true; } if(targetClass.SourceObjectType != sourceClass.SourceObjectType) { result.SourceObjectType = sourceClass.SourceObjectType; result.IsDirty = true; } } foreach(var sourceControl in sourceClass.Controls) { TargetField targetControl = null; if(targetClass != null) { targetControl = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); } if(targetControl == null) { targetControl = new TargetField { SourceClassFullName = sourceControl.ClassFullName, SourceFieldName = sourceControl.FieldName, TargetControlType = this.TargetClassManager.GetTargetControlType(sourceControl.ClassFullName), IsDirty = true, TargetFieldName = sourceControl.FieldName }; result.FieldsToAdd.Add(targetControl); result.IsDirty = true; } else if(targetControl.SourceClassFullName != sourceControl.ClassFullName) { targetControl.SourceClassFullName = sourceControl.ClassFullName; result.FieldsToUpdate.Add(targetControl); targetControl.IsDirty = true; result.IsDirty = true; } } return result; }
//public TargetProject UpdateProject(TargetProject targetProject, SourceWebProject sourceProject) //{ // //List<TargetClass> classesToAddToProject = new List<TargetClass>(); // //foreach (var masterPage in sourceProject.MasterPageList) // //{ // // //Find existing object // // var targetClass = targetProject.TargetClassList.SingleOrDefault(i => i.SourceClassFullName == masterPage.ClassFullName); // // if (targetClass == null) // // { // // //If does not exist, create it // // targetClass = TargetClass.Create(targetProject, sourceProject, masterPage); // // classesToAddToProject.Add(targetClass); // // } // // targetClass.ExpectedUrl = masterPage.PageUrl; // // targetClass.TargetObjectType = EnumTargetObjectType.MasterPage; // // //For each missing field, add it // // var comparison = TargetClassComparisonResult.Compare(masterPage, targetClass); // // targetClass.EnsureFiles(targetProjectPath); // // targetClass.AddFieldsToFile(targetProjectPath, targetClass.DesignerFilePath, comparison.FieldsToAdd); // //} // foreach (var sourcePage in sourceProject.WebPageList) // { // var targetClass = targetProject.TargetClassList.FirstOrDefault(i=>i.SourceClassFullName == sourcePage.ClassFullName); // if(targetClass == null) // { // string relativeSourceNamespace; // if(sourcePage.NamespaceName == sourceProject.RootNamespace) // { // relativeSourceNamespace = string.Empty; // } // else if(sourcePage.NamespaceName.StartsWith(sourceProject.RootNamespace)) // { // relativeSourceNamespace = sourcePage.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); // } // else // { // relativeSourceNamespace = sourcePage.NamespaceName; // } // string targetClassName = sourcePage.ClassName + "PageClient"; // string targetDirectory = @"Client\Pages\" + relativeSourceNamespace.Replace(".","\\");; // string targetNamespace = targetProject.RootNamespace + ".Client.Pages." + relativeSourceNamespace; // targetClass = new TargetClass // { // SourceClassFullName = sourcePage.ClassFullName, // TargetClassFullName = targetNamespace + "." + targetClassName, // DesignerFilePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), // UserFilePath = Path.Combine(targetDirectory, targetClassName + ".cs"), // TargetObjectType = EnumTargetObjectType.WebPage, // ExpectedUrl = sourcePage.PageUrl // }; // targetProject.TargetClassList.Add(targetClass); // } // } // return targetProject; //} public TargetClassComparisonResult CompareClass(SourceWebProject sourceProject, SourceWebPage sourceClass, TargetProject targetProject, TargetClass targetClass) { TargetClassComparisonResult result; if (targetClass == null) { string relativeSourceNamespace; if (sourceClass.NamespaceName == sourceProject.RootNamespace) { relativeSourceNamespace = string.Empty; } else if (sourceClass.NamespaceName.StartsWith(sourceProject.RootNamespace)) { relativeSourceNamespace = sourceClass.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); } else { relativeSourceNamespace = sourceClass.NamespaceName; } string targetClassName = sourceClass.ClassName + "PageClient"; string targetDirectory = @"Client\Pages"; string targetNamespace = targetProject.RootNamespace + ".Client.Pages"; if (!string.IsNullOrEmpty(relativeSourceNamespace)) { targetDirectory += "\\" + relativeSourceNamespace.Replace(".", "\\"); targetNamespace += "." + relativeSourceNamespace; } result = new TargetClassComparisonResult { SourceClassFullName = sourceClass.ClassFullName, TargetClassName = targetClassName, TargetNamespaceName = targetNamespace, DesignerFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), UserFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".cs"), SourceObjectType = EnumSourceObjectType.WebPage, ExpectedUrl = sourceClass.PageUrl, IsDirty = true }; } else { result = new TargetClassComparisonResult { SourceClassFullName = targetClass.SourceClassFullName, TargetClassFullName = targetClass.TargetClassFullName, DesignerFileRelativePath = targetClass.DesignerFileRelativePath, UserFileRelativePath = targetClass.UserFileRelativePath, SourceObjectType = targetClass.SourceObjectType, ExpectedUrl = targetClass.ExpectedUrl }; if (targetClass.ExpectedUrl != sourceClass.PageUrl) { result.ExpectedUrl = sourceClass.PageUrl; result.IsDirty = true; } if (targetClass.SourceObjectType != sourceClass.SourceObjectType) { result.SourceObjectType = sourceClass.SourceObjectType; result.IsDirty = true; } } foreach (var sourceControl in sourceClass.Controls) { TargetField targetControl = null; if (targetClass != null) { targetControl = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); } if (targetControl == null) { targetControl = new TargetField { SourceClassFullName = sourceControl.ClassFullName, SourceFieldName = sourceControl.FieldName, TargetControlType = this.TargetClassManager.GetTargetControlType(sourceControl.ClassFullName), IsDirty = true, TargetFieldName = sourceControl.FieldName }; result.FieldsToAdd.Add(targetControl); result.IsDirty = true; } else if (targetControl.SourceClassFullName != sourceControl.ClassFullName) { targetControl.SourceClassFullName = sourceControl.ClassFullName; result.FieldsToUpdate.Add(targetControl); targetControl.IsDirty = true; result.IsDirty = true; } } return(result); }