[commit] r2469 - in trunk: Install SDK/DotNet/DsmlGenerator SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Properties

GMESRC Repository Notifications gme-commit at list.isis.vanderbilt.edu
Fri Apr 18 10:23:54 CDT 2014


Author: ksmyth
Date: Fri Apr 18 10:23:54 2014
New Revision: 2469

Log:
DSMLGenerator: handle namespaces by renaming property gets with prefixed namespace name

Modified:
   trunk/Install/GME_SDK.wxs
   trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/Configuration.cs
   trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoChildren.cs
   trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoSrcDstConnections.cs
   trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Properties/AssemblyInfo.cs
   trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/app.manifest
   trunk/SDK/DotNet/DsmlGenerator/GME.DSMLGenerator.nuspec

Modified: trunk/Install/GME_SDK.wxs
==============================================================================
--- trunk/Install/GME_SDK.wxs	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/Install/GME_SDK.wxs	Fri Apr 18 10:23:54 2014	(r2469)
@@ -187,7 +187,7 @@
       </Class>
       <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\Implemented Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Value="" Type="string" Action="write" />
       <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\InprocServer32" Name="Class" Value="CSharpDSMLGenerator.CSharpDSMLGeneratorInterpreter" Type="string" Action="write" />
-      <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\InprocServer32" Name="Assembly" Value="CSharpDSMLGenerator, Version=1.0.12.1, Culture=neutral" Type="string" Action="write" />
+      <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\InprocServer32" Name="Assembly" Value="CSharpDSMLGenerator, Version=1.0.13.0, Culture=neutral" Type="string" Action="write" />
       <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\InprocServer32" Name="RuntimeVersion" Value="v4.0.30319" Type="string" Action="write" />
       <RegistryValue Root="HKCR" Key="CLSID\{78BE7B95-3564-4BA9-8FE6-8D9B91EEE0B8}\InprocServer32" Name="CodeBase" Value="file:///[#CSharpDSMLGenerator.dll]" Type="string" Action="write" />
       <RegistryValue Root="HKCR" Key="Component Categories\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}" Name="0" Value=".NET Category" Type="string" Action="write" />

Modified: trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/Configuration.cs
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/Configuration.cs	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/Configuration.cs	Fri Apr 18 10:23:54 2014	(r2469)
@@ -337,6 +337,33 @@
 			}
 		}
 
+        internal static string GetNamespacePrefixedName(MgaObject obj)
+        {
+            string ns = GetNamespaceName(obj);
+            if (string.IsNullOrEmpty(ns) == false)
+            {
+                return ns + "_" + obj.Name;
+            }
+            return obj.Name;
+        }
+
+        internal static IEnumerable<Tuple<MgaFCO, string>> GetUniqueNames(IEnumerable<MgaFCO> children, int count)
+        {
+            IEnumerable<Tuple<MgaFCO, string>> childNames;
+            HashSet<string> names = new HashSet<string>(children.Distinct().Select(x => x.Name));
+            if (names.Count != count)
+            {
+                childNames = children.Distinct().GroupBy(child => child.Name).Select(g => g.Count() > 1 ?
+                    g.Select(x => new Tuple<MgaFCO, string>(x, Configuration.GetNamespacePrefixedName((MgaObject)x))) :
+                    g.Select(x => new Tuple<MgaFCO, string>(x, x.Name))).SelectMany(child => child);
+            }
+            else
+            {
+                childNames = children.Distinct().Select(child => new Tuple<MgaFCO, string>(child, child.Name));
+            }
+            return childNames;
+        }
+
 		internal static string GetClassName(MgaFCO item)
 		{
 			return GetClassName(item as MgaObject);

Modified: trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoChildren.cs
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoChildren.cs	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoChildren.cs	Fri Apr 18 10:23:54 2014	(r2469)
@@ -86,8 +86,9 @@
 				childBases.ForEach(x => children.AddRange(GetDerivedClasses(x)));
 
 				// skip multiple containments
-				foreach (var child in children.Distinct())
+                foreach (var childName in Configuration.GetUniqueNames(children, children.Count))
 				{
+                    var child = childName.Item1;
 					// include all derived class child objects
 					IEnumerable<MgaFCO> derivedClasses = GetDerivedClasses(child);
 
@@ -96,13 +97,13 @@
 						Attributes = MemberAttributes.Public | MemberAttributes.Final,
 						HasGet = true,
                         Type = new CodeTypeReference("global::System.Collections.Generic.IEnumerable<" + Configuration.GetInterfaceName(child as MgaObject) + ">"),
-						Name = child.Name + "Collection",
+						Name = childName.Item2 + "Collection",
 					};
 
 					StringBuilder sb = new StringBuilder();
 					sb.AppendLine("<summary>");
 					sb.AppendLine("<para>");
-					sb.AppendLine("Retirves with specific kinds in the container.");
+					sb.AppendLine("Retrieves with specific kinds in the container.");
 					sb.AppendLine("</para>");
 
 					var filteredDerivedClasses = derivedClasses.

Modified: trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoSrcDstConnections.cs
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoSrcDstConnections.cs	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Generator/FcoSrcDstConnections.cs	Fri Apr 18 10:23:54 2014	(r2469)
@@ -62,6 +62,7 @@
 
 				newSrcConn.Members.Add(ctor);
 
+                var uniqueNames = Configuration.GetUniqueNames(connections.Select(x => x.Item1), connections.Count).ToDictionary(x => x.Item1, x => x.Item2);
 				foreach (IGrouping<MgaFCO, string> group in connections.GroupBy(x => x.Item1, x => x.Item2))
 				{
                     MgaFCO item = group.Key;
@@ -73,7 +74,7 @@
 					{
 						Attributes = MemberAttributes.Public,
 						HasGet = true,
-						Name = item.Name + "Collection",
+                        Name = uniqueNames[item] + "Collection",
 						Type = new CodeTypeReference("global::System.Collections.Generic.IEnumerable<" + Configuration.GetInterfaceName(item as MgaObject) + ">"),
 					};
 
@@ -215,6 +216,7 @@
 
 				newDstConn.Members.Add(ctor);
 
+                var uniqueNames = Configuration.GetUniqueNames(connections.Select(x => x.Item1), connections.Count).ToDictionary(x => x.Item1, x => x.Item2);
 				foreach (IGrouping<MgaFCO, string> group in connections.GroupBy(x => x.Item1, x => x.Item2))
 				{
                     MgaFCO item = group.Key;
@@ -226,7 +228,7 @@
 					{
 						Attributes = MemberAttributes.Public,
 						HasGet = true,
-						Name = item.Name + "Collection",
+						Name = uniqueNames[item] + "Collection",
 						Type = new CodeTypeReference("global::System.Collections.Generic.IEnumerable<" + Configuration.GetInterfaceName(item as MgaObject) + ">"),
 					};
 

Modified: trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Properties/AssemblyInfo.cs
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Properties/AssemblyInfo.cs	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/Properties/AssemblyInfo.cs	Fri Apr 18 10:23:54 2014	(r2469)
@@ -34,5 +34,5 @@
 // [assembly: AssemblyVersion("1.0.*")]
 
 // Keep in sync with app.manifest, GME_SDK.wxs, and GME.DSMLGenerator.nuspec
-[assembly: AssemblyVersion("1.0.12.1")]
-[assembly: AssemblyFileVersion("1.0.12.1")]
+[assembly: AssemblyVersion("1.0.13.0")]
+[assembly: AssemblyFileVersion("1.0.13.0")]

Modified: trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/app.manifest
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/app.manifest	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/CSharpDsmlGenerator/app.manifest	Fri Apr 18 10:23:54 2014	(r2469)
@@ -3,7 +3,7 @@
   <assemblyIdentity
                type="win32"
                name="CSharpDSMLGenerator"
-               version="1.0.12.1"
+               version="1.0.13.0"
                publicKeyToken="1321e6b92842fe54"
                processorArchitecture="msil" />
   <clrClass

Modified: trunk/SDK/DotNet/DsmlGenerator/GME.DSMLGenerator.nuspec
==============================================================================
--- trunk/SDK/DotNet/DsmlGenerator/GME.DSMLGenerator.nuspec	Wed Apr 16 13:13:07 2014	(r2468)
+++ trunk/SDK/DotNet/DsmlGenerator/GME.DSMLGenerator.nuspec	Fri Apr 18 10:23:54 2014	(r2469)
@@ -2,7 +2,7 @@
 <package >
   <metadata>
     <id>GME.DSMLGenerator</id>
-    <version>1.0.12.1</version>
+    <version>1.0.13.0</version>
     <title>GME DSMLGenerator</title>
     <authors>ISIS, Vanderbilt University</authors>
     <owners>ksmyth</owners>


More information about the gme-commit mailing list