[jboss-cvs] jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/util ...
Marshall Culpepper
mculpepper at jboss.com
Mon Nov 6 16:35:28 EST 2006
User: mculpepper
Date: 06/11/06 16:35:28
Added: core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/util
PackagesExport.java
Log:
initial commit of the new "packages" tooling core plugin
Revision Changes Path
1.1 date: 2006/11/06 21:35:28; author: mculpepper; state: Exp;jbosside/core/plugins/org.jboss.ide.eclipse.packages.core/src/main/org/jboss/ide/eclipse/packages/core/util/PackagesExport.java
Index: PackagesExport.java
===================================================================
package org.jboss.ide.eclipse.packages.core.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.TransformerFactoryConfigurationError;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.jboss.ide.eclipse.core.util.ProjectUtil;
import org.jboss.ide.eclipse.packages.core.PackagesCorePlugin;
import org.jboss.ide.eclipse.packages.core.model.IPackage;
import org.jboss.ide.eclipse.packages.core.model.IPackageFileSet;
import org.jboss.ide.eclipse.packages.core.model.IPackageNode;
import org.jboss.ide.eclipse.packages.core.model.IPackageNodeVisitor;
import org.jboss.ide.eclipse.packages.core.model.PackagesCore;
import org.jboss.ide.eclipse.packages.core.model.internal.PackagesModel;
import org.jboss.ide.eclipse.packages.core.model.internal.xb.XbPackages;
public class PackagesExport {
public static final String XSL_PATH = "xml/packages2ant.xsl";
private static String escapeProjectName(IProject project)
{
String name = project.getName();
name = name.replaceAll(" ", "_");
return name;
}
public static List findReferencedProjects (IProject project, IPackage pkg)
{
final ArrayList referencedProjects = new ArrayList();
referencedProjects.add(project);
pkg.accept(new IPackageNodeVisitor () {
public boolean visit (IPackageNode node)
{
if (node.getNodeType() == IPackageNode.TYPE_PACKAGE_FILESET)
{
IPackageFileSet fileset = (IPackageFileSet)node;
IProject project = fileset.getProject();
if (!project.equals(project) && !referencedProjects.contains(project))
{
referencedProjects.add(project);
}
}
return true;
}
});
return referencedProjects;
}
public static void exportAntScript (IProject project, Map args, IProgressMonitor monitor)
{
monitor.beginTask("Exporting ant script...", 2);
XbPackages projectPackagesElement = PackagesModel.instance().getXbPackages(project);
IPackage packages[] = PackagesCore.getProjectPackages(project, monitor);
ArrayList referencedProjects = new ArrayList();
monitor.beginTask("Finding referenced projects...", packages.length);
for (int i = 0; i < packages.length; i++)
{
referencedProjects.addAll(findReferencedProjects(project, packages[i]));
monitor.worked(1);
}
monitor.done();
for (Iterator iter = referencedProjects.iterator(); iter.hasNext(); )
{
IProject referencedProject = (IProject)iter.next();
String propertyName = null;
if (referencedProject.equals(project))
{
propertyName = "project-root";
}
else {
propertyName = "project-root-" + escapeProjectName(referencedProject);
}
IPath location = ProjectUtil.getProjectLocation(referencedProject);
if (location != null)
projectPackagesElement.getProperties().getProperties().setProperty(propertyName, location.toString());
}
try {
InputStream configIn = project.getFile(PackagesModel.PROJECT_PACKAGES_FILE).getContents();
InputStream xslIn = PackagesCorePlugin.getDefault().getBundle().getEntry(XSL_PATH).openStream();
ByteArrayOutputStream out = new ByteArrayOutputStream();
IFile antFile = project.getFile(PackagesCore.getPathToPackagesScript(project));
Source stylesheet = new StreamSource(xslIn);
Transformer transformer = TransformerFactory.newInstance().newTransformer(stylesheet);
transformer.setOutputProperty("indent", "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
transformer.transform(new StreamSource(configIn), new StreamResult(out));
ByteArrayInputStream fileStream = new ByteArrayInputStream(out.toByteArray());
if (!antFile.exists()) {
antFile.create(fileStream, true, monitor);
}
else {
antFile.setContents(fileStream, IFile.KEEP_HISTORY, monitor);
}
xslIn.close();
out.close();
monitor.worked(1);
monitor.done();
} catch (TransformerConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerFactoryConfigurationError e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (TransformerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
More information about the jboss-cvs-commits
mailing list