Author: snjeza
Date: 2008-06-23 07:38:58 -0400 (Mon, 23 Jun 2008)
New Revision: 8900
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/resources/
trunk/birt/plugins/org.jboss.tools.birt.core/resources/jboss-seam-birt.jar
Modified:
trunk/birt/plugins/org.jboss.tools.birt.core/build.properties
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/BirtCoreActivator.java
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/BirtPostInstallListener.java
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDelegate.java
Log:
JBIDE-2220 JBoss BIRT Integration
Modified: trunk/birt/plugins/org.jboss.tools.birt.core/build.properties
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/build.properties 2008-06-23 11:38:48 UTC
(rev 8899)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/build.properties 2008-06-23 11:38:58 UTC
(rev 8900)
@@ -3,4 +3,5 @@
bin.includes = META-INF/,\
.,\
plugin.xml,\
- plugin.properties
+ plugin.properties,\
+ resources/
Added: trunk/birt/plugins/org.jboss.tools.birt.core/resources/jboss-seam-birt.jar
===================================================================
(Binary files differ)
Property changes on:
trunk/birt/plugins/org.jboss.tools.birt.core/resources/jboss-seam-birt.jar
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Modified:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/BirtCoreActivator.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/BirtCoreActivator.java 2008-06-23
11:38:48 UTC (rev 8899)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/BirtCoreActivator.java 2008-06-23
11:38:58 UTC (rev 8900)
@@ -1,6 +1,26 @@
package org.jboss.tools.birt.core;
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
/**
@@ -11,12 +31,23 @@
// The plug-in ID
public static final String PLUGIN_ID = "org.jboss.tools.birt.core";
+ public static final IOverwriteQuery OVERWRITE_ALL_QUERY = new IOverwriteQuery()
+ {
+ public String queryOverwrite(String pathString)
+ {
+ return IOverwriteQuery.ALL;
+ }
+ };
// The shared instance
private static BirtCoreActivator plugin;
// The facet id
public static final String JBOSS_BIRT__FACET_ID = "jboss.birt";
+ public static final String BIRT_FACET_ID = "birt.runtime";
+
+ public static final String SEAM_FACET_ID = "jst.seam";
+
/**
* The constructor
@@ -51,4 +82,57 @@
return plugin;
}
+ public static void copyPlugin(IProject project,String pluginId, String destination,
IProgressMonitor monitor) {
+ IResource destResource = project.findMember(destination);
+ if (!destResource.exists()) {
+ IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"The
" + destination + " folder doesn't exist");
+ BirtCoreActivator.getDefault().getLog().log(status);
+ return;
+ }
+ if (destResource.getType() != IResource.FOLDER ) {
+ IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"The
" + destination + " resource is not a folder");
+ BirtCoreActivator.getDefault().getLog().log(status);
+ return;
+ }
+ try {
+ IFolder destFolder = (IFolder) destResource;
+ Bundle bundle = Platform.getBundle(pluginId);
+ File bundleFile = FileLocator.getBundleFile(bundle);
+ IFolder folder = null;
+ File file = null;
+ List<File> filesToImport = new ArrayList<File>();
+ if (bundleFile.isDirectory()) {
+ URL url = bundle.getEntry("/");
+ String fileName = FileLocator.toFileURL(url).getFile();
+ file = new File(fileName);
+ filesToImport.addAll(Arrays.asList(file.listFiles()));
+ String name = file.getName();
+ folder = destFolder.getFolder(new Path(name));
+ if (folder.exists()) {
+ return;
+ }
+ folder.create(true, true, monitor);
+ } else {
+ filesToImport.add(bundleFile);
+ file = bundleFile.getParentFile();
+ folder = destFolder;
+ String outputFileName = bundleFile.getName();
+ IFile outputFile = folder.getFile(outputFileName);
+ if (outputFile.exists()) {
+ return;
+ }
+ }
+ ImportOperation importOperation = new ImportOperation(folder.getFullPath(),
+ file, FileSystemStructureProvider.INSTANCE,
+ OVERWRITE_ALL_QUERY, filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ importOperation.run(monitor);
+ } catch (Exception e) {
+ IStatus status = new
Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,e.getMessage());
+ BirtCoreActivator.getDefault().getLog().log(status);
+ return;
+ }
+
+ }
+
}
Modified:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/BirtPostInstallListener.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/BirtPostInstallListener.java 2008-06-23
11:38:48 UTC (rev 8899)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/BirtPostInstallListener.java 2008-06-23
11:38:58 UTC (rev 8900)
@@ -2,18 +2,31 @@
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
+import java.io.File;
import java.io.IOException;
import java.io.InputStream;
+import java.lang.reflect.InvocationTargetException;
import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Properties;
import java.util.Set;
import org.eclipse.birt.integration.wtp.ui.internal.resource.BirtWTPMessages;
import org.eclipse.birt.integration.wtp.ui.internal.util.Logger;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
import org.eclipse.wst.common.project.facet.core.IFacetedProject;
import org.eclipse.wst.common.project.facet.core.IProjectFacet;
@@ -22,32 +35,55 @@
import org.eclipse.wst.common.project.facet.core.events.IFacetedProjectListener;
import org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent;
import org.jboss.tools.birt.core.BirtCoreActivator;
+import org.osgi.framework.Bundle;
public class BirtPostInstallListener implements IFacetedProjectListener {
+ private static final String JBossBirtCorePluginId =
"org.jboss.tools.birt.core";
+ private String configFolder;
+
public void handleEvent(IFacetedProjectEvent event) {
IFacetedProject facetedProject = event.getProject();
Set<IProjectFacetVersion> projectFacets = facetedProject
.getProjectFacets();
+ boolean isJBossBirtProject = false;
boolean isBirtProject = false;
+ boolean isSeamProject = false;
for (IProjectFacetVersion projectFacetVersion : projectFacets) {
IProjectFacet projectFacet = projectFacetVersion.getProjectFacet();
if (BirtCoreActivator.JBOSS_BIRT__FACET_ID.equals(projectFacet
.getId())) {
+ isJBossBirtProject = true;
+ }
+ if (BirtCoreActivator.BIRT_FACET_ID.equals(projectFacet
+ .getId())) {
isBirtProject = true;
- break;
}
+ if (BirtCoreActivator.SEAM_FACET_ID.equals(projectFacet
+ .getId())) {
+ isSeamProject = true;
+ }
+
}
- if (isBirtProject) {
+ if (!isBirtProject && !isJBossBirtProject && !isSeamProject)
+ return;
+
+ if (isBirtProject || isJBossBirtProject) {
IProjectFacetActionEvent actionEvent = (IProjectFacetActionEvent) event;
IDataModel dataModel = (IDataModel) actionEvent.getActionConfig();
- String configFolder = dataModel
+ try {
+ configFolder = dataModel
.getStringProperty("IJ2EEFacetInstallDataModelProperties.CONFIG_FOLDER");
//$NON-NLS-1$
- if (configFolder == null) {
- String message = BirtWTPMessages.BIRTErrors_wrong_webcontent;
- Logger.log(Logger.ERROR, message);
- return;
+ if (configFolder == null) {
+ String message = BirtWTPMessages.BIRTErrors_wrong_webcontent;
+ Logger.log(Logger.ERROR, message);
+ return;
+ }
+ } catch (Exception e) {
+ //e.printStackTrace();
}
+ }
+ if (isJBossBirtProject || isBirtProject) {
String configIniString = configFolder +
"/WEB-INF/platform/configuration/config.ini";
IProject project = facetedProject.getProject();
IResource configFile = project.findMember(new Path(configIniString));
@@ -96,6 +132,42 @@
}
}
+ if (isBirtProject && !isJBossBirtProject) {
+ String platformFolder = configFolder + "/WEB-INF/platform/plugins";
+ IProject project = facetedProject.getProject();
+ IProgressMonitor monitor = new NullProgressMonitor();
+ BirtCoreActivator.copyPlugin(project,"org.jboss.tools.birt.oda",platformFolder,monitor);
+ }
+ if (isSeamProject && (isBirtProject || isJBossBirtProject)) {
+ IProject project = facetedProject.getProject();
+ String libFolder = configFolder + "/WEB-INF/lib";
+ IResource destResource = project.findMember(libFolder);
+ if (destResource.getType() != IResource.FOLDER ) {
+ IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"The
" + libFolder + " resource is not a folder");
+ BirtCoreActivator.getDefault().getLog().log(status);
+ return;
+ }
+ IFolder folder = (IFolder) destResource;
+ Bundle bundle = Platform.getBundle(JBossBirtCorePluginId);
+ URL entry = bundle.getEntry("/resources/jboss-seam-birt.jar");
+ try {
+ String fileName = FileLocator.toFileURL(entry).getFile();
+ File file = new File(fileName);
+ List<File> filesToImport = new ArrayList<File>();
+ filesToImport.add(file);
+ ImportOperation importOperation = new ImportOperation(folder.getFullPath(),
+ file.getParentFile(), FileSystemStructureProvider.INSTANCE,
+ BirtCoreActivator.OVERWRITE_ALL_QUERY, filesToImport);
+ importOperation.setCreateContainerStructure(false);
+ IProgressMonitor monitor = new NullProgressMonitor();
+ importOperation.run(monitor);
+ } catch (Exception e) {
+ IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"Error
while copying jboss-seam-birt.jar",e);
+ BirtCoreActivator.getDefault().getLog().log(status);
+ } finally {
+ configFolder=null;
+ }
+ }
}
}
Modified:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDelegate.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDelegate.java 2008-06-23
11:38:48 UTC (rev 8899)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDelegate.java 2008-06-23
11:38:58 UTC (rev 8900)
@@ -37,13 +37,6 @@
public class JBossBirtFacetInstallDelegate extends BirtFacetInstallDelegate {
- private static final IOverwriteQuery OVERWRITE_ALL_QUERY = new IOverwriteQuery()
- {
- public String queryOverwrite(String pathString)
- {
- return IOverwriteQuery.ALL;
- }
- };
@Override
public void execute(IProject project, IProjectFacetVersion fv,
Object config, IProgressMonitor monitor) throws CoreException {
@@ -53,7 +46,7 @@
.getProperty(FacetInstallDataModelProvider.MASTER_PROJECT_DM);
String configFolder = BirtWizardUtil.getConfigFolder(masterDataModel);
String platformFolder = configFolder + "/WEB-INF/platform/plugins";
- copyPlugin(project,"org.jboss.tools.birt.oda",platformFolder,monitor);
+ BirtCoreActivator.copyPlugin(project,"org.jboss.tools.birt.oda",platformFolder,monitor);
//copyPlugin(project,"org.hibernate.eclipse",platformFolder,monitor);
//copyPlugin(project,"org.eclipse.ui.console",platformFolder,monitor);
//copyPlugin(project,"org.eclipse.jface",platformFolder,monitor);
@@ -61,51 +54,6 @@
}
- private void copyPlugin(IProject project,String pluginId, String destination,
IProgressMonitor monitor) {
- IResource destResource = project.findMember(destination);
- if (!destResource.exists()) {
- IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"The
" + destination + " folder doesn't exist");
- BirtCoreActivator.getDefault().getLog().log(status);
- return;
- }
- if (destResource.getType() != IResource.FOLDER ) {
- IStatus status = new Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,"The
" + destination + " resource is not a folder");
- BirtCoreActivator.getDefault().getLog().log(status);
- return;
- }
- try {
- IFolder destFolder = (IFolder) destResource;
- Bundle bundle = Platform.getBundle(pluginId);
- File bundleFile = FileLocator.getBundleFile(bundle);
- IFolder folder = null;
- File file = null;
- List<File> filesToImport = new ArrayList<File>();
- if (bundleFile.isDirectory()) {
- URL url = bundle.getEntry("/");
- String fileName = FileLocator.toFileURL(url).getFile();
- file = new File(fileName);
- filesToImport.addAll(Arrays.asList(file.listFiles()));
- String name = file.getName();
- folder = destFolder.getFolder(new Path(name));
- folder.create(true, true, monitor);
- } else {
- filesToImport.add(bundleFile);
- file = bundleFile.getParentFile();
- folder = destFolder;
- }
- ImportOperation importOperation = new ImportOperation(folder.getFullPath(),
- file, FileSystemStructureProvider.INSTANCE,
- OVERWRITE_ALL_QUERY, filesToImport);
- importOperation.setCreateContainerStructure(false);
- importOperation.run(monitor);
- } catch (Exception e) {
- IStatus status = new
Status(IStatus.WARNING,BirtCoreActivator.PLUGIN_ID,e.getMessage());
- BirtCoreActivator.getDefault().getLog().log(status);
- return;
- }
-
- }
-
@Override
protected void processConfiguration(final IProject project,
final Map birtProperties, final IProgressMonitor monitor)