Author: mculpepper(a)jboss.com
Date: 2007-12-03 14:54:50 -0500 (Mon, 03 Dec 2007)
New Revision: 5207
Added:
trunk/core/util/packaging-convert/.classpath
trunk/core/util/packaging-convert/.project
trunk/core/util/packaging-convert/.settings/
trunk/core/util/packaging-convert/.settings/org.codehaus.groovy.eclipse.preferences.prefs
trunk/core/util/packaging-convert/.settings/org.eclipse.jdt.core.prefs
trunk/core/util/packaging-convert/build.xml
trunk/core/util/packaging-convert/lib/
trunk/core/util/packaging-convert/lib/ant-1.6.5.jar
trunk/core/util/packaging-convert/lib/commons-cli-1.0.jar
trunk/core/util/packaging-convert/lib/dom4j-1.6.1.jar
trunk/core/util/packaging-convert/lib/groovy-all-1.0.jar
trunk/core/util/packaging-convert/lib/jaxen-1.1-beta-6.jar
trunk/core/util/packaging-convert/src/
trunk/core/util/packaging-convert/src/org/
trunk/core/util/packaging-convert/src/org/jboss/
trunk/core/util/packaging-convert/src/org/jboss/tools/
trunk/core/util/packaging-convert/src/org/jboss/tools/archives/
trunk/core/util/packaging-convert/src/org/jboss/tools/archives/PackagingConverter.groovy
Log:
Initial import of packaging converter
Added: trunk/core/util/packaging-convert/.classpath
===================================================================
--- trunk/core/util/packaging-convert/.classpath (rev 0)
+++ trunk/core/util/packaging-convert/.classpath 2007-12-03 19:54:50 UTC (rev 5207)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry exported="true" kind="lib"
path="bin-groovy"/>
+ <classpathentry kind="lib" path="lib/dom4j-1.6.1.jar"/>
+ <classpathentry kind="lib" path="lib/jaxen-1.1-beta-6.jar"/>
+ <classpathentry kind="lib" path="lib/groovy-all-1.0.jar"/>
+ <classpathentry kind="lib" path="lib/ant-1.6.5.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: trunk/core/util/packaging-convert/.project
===================================================================
--- trunk/core/util/packaging-convert/.project (rev 0)
+++ trunk/core/util/packaging-convert/.project 2007-12-03 19:54:50 UTC (rev 5207)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>packaging-convert</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.codehaus.groovy.eclipse.groovyBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.codehaus.groovy.eclipse.groovyNature</nature>
+ </natures>
+</projectDescription>
Added:
trunk/core/util/packaging-convert/.settings/org.codehaus.groovy.eclipse.preferences.prefs
===================================================================
---
trunk/core/util/packaging-convert/.settings/org.codehaus.groovy.eclipse.preferences.prefs
(rev 0)
+++
trunk/core/util/packaging-convert/.settings/org.codehaus.groovy.eclipse.preferences.prefs 2007-12-03
19:54:50 UTC (rev 5207)
@@ -0,0 +1,3 @@
+#Fri Nov 30 17:34:13 CST 2007
+eclipse.preferences.version=1
+groovy.compiler.output.path=bin-groovy
Added: trunk/core/util/packaging-convert/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/core/util/packaging-convert/.settings/org.eclipse.jdt.core.prefs
(rev 0)
+++ trunk/core/util/packaging-convert/.settings/org.eclipse.jdt.core.prefs 2007-12-03
19:54:50 UTC (rev 5207)
@@ -0,0 +1,3 @@
+#Fri Nov 30 17:34:12 CST 2007
+eclipse.preferences.version=1
+org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.groovy
Added: trunk/core/util/packaging-convert/build.xml
===================================================================
--- trunk/core/util/packaging-convert/build.xml (rev 0)
+++ trunk/core/util/packaging-convert/build.xml 2007-12-03 19:54:50 UTC (rev 5207)
@@ -0,0 +1,15 @@
+<project default="convert">
+
+ <path id="groovy-classpath">
+ <fileset dir="lib" includes="**/*.jar"/>
+ </path>
+
+ <target name="convert">
+ <property name="packaging-path"
value="/home/marshall/Workspaces/jbosside/pojp/.packaging"/>
+
+ <java classpathref="groovy-classpath"
classname="groovy.lang.GroovyShell">
+ <arg line="src/org/jboss/tools/archives/PackagingConverter.groovy"/>
+ <arg line="${packaging-path}"/>
+ </java>
+ </target>
+</project>
\ No newline at end of file
Added: trunk/core/util/packaging-convert/lib/ant-1.6.5.jar
===================================================================
(Binary files differ)
Property changes on: trunk/core/util/packaging-convert/lib/ant-1.6.5.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/core/util/packaging-convert/lib/commons-cli-1.0.jar
===================================================================
(Binary files differ)
Property changes on: trunk/core/util/packaging-convert/lib/commons-cli-1.0.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/core/util/packaging-convert/lib/dom4j-1.6.1.jar
===================================================================
(Binary files differ)
Property changes on: trunk/core/util/packaging-convert/lib/dom4j-1.6.1.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/core/util/packaging-convert/lib/groovy-all-1.0.jar
===================================================================
(Binary files differ)
Property changes on: trunk/core/util/packaging-convert/lib/groovy-all-1.0.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: trunk/core/util/packaging-convert/lib/jaxen-1.1-beta-6.jar
===================================================================
(Binary files differ)
Property changes on: trunk/core/util/packaging-convert/lib/jaxen-1.1-beta-6.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added:
trunk/core/util/packaging-convert/src/org/jboss/tools/archives/PackagingConverter.groovy
===================================================================
---
trunk/core/util/packaging-convert/src/org/jboss/tools/archives/PackagingConverter.groovy
(rev 0)
+++
trunk/core/util/packaging-convert/src/org/jboss/tools/archives/PackagingConverter.groovy 2007-12-03
19:54:50 UTC (rev 5207)
@@ -0,0 +1,187 @@
+package org.jboss.tools.archives;
+
+import org.dom4j.io.SAXReader
+import org.dom4j.io.OutputFormat
+import org.dom4j.io.XMLWriter
+import org.dom4j.DocumentHelper
+
+class PackagingConverter {
+
+ def packagingFile
+ def projectName
+
+ def projectFile
+ def projectDir
+ def projectDoc
+ def projectDescription
+ def error = false
+
+ PackagingConverter (packagingFile) {
+ this.packagingFile = packagingFile
+ def lastSlashIndex = packagingFile.lastIndexOf('/')
+ if (lastSlashIndex == -1) {
+ lastSlashIndex = packagingFile.lastIndexOf('\\')
+
+ }
+ if (lastSlashIndex == -1) {
+ println "Error: Path to packaging file is invalid: " + packagingFile
+ error = true
+ }
+ else {
+ projectDir = this.packagingFile.substring(0, lastSlashIndex)
+ projectFile = projectDir + '/.project'
+
+ def reader = new FileReader(projectFile)
+ projectDoc = new SAXReader().read(reader)
+ projectDescription = projectDoc.rootElement
+ reader.close()
+
+ projectName = projectDescription.elementText('name')
+ }
+ }
+
+ def convert () {
+ println "Updating Project Builder to
'org.jboss.ide.eclipse.archives.core.archivesBuilder'..."
+ updateBuilder()
+
+ println "Adding 'org.jboss.ide.eclipse.archives.core.archivesNature'
nature..."
+ addNature()
+
+ println "Backing up to .project.bak, and saving to .project in " +
projectDir + "..."
+ saveProject()
+
+ println "Converting JBossIDE 1.x packages to JBossTools/RHDS archives..."
+ convertPackaging()
+ }
+
+ def updateBuilder () {
+ def buildCommand =
projectDescription.element('buildSpec').elements('buildCommand').find {
+ it.elementText('name') ==
'org.jboss.ide.eclipse.packaging.core.PackagingBuilder'}
+
+ if (buildCommand != null) {
+
buildCommand.element('name').setText('org.jboss.ide.eclipse.archives.core.archivesBuilder')
+ }
+ }
+
+ def addNature () {
+ def natures = projectDescription.element('natures')
+ def nature = natures.addElement('nature')
+ nature.setText('org.jboss.ide.eclipse.archives.core.archivesNature')
+ }
+
+ def saveProject () {
+ new AntBuilder().copy(file: projectFile, toFile: projectFile+'.bak')
+ saveDoc(projectDoc, projectFile)
+ }
+
+ def convertPackaging ()
+ {
+ def reader = new FileReader(packagingFile)
+ def doc = new SAXReader().read(reader)
+ def configurations = doc.rootElement
+ reader.close()
+
+ def packagesDoc = DocumentHelper.createDocument()
+ def packages = packagesDoc.addElement('packages')
+
+ configurations.elementIterator().each { pkg ->
+ def newPkg = packages.addElement('package')
+ println "Converting package '" + pkg.attributeValue('name') +
"'..."
+
+ newPkg.addAttribute('name', pkg.attributeValue('name'))
+ newPkg.addAttribute('type', 'jar')
+ newPkg.addAttribute('inWorkspace', 'true')
+ newPkg.addAttribute('exploded', pkg.attributeValue('exploded'))
+
+ if (pkg.attributeValue('destination') == '') {
+ newPkg.addAttribute('todir', '/' + projectName)
+ } else {
+ newPkg.addAttribute('todir', '/' + projectName + '/' +
pkg.attributeValue('destination'))
+ }
+
+ pkg.elementIterator().each { element ->
+ if (element.name == 'file') convertFile(newPkg, element)
+ else convertFolder(newPkg, element)
+ }
+ }
+
+ savePackaging(packagesDoc)
+ }
+
+ def getParent (pkg, prefix) {
+ def parent = pkg
+
+ if (prefix != '')
+ {
+ def folders = prefix.split('/')
+ folders.each { folder ->
+ def element = parent.addElement('folder')
+ element.addAttribute('name', folder)
+
+ parent = element
+ }
+ }
+ return parent
+ }
+
+ def convertFile (pkg, file) {
+ def location = file.attributeValue('location')
+ def basedir = location.substring(0, location.lastIndexOf('/'))
+ def filename = location.substring(location.lastIndexOf('/')+1)
+ def parent = getParent(pkg, file.attributeValue('prefix'))
+ def fileset = parent.addElement('fileset')
+
+ if (file.attribute('projectLocation') != null) {
+ fileset.addAttribute('dir', '/' + projectName + '/' + basedir)
+ fileset.addAttribute('inWorkspace', 'true')
+ } else {
+ fileset.addAttribute('dir', basedir)
+ fileset.addAttribute('inWorkspace', 'false')
+ }
+
+ fileset.addAttribute('includes', filename)
+ }
+
+ def convertFolder (pkg, folder) {
+ def basedir = folder.attributeValue('location')
+ def parent = getParent(pkg, folder.attributeValue('prefix'))
+ def fileset = parent.addElement('fileset')
+
+ if (folder.attribute('projectLocation') != null) {
+ fileset.addAttribute('dir', '/' + projectName + '/' + basedir)
+ fileset.addAttribute('inWorkspace', 'true')
+ } else {
+ fileset.addAttribute('dir', basedir)
+ fileset.addAttribute('inWorkspace', 'false')
+ }
+
+ fileset.addAttribute('includes', folder.attributeValue('includes'))
+ fileset.addAttribute('excludes', folder.attributeValue('excludes'))
+ }
+
+ def savePackaging (packagesDoc) {
+ println "Saving new Archives configuration to '" + projectDir +
"/.packages' ..."
+ saveDoc(packagesDoc, new File(projectDir, ".packages"))
+ }
+
+ def saveDoc (doc, file) {
+ def format = OutputFormat.createPrettyPrint()
+
+ def fwriter = new FileWriter(file)
+ def writer = new XMLWriter(fwriter, format)
+
+ writer.write((org.dom4j.Document)doc)
+ fwriter.close()
+ }
+
+ static void main(args) {
+ if (args.length >= 1)
+ {
+ def converter = new PackagingConverter(args[0])
+ if (!converter.error) converter.convert()
+ }
+ else {
+ println "Usage: packaging-converter /path/to/.packaging"
+ }
+ }
+}
\ No newline at end of file