Author: brett
Date: Mon May  6 13:42:27 2013
New Revision: 1479568

URL: http://svn.apache.org/r1479568
Log:
[NPANDAY-254] add MSBuild when adding resources as items

Refactor out common code from the digester and reuse it from the addin

Added:
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
      - copied, changed from r1479480, 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
Removed:
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
Modified:
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs?rev=1479568&r1=1479567&r2=1479568&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
 Mon May  6 13:42:27 2013
@@ -31,6 +31,7 @@ using NPanday.Utils;
 using System.Text.RegularExpressions;
 using Microsoft.Build.Framework;
 using Microsoft.Build.Utilities;
+using NPanday.ProjectImporter.Utils;
 
 /// Author: Leopoldo Lee Agdeppa III
 
@@ -454,13 +455,7 @@ namespace NPanday.ProjectImporter.Digest
                                 embeddedResource.WithCulture = 
buildItem.GetMetadata("WithCulture");
                                 if 
(string.IsNullOrEmpty(embeddedResource.WithCulture))
                                 {
-                                    Microsoft.Build.Tasks.AssignCulture task = 
new Microsoft.Build.Tasks.AssignCulture();
-                                    task.Files = new TaskItem[]{
-                                        new TaskItem(buildItem.Include)
-                                    };
-                                    task.BuildEngine = new 
DigestingBuildEngine();
-                                    bool result = task.Execute();
-                                    embeddedResource.WithCulture = 
task.AssignedFiles[0].GetMetadata("Culture");
+                                    embeddedResource.WithCulture = 
MSBuildUtils.DetermineResourceCulture(buildItem.Include);
                                 }
 
                                 embeddedResources.Add(embeddedResource);

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj?rev=1479568&r1=1479567&r2=1479568&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday.ProjectImporterEngine.csproj
 Mon May  6 13:42:27 2013
@@ -64,7 +64,7 @@
     <Compile 
Include="Converter\Algorithms\WebWithVbOrCsProjectFilePomConverter.cs" />
     <Compile Include="DependencySearchConfiguration.cs" />
     <Compile Include="Digest\Algorithms\BaseProjectDigestAlgorithm.cs" />
-    <Compile Include="Digest\Algorithms\DigestingBuildEngine.cs" />
+    <Compile Include="Utils\LogOnlyBuildEngine.cs" />
     <Compile Include="Digest\Model\ComReference.cs" />
     <Compile Include="Digest\Model\SilverlightApplicationReference.cs" />
     <Compile Include="ImportProjectStructureAlgorithms\AbnormalProject.cs" />
@@ -110,6 +110,7 @@
     <Compile Include="Parser\SlnParser\SemanticalData.cs" />
     <Compile Include="Parser\SlnParser\Semantics.cs" />
     <Compile Include="Parser\SlnParser\SolutionFactory.cs" />
+    <Compile Include="Utils\MSBuildUtils.cs" />
     <Compile Include="Validator\ProjectStructureType.cs" />
     <Compile Include="Validator\ProjectValidator.cs" />
     <Compile Include="Verifiers\VerifyProjectImportSyncronization.cs" />

Copied: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
 (from r1479480, 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs)
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs?p2=incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs&p1=incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs&r1=1479480&r2=1479568&rev=1479568&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Algorithms/DigestingBuildEngine.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/LogOnlyBuildEngine.cs
 Mon May  6 13:42:27 2013
@@ -1,5 +1,4 @@
-using System;
-#region Apache License, Version 2.0
+#region Apache License, Version 2.0
 //
 // Licensed to the Apache Software Foundation (ASF) under one
 // or more contributor license agreements.  See the NOTICE file
@@ -19,17 +18,18 @@
 // under the License.
 //
 #endregion
+using System;
 using System.Collections.Generic;
 using System.Text;
 using Microsoft.Build.Framework;
 using System.Collections;
 using log4net;
 
-namespace NPanday.ProjectImporter.Digest.Algorithms
+namespace NPanday.ProjectImporter.Utils
 {
-    class DigestingBuildEngine : IBuildEngine
+    class LogOnlyBuildEngine : IBuildEngine
     {
-        private static readonly ILog log = 
LogManager.GetLogger(typeof(NormalProjectDigestAlgorithm));
+        private static readonly ILog log = 
LogManager.GetLogger(typeof(LogOnlyBuildEngine));
 
         public int ColumnNumberOfTaskNode { get { throw new 
NotImplementedException(); } }
         public int LineNumberOfTaskNode { get { throw new 
NotImplementedException(); } }

Added: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs?rev=1479568&view=auto
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
 (added)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Utils/MSBuildUtils.cs
 Mon May  6 13:42:27 2013
@@ -0,0 +1,40 @@
+#region Apache License, Version 2.0
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements.  See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership.  The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License.  You may obtain a copy of the License at
+//
+//   http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied.  See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using Microsoft.Build.Utilities;
+
+namespace NPanday.ProjectImporter.Utils
+{
+    public class MSBuildUtils
+    {
+        public static string DetermineResourceCulture(string name)
+        {
+            Microsoft.Build.Tasks.AssignCulture task = new 
Microsoft.Build.Tasks.AssignCulture();
+            task.Files = new TaskItem[] { new TaskItem(name) };
+            task.BuildEngine = new LogOnlyBuildEngine();
+            bool result = task.Execute();
+            return task.AssignedFiles[0].GetMetadata("Culture");
+        }
+    }
+}

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs?rev=1479568&r1=1479567&r2=1479568&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.VisualStudio.Addin/src/main/csharp/Connect.cs
 Mon May  6 13:42:27 2013
@@ -48,6 +48,7 @@ using NPanday.VisualStudio.Addin.Command
 using NPanday.VisualStudio.Addin.Helper;
 using VSLangProj;
 using VSLangProj80;
+using NPanday.ProjectImporter.Utils;
 
 #endregion
 
@@ -130,6 +131,8 @@ namespace NPanday.VisualStudio.Addin
                 {
                     string resxName = projectItem.ContainingProject.Name + "." 
+ projectItem.Name.Replace(".resx", "");
 
+                    log.DebugFormat("Adding resource {0}", resxName);
+
                     //check if resx plugin already exists
                     if (!pomUtil.HasPlugin("org.apache.npanday.plugins", 
"maven-resgen-plugin"))
                     {
@@ -167,6 +170,16 @@ namespace NPanday.VisualStudio.Addin
                     {
                         
pomUtil.AddMavenResxPluginConfiguration("org.apache.npanday.plugins", 
"maven-resgen-plugin", "embeddedResources", "embeddedResource", 
projectItem.Name, resxName);
                     }
+
+                    string culture = 
MSBuildUtils.DetermineResourceCulture(projectItem.Name);
+                    if (!string.IsNullOrEmpty(culture))
+                    {
+                        log.DebugFormat("Resource has culture {0}, adding 
MSBuild plugin to POM", culture);
+                        if (!pomUtil.HasPlugin("org.apache.npanday.plugins", 
"NPanday.Plugin.Msbuild.JavaBinding"))
+                        {
+                            pomUtil.AddPlugin("org.apache.npanday.plugins", 
"NPanday.Plugin.Msbuild.JavaBinding", null, false, null, "compile");
+                        }
+                    }
                 }
             }
         }


Reply via email to