using System; using System.Collections.Generic; using System.Text; using System.Xml; using System.IO; using NPanday.ProjectImporter.Digest; using NPanday.ProjectImporter.Digest.Model; using NPanday.Utils; using NPanday.Model.Pom; using NPanday.Artifact; using System.Reflection; using NPanday.ProjectImporter.Converter; /// Author: Leopoldo Lee Agdeppa III namespace NPanday.ProjectImporter.Converter.Algorithms { public class WebPomConverter : AbstractPomConverter { public WebPomConverter(ProjectDigest projectDigest, string mainPomFile, NPanday.Model.Pom.Model parent, string groupId) : base(projectDigest,mainPomFile,parent, groupId) { } /// /// Adds WebReference as Plugin /// Author: Joe Ocaba /// private string ParsePath(string path) { List pathCheck = new List(); string[] items = path.Split((@"\").ToCharArray()); string realPath = String.Empty; for (int i = 0; i < items.Length; i++) { if (!String.IsNullOrEmpty(items[i])) { if (!pathCheck.Contains(items[i]) || items[i] != ".") { realPath += items[i] + @"\" + @"\"; pathCheck.Add(items[i]); } } } return realPath; } private string[] GetWebReferenceValues() { string[] items = projectDigest.FullDirectoryName.Split((@"\").ToCharArray()); string currentDirectory = items[items.Length - 2]; string realPath = ParsePath(projectDigest.FullDirectoryName); string webReferenceFolder = "App_WebReferences"; string webReferenceDirectory = realPath + webReferenceFolder; if(Directory.Exists(webReferenceDirectory)) { List values = new List(); string[] directories = Directory.GetDirectories(webReferenceDirectory); foreach (string directory in directories) { string[] files = Directory.GetFiles(directory); foreach (string file in files) { if (file.Contains(".wsdl")) { int webDirIndex = file.IndexOf(currentDirectory); string refHolder = file.Substring(webDirIndex).Replace(@"\", "/"); values.Add(refHolder); } } } return values.ToArray(); } else { return null; } } private string GetOutputDirectory() { string[] items = projectDigest.FullDirectoryName.Split((@"\").ToCharArray()); string currentDirectory = items[items.Length - 2]; string realPath = ParsePath(projectDigest.FullDirectoryName); string webReferenceFolder = "App_WebReferences"; string webReferenceDirectory = realPath + webReferenceFolder; string outputDirectory = "." + "/" + currentDirectory + "/" + webReferenceFolder; return outputDirectory; } public override void ConvertProjectToPomModel(bool writePom, string scmTag) { GenerateHeader("asp"); Model.build.sourceDirectory = "."; if (scmTag != null && scmTag != string.Empty && Model.parent == null) { Scm scmHolder = new Scm(); scmHolder.connection = string.Format("scm:svn:{0}", scmTag); scmHolder.developerConnection = string.Format("scm:svn:{0}", scmTag); scmHolder.url = scmTag; Model.scm = scmHolder; } // Add NPanday compile plugin Plugin aspxPlugin = AddPlugin("npanday.plugin", "maven-aspx-plugin"); if(!string.IsNullOrEmpty(projectDigest.TargetFramework)) AddPluginConfiguration(aspxPlugin, "frameworkVersion", projectDigest.TargetFramework); //Add Project WebReferences //AddWebReferences(); // Add Project Inter-dependencies //AddInterProjectDependenciesToList(); // Add Project Reference Dependencies //AddProjectReferenceDependenciesToList(); if (writePom) { PomHelperUtility.WriteModelToPom(new FileInfo(Path.Combine(projectDigest.FullDirectoryName, "pom.xml")), Model); } } // override to insert only an NPanday artifact protected override void AddProjectReferenceDependency(Reference reference) { Dependency refDependency = ResolveDependency(reference); if (refDependency == null) { return; } if (!"library".Equals(refDependency.type, StringComparison.OrdinalIgnoreCase)) { // ignore gac if already in the RSP if (gacUtil.IsRspIncluded(refDependency.artifactId, projectDigest.Language)) { return; } // insert only NPanday Artifact AddDependency(refDependency); return; } } } }