Author: snjeza
Date: 2008-06-11 20:20:02 -0400 (Wed, 11 Jun 2008)
New Revision: 8730
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/.classpath
trunk/birt/plugins/org.jboss.tools.birt.core/.project
trunk/birt/plugins/org.jboss.tools.birt.core/.settings/
trunk/birt/plugins/org.jboss.tools.birt.core/.settings/org.eclipse.jdt.core.prefs
trunk/birt/plugins/org.jboss.tools.birt.core/META-INF/
trunk/birt/plugins/org.jboss.tools.birt.core/META-INF/MANIFEST.MF
trunk/birt/plugins/org.jboss.tools.birt.core/build.properties
trunk/birt/plugins/org.jboss.tools.birt.core/plugin.properties
trunk/birt/plugins/org.jboss.tools.birt.core/plugin.xml
trunk/birt/plugins/org.jboss.tools.birt.core/src/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/
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/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/IBirtUtil.java
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDataModelProvider.java
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/JBossBirtUtil.java
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil25.java
Log:
Initial import.
Added: trunk/birt/plugins/org.jboss.tools.birt.core/.classpath
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/.classpath (rev
0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/.classpath 2008-06-12 00:20:02 UTC (rev
8730)
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con"
path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con"
path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
Added: trunk/birt/plugins/org.jboss.tools.birt.core/.project
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/.project (rev 0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/.project 2008-06-12 00:20:02 UTC (rev
8730)
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.jboss.tools.birt.core</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Added: trunk/birt/plugins/org.jboss.tools.birt.core/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/.settings/org.eclipse.jdt.core.prefs
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/.settings/org.eclipse.jdt.core.prefs 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,7 @@
+#Sun Jun 01 00:04:31 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
Added: trunk/birt/plugins/org.jboss.tools.birt.core/META-INF/MANIFEST.MF
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/META-INF/MANIFEST.MF
(rev 0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/META-INF/MANIFEST.MF 2008-06-12 00:20:02
UTC (rev 8730)
@@ -0,0 +1,23 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: JBoss BIRT Core
+Bundle-SymbolicName: org.jboss.tools.birt.core;singleton:=true
+Bundle-Version: 1.0.0
+Bundle-Activator: org.jboss.tools.birt.core.BirtCoreActivator
+Bundle-Vendor: RedHat, Inc.
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.birt.integration.wtp.ui,
+ org.eclipse.wst.common.frameworks.ui,
+ org.eclipse.wst.common.project.facet.core,
+ org.eclipse.jst.common.project.facet.core,
+ org.eclipse.jst.j2ee,
+ org.eclipse.jst.j2ee.core,
+ org.eclipse.jst.j2ee.web,
+ org.eclipse.core.resources,
+ org.eclipse.emf.common,
+ org.eclipse.emf.ecore,
+ org.eclipse.ui.ide
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-ActivationPolicy: lazy
Added: trunk/birt/plugins/org.jboss.tools.birt.core/build.properties
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/build.properties
(rev 0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/build.properties 2008-06-12 00:20:02 UTC
(rev 8730)
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ plugin.properties
Added: trunk/birt/plugins/org.jboss.tools.birt.core/plugin.properties
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/plugin.properties
(rev 0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/plugin.properties 2008-06-12 00:20:02 UTC
(rev 8730)
@@ -0,0 +1,3 @@
+JBOSS_BIRT_FACET_LABEL=JBoss BIRT Reporting Runtime Component
+JBOSS_BIRT_FACET_DESCRIPTION=JBoss BIRT Reporting Runtime Component
+JBOSS_BIRT_FACET_TEMPLATE_LABEL=JBoss BIRT Reporting Web Project
Added: trunk/birt/plugins/org.jboss.tools.birt.core/plugin.xml
===================================================================
--- trunk/birt/plugins/org.jboss.tools.birt.core/plugin.xml (rev
0)
+++ trunk/birt/plugins/org.jboss.tools.birt.core/plugin.xml 2008-06-12 00:20:02 UTC (rev
8730)
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.2"?>
+<plugin>
+
+ <!-- Project Facets -->
+
+ <extension point="org.eclipse.wst.common.project.facet.core.facets">
+
+ <project-facet id="jboss.birt">
+ <label>%JBOSS_BIRT_FACET_LABEL</label>
+ <description>%JBOSS_BIRT_FACET_DESCRIPTION</description>
+ </project-facet>
+
+ <project-facet-version facet="jboss.birt" version="1.0">
+ <constraint>
+ <and>
+ <requires facet="jst.web" version="[2.4"/>
+ <requires facet="jst.java" version="[5.0"/>
+ <requires facet="jst.jsf" version="[1.2"/>
+
+ </and>
+ </constraint>
+ </project-facet-version>
+
+ <action id="jboss.birt.v10.install" facet="jboss.birt"
type="INSTALL" version="1.0">
+ <delegate
class="org.jboss.tools.birt.core.internal.project.facet.JBossBirtFacetInstallDelegate"/>
+ <config-factory
class="org.jboss.tools.birt.core.internal.project.facet.JBossBirtFacetInstallDataModelProvider"/>
+ </action>
+
+ <!--
+ <action id="jboss.birt.v10.uninstall" facet="jboss.birt"
type="UNINSTALL" version="1.0">
+ <delegate
class="org.jboss.tools.birt.core.internal.project.facet.JBossBirtFacetUninstallDelegate"/>
+ </action>
+ -->
+ </extension>
+
+ <extension point="org.eclipse.wst.common.project.facet.core.presets">
+ <static-preset id="preset.jboss.birt">
+ <label>%JBOSS_BIRT_FACET_TEMPLATE_LABEL</label>
+ <description>%JBOSS_BIRT_FACET_TEMPLATE_LABEL</description>
+ <facet id="jboss.birt" version="1.0"/>
+ <facet id="jst.java" version="5.0"/>
+ <facet id="jst.web" version="2.5"/>
+ <facet id="jst.jsf" version="1.2"/>
+
+ </static-preset>
+ </extension>
+
+ <extension point="org.eclipse.wst.common.project.facet.core.runtimes">
+ <supported>
+ <facet id="jboss.birt" version="1.0"/>
+ <runtime-component any="true"/>
+ </supported>
+ </extension>
+
+ <extension point="org.eclipse.wst.common.project.facet.ui.wizardPages">
+ <wizard-pages action="jboss.birt.v10.install">
+ <page
class="org.eclipse.birt.integration.wtp.ui.internal.wizards.BirtWebProjectWizardConfigurationPage"/>
+ </wizard-pages>
+ </extension>
+</plugin>
Added:
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
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/BirtCoreActivator.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,54 @@
+package org.jboss.tools.birt.core;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class BirtCoreActivator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.jboss.tools.birt.core";
+
+ // The shared instance
+ private static BirtCoreActivator plugin;
+
+ // The facet id
+ public static final String JBOSS_BIRT__FACET_ID = "jboss.birt";
+
+
+ /**
+ * The constructor
+ */
+ public BirtCoreActivator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static BirtCoreActivator getDefault() {
+ return plugin;
+ }
+
+}
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/IBirtUtil.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/IBirtUtil.java
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/IBirtUtil.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,36 @@
+package org.jboss.tools.birt.core.internal.project.facet;
+
+import java.util.Map;
+
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.WebAppBean;
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.SimpleImportOverwriteQuery;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+
+public interface IBirtUtil {
+
+ void configureWebApp(WebAppBean webAppBean, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureContextParam(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureListener(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureServlet(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureServletMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureFilter(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureFilterMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+ void configureTaglib(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor);
+
+}
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDataModelProvider.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDataModelProvider.java
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDataModelProvider.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,20 @@
+package org.jboss.tools.birt.core.internal.project.facet;
+
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.BirtWizardUtil;
+import
org.eclipse.birt.integration.wtp.ui.project.facet.BirtFacetInstallDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.jboss.tools.birt.core.BirtCoreActivator;
+
+public class JBossBirtFacetInstallDataModelProvider extends
+ BirtFacetInstallDataModelProvider {
+
+ @Override
+ public Object create( )
+ {
+ IDataModel dataModel = (IDataModel) super.create( );
+ dataModel.setProperty( FACET_ID, BirtCoreActivator.JBOSS_BIRT__FACET_ID );
+ dataModel.setProperty( BIRT_CONFIG, BirtWizardUtil.initWebapp( null ) );
+ // TODO: define all the birt properties as nested data models
+ return dataModel;
+ }
+}
Added:
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
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtFacetInstallDelegate.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,165 @@
+package org.jboss.tools.birt.core.internal.project.facet;
+
+import java.io.File;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.WebAppBean;
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.BirtWizardUtil;
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.SimpleImportOverwriteQuery;
+import org.eclipse.birt.integration.wtp.ui.project.facet.BirtFacetInstallDelegate;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.FileLocator;
+import org.eclipse.core.runtime.IPath;
+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.jst.j2ee.model.IModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.javaee.web.WebAppVersionType;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+import org.eclipse.ui.wizards.datatransfer.FileSystemStructureProvider;
+import org.eclipse.ui.wizards.datatransfer.ImportOperation;
+import org.eclipse.wst.common.componentcore.datamodel.FacetInstallDataModelProvider;
+import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
+import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion;
+import org.jboss.tools.birt.core.BirtCoreActivator;
+import org.osgi.framework.Bundle;
+
+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 {
+ super.execute(project, fv, config, monitor);
+ IDataModel facetDataModel = (IDataModel) config;
+ IDataModel masterDataModel = (IDataModel) facetDataModel
+ .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);
+ //copyPlugin(project,"org.hibernate.eclipse",platformFolder,monitor);
+ //copyPlugin(project,"org.eclipse.ui.console",platformFolder,monitor);
+ //copyPlugin(project,"org.eclipse.jface",platformFolder,monitor);
+
+
+ }
+
+ 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)
+ throws CoreException {
+ // Simple OverwriteQuery
+ final SimpleImportOverwriteQuery query = new SimpleImportOverwriteQuery();
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ IPath modelPath = new Path("WEB-INF").append("web.xml");
//$NON-NLS-1$ //$NON-NLS-2$
+ boolean exists = project.getProjectRelativePath().append(modelPath)
+ .toFile().exists();
+ if (isWebApp25(modelProvider.getModelObject()) && !exists) {
+ modelPath = IModelProvider.FORCESAVE;
+ }
+ final IBirtUtil util = createBirtUtil(modelProvider.getModelObject());
+ modelProvider.modify(new Runnable() {
+ public void run() {
+ util.configureWebApp((WebAppBean) birtProperties
+ .get(EXT_WEBAPP), project, query, monitor);
+ util.configureContextParam((Map) birtProperties
+ .get(EXT_CONTEXT_PARAM), project, query, monitor);
+ util.configureListener((Map) birtProperties.get(EXT_LISTENER),
+ project, query, monitor);
+
+ util.configureServlet((Map) birtProperties.get(EXT_SERVLET),
+ project, query, monitor);
+
+ util.configureServletMapping((Map) birtProperties
+ .get(EXT_SERVLET_MAPPING), project, query, monitor);
+
+ util.configureFilter((Map) birtProperties.get(EXT_FILTER),
+ project, query, monitor);
+
+ util.configureFilterMapping((Map) birtProperties
+ .get(EXT_FILTER_MAPPING), project, query, monitor);
+
+ util.configureTaglib((Map) birtProperties.get(EXT_TAGLIB),
+ project, query, monitor);
+ }
+ }, modelPath);
+
+ }
+
+ private IBirtUtil createBirtUtil(Object webApp) {
+ if (isWebApp25(webApp)) {
+ return new JBossBirtUtil25();
+ }
+ return new JBossBirtUtil();
+ }
+
+ private boolean isWebApp25(final Object webApp) {
+ if (webApp instanceof WebApp
+ && ((WebApp) webApp).getVersion() == WebAppVersionType._25_LITERAL)
+ return true;
+ return false;
+ }
+}
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil.java
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,526 @@
+package org.jboss.tools.birt.core.internal.project.facet;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.birt.integration.wtp.ui.internal.util.DataUtil;
+import org.eclipse.birt.integration.wtp.ui.internal.util.WebArtifactUtil;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ContextParamBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.FilterBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.FilterMappingBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ListenerBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ServletBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ServletMappingBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.TagLibBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.WebAppBean;
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.SimpleImportOverwriteQuery;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.j2ee.common.CommonFactory;
+import org.eclipse.jst.j2ee.common.Description;
+import org.eclipse.jst.j2ee.common.Listener;
+import org.eclipse.jst.j2ee.common.ParamValue;
+import org.eclipse.jst.j2ee.jsp.JSPConfig;
+import org.eclipse.jst.j2ee.jsp.JspFactory;
+import org.eclipse.jst.j2ee.jsp.TagLibRefType;
+import org.eclipse.jst.j2ee.model.IModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.j2ee.webapplication.ContextParam;
+import org.eclipse.jst.j2ee.webapplication.Filter;
+import org.eclipse.jst.j2ee.webapplication.FilterMapping;
+import org.eclipse.jst.j2ee.webapplication.Servlet;
+import org.eclipse.jst.j2ee.webapplication.ServletType;
+import org.eclipse.jst.j2ee.webapplication.TagLibRef;
+import org.eclipse.jst.j2ee.webapplication.WebApp;
+import org.eclipse.jst.j2ee.webapplication.WebapplicationFactory;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+
+public class JBossBirtUtil implements IBirtUtil {
+
+ public void configureContextParam(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ // handle context-param settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ContextParamBean bean = (ContextParamBean) map.get(name);
+ if (bean == null)
+ continue;
+
+ // if contained this param
+ List list = null;
+ if (webApp.getVersionID() == 23) {
+ // for servlet 2.3
+ list = webApp.getContexts();
+ } else {
+ // for servlet 2.4
+ list = webApp.getContextParams();
+ }
+
+ int index = getContextParamIndexByName(list, name);
+ if (index >= 0) {
+ String ret = query
+ .queryOverwrite("Context-param '" + name + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ // remove old item
+ list.remove(index);
+ }
+
+ String value = bean.getValue();
+ String description = bean.getDescription();
+
+ if (webApp.getVersionID() == 23) {
+ // create context-param object
+ ContextParam param = WebapplicationFactory.eINSTANCE
+ .createContextParam();
+ param.setParamName(name);
+ param.setParamValue(value);
+ if (description != null)
+ param.setDescription(description);
+
+ param.setWebApp(webApp);
+ } else {
+ // create ParamValue object for servlet 2.4
+ ParamValue param = CommonFactory.eINSTANCE.createParamValue();
+ param.setName(name);
+ param.setValue(value);
+ if (description != null) {
+ Description descriptionObj = CommonFactory.eINSTANCE
+ .createDescription();
+ descriptionObj.setValue(description);
+ param.getDescriptions().add(descriptionObj);
+ param.setDescription(description);
+ }
+
+ // add into list
+ webApp.getContextParams().add(param);
+ }
+ }
+
+ }
+
+ private int getContextParamIndexByName(List list, String name) {
+ if (list == null || name == null)
+ return -1;
+ Iterator it = list.iterator();
+ int index = 0;
+ while (it.hasNext()) {
+ // get param object
+ Object paramObj = it.next();
+ // for servlet 2.3
+ if (paramObj instanceof ContextParam) {
+ ContextParam param = (ContextParam) paramObj;
+ if (name.equals(param.getParamName()))
+ return index;
+ }
+ // for servlet 2.4
+ if (paramObj instanceof ParamValue) {
+ ParamValue param = (ParamValue) paramObj;
+ if (name.equals(param.getName()))
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+
+ public void configureFilter(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+
+ // handle filter settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ FilterBean bean = (FilterBean) map.get(name);
+
+ if (bean == null)
+ continue;
+
+ // if contained this filter
+ Object obj = webApp.getFilterNamed(name);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Filter '" + name +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ // remove old item
+ webApp.getFilters().remove(obj);
+ }
+
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+
+ // create filter object
+ Filter filter = WebapplicationFactory.eINSTANCE.createFilter();
+ filter.setName(name);
+ filter.setFilterClassName(className);
+ filter.setDescription(description);
+ webApp.getFilters().add(filter);
+ }
+ }
+
+ public void configureFilterMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+
+ // handle filter-mapping settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String key = DataUtil.getString(it.next(), false);
+ FilterMappingBean bean = (FilterMappingBean) map.get(key);
+ if (bean == null)
+ continue;
+ // if contained this filter-mapping
+ Object obj = getFilterMappingByKey(webApp.getFilterMappings(), key);
+ if (obj != null) {
+ String ret = query
+ .queryOverwrite("Filter-mapping '" + key + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getFilterMappings().remove(obj);
+ }
+ // filter name
+ String name = bean.getName();
+ // create FilterMapping object
+ FilterMapping mapping = WebapplicationFactory.eINSTANCE
+ .createFilterMapping();
+ // get filter by name
+ Filter filter = webApp.getFilterNamed(name);
+ if (filter != null) {
+ mapping.setFilter(filter);
+ mapping.setUrlPattern(bean.getUri());
+ mapping.setServletName(bean.getServletName());
+ // get Servlet object
+ Servlet servlet = webApp.getServletNamed(bean.getServletName());
+ mapping.setServlet(servlet);
+ if (bean.getUri() != null || servlet != null)
+ webApp.getFilterMappings().add(mapping);
+ }
+ }
+ }
+
+ private Object getFilterMappingByKey(List list, String key) {
+ if (list == null || key == null)
+ return null;
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ // get filter-mapping object
+ FilterMapping filterMapping = (FilterMapping) it.next();
+ if (filterMapping != null) {
+ String name = filterMapping.getFilter().getName();
+ String servletName = filterMapping.getServletName();
+ String uri = filterMapping.getUrlPattern();
+ String curKey = getFilterMappingString(name, servletName, uri);
+ if (key.equals(curKey))
+ return filterMapping;
+ }
+ }
+ return null;
+ }
+
+ private String getFilterMappingString(String name, String servletName,
+ String uri) {
+ return (name != null ? name : "") //$NON-NLS-1$
+ + (servletName != null ? servletName : "") //$NON-NLS-1$
+ + (uri != null ? uri : ""); //$NON-NLS-1$
+ }
+
+ public void configureListener(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ // handle listeners settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ListenerBean bean = (ListenerBean) map.get(name);
+ if (bean == null)
+ continue;
+
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+
+ // if listener existed in web.xml, skip it
+ Object obj = getListenerByClassName(webApp.getListeners(),
+ className);
+ if (obj != null)
+ continue;
+
+ // create Listener object
+ Listener listener = CommonFactory.eINSTANCE.createListener();
+ listener.setListenerClassName(className);
+ if (description != null)
+ listener.setDescription(description);
+
+ webApp.getListeners().remove(listener);
+ webApp.getListeners().add(listener);
+ }
+ }
+
+ private Object getListenerByClassName(List list, String className) {
+ if (list == null || className == null)
+ return null;
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ Listener listener = (Listener) it.next();
+ if (listener != null
+ && className.equals(listener.getListenerClassName())) {
+ return listener;
+ }
+ }
+ return null;
+ }
+
+ public void configureServlet(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ // handle servlet settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ServletBean bean = (ServletBean) map.get(name);
+ if (bean == null)
+ continue;
+ // if contained this servlet
+ Object obj = webApp.getServletNamed(name);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Servlet '" + name +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getServlets().remove(obj);
+ }
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+ // create Servlet Type object
+ ServletType servletType = WebapplicationFactory.eINSTANCE
+ .createServletType();
+ servletType.setClassName(className);
+ // create Servlet object
+ Servlet servlet = WebapplicationFactory.eINSTANCE.createServlet();
+ servlet.setServletName(name);
+ if (description != null)
+ servlet.setDescription(description);
+ servlet.setWebType(servletType);
+ servlet.setWebApp(webApp);
+ }
+
+ }
+
+ private WebApp getWebApp(Map map, IProject project, IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return null;
+ if (map == null || project == null) {
+ return null;
+ }
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return null;
+ }
+ return (WebApp) modelObject;
+ }
+
+ public void configureServletMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String uri = DataUtil.getString(it.next(), false);
+ ServletMappingBean bean = (ServletMappingBean) map.get(uri);
+
+ if (bean == null)
+ continue;
+
+ // if contained this servlet-mapping
+ Object obj = WebArtifactUtil.getServletMappingByUri(webApp
+ .getServletMappings(), uri);
+ if (obj != null) {
+ String ret = query
+ .queryOverwrite("Servlet-mapping '" + uri + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ // remove old item
+ webApp.getServletMappings().remove(obj);
+ }
+
+ // servlet name
+ String name = bean.getName();
+
+ // create ServletMapping object
+ org.eclipse.jst.j2ee.webapplication.ServletMapping mapping =
WebapplicationFactory.eINSTANCE
+ .createServletMapping();
+
+ // get servlet by name
+ Servlet servlet = webApp.getServletNamed(name);
+ if (servlet != null) {
+ mapping.setServlet(servlet);
+ mapping.setUrlPattern(uri);
+ mapping.setWebApp(webApp);
+ }
+ }
+ }
+
+ public void configureTaglib(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ // handle taglib settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String uri = DataUtil.getString(it.next(), false);
+ TagLibBean bean = (TagLibBean) map.get(uri);
+
+ if (bean == null)
+ continue;
+
+ // if contained this taglib
+ Object obj = getTagLibByUri(webApp, uri);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Taglib '" + uri +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ // remove old item
+ if (obj instanceof TagLibRefType
+ && webApp.getJspConfig() != null) {
+ webApp.getJspConfig().getTagLibs().remove(obj);
+ } else {
+ webApp.getTagLibs().remove(obj);
+ }
+
+ }
+
+ String location = bean.getLocation();
+
+ if (webApp.getVersionID() == 23) {
+ // create TaglibRef object for servlet 2.3
+ TagLibRef taglib = WebapplicationFactory.eINSTANCE
+ .createTagLibRef();
+ taglib.setTaglibURI(uri);
+ taglib.setTaglibLocation(location);
+ webApp.getTagLibs().add(taglib);
+ } else {
+ // for servlet 2.4
+ JSPConfig jspConfig = JspFactory.eINSTANCE.createJSPConfig();
+ TagLibRefType ref = JspFactory.eINSTANCE.createTagLibRefType();
+ ref.setTaglibURI(uri);
+ ref.setTaglibLocation(location);
+ jspConfig.getTagLibs().add(ref);
+ webApp.setJspConfig(jspConfig);
+ }
+ }
+
+ }
+
+ private Object getTagLibByUri(WebApp webapp, String uri) {
+ if (webapp == null || uri == null)
+ return null;
+ List list = null;
+ JSPConfig config = webapp.getJspConfig();
+ if (config != null) {
+ // for servlet 2.4
+ list = config.getTagLibs();
+ } else {
+ list = webapp.getTagLibs();
+ }
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ Object obj = it.next();
+ // for servlet 2.3
+ if (obj instanceof TagLibRef) {
+ TagLibRef ref = (TagLibRef) obj;
+ if (uri.equals(ref.getTaglibURI()))
+ return ref;
+ }
+
+ // for servlet 2.4
+ if (obj instanceof TagLibRefType) {
+ TagLibRefType ref = (TagLibRefType) obj;
+ if (uri.equals(ref.getTaglibURI()))
+ return ref;
+ }
+ }
+ return null;
+ }
+
+ public void configureWebApp(WebAppBean webAppBean, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return;
+ if (webAppBean == null || project == null) {
+ return;
+ }
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return;
+ }
+ WebApp webApp = (WebApp) modelObject;
+ webApp.setDescription(webAppBean.getDescription());
+ }
+
+}
Added:
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil25.java
===================================================================
---
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil25.java
(rev 0)
+++
trunk/birt/plugins/org.jboss.tools.birt.core/src/org/jboss/tools/birt/core/internal/project/facet/JBossBirtUtil25.java 2008-06-12
00:20:02 UTC (rev 8730)
@@ -0,0 +1,539 @@
+package org.jboss.tools.birt.core.internal.project.facet;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.birt.integration.wtp.ui.internal.util.DataUtil;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ContextParamBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.FilterBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.FilterMappingBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ListenerBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ServletBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.ServletMappingBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.TagLibBean;
+import org.eclipse.birt.integration.wtp.ui.internal.webapplication.WebAppBean;
+import org.eclipse.birt.integration.wtp.ui.internal.wizards.SimpleImportOverwriteQuery;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.jst.j2ee.jsp.JSPConfig;
+import org.eclipse.jst.j2ee.jsp.TagLibRefType;
+import org.eclipse.jst.j2ee.model.IModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
+import org.eclipse.jst.j2ee.webapplication.TagLibRef;
+import org.eclipse.jst.javaee.core.Description;
+import org.eclipse.jst.javaee.core.JavaeeFactory;
+import org.eclipse.jst.javaee.core.Listener;
+import org.eclipse.jst.javaee.core.ParamValue;
+import org.eclipse.jst.javaee.core.UrlPatternType;
+import org.eclipse.jst.javaee.jsp.JspConfig;
+import org.eclipse.jst.javaee.jsp.JspFactory;
+import org.eclipse.jst.javaee.jsp.TagLib;
+import org.eclipse.jst.javaee.web.Filter;
+import org.eclipse.jst.javaee.web.FilterMapping;
+import org.eclipse.jst.javaee.web.Servlet;
+import org.eclipse.jst.javaee.web.ServletMapping;
+import org.eclipse.jst.javaee.web.WebApp;
+import org.eclipse.jst.javaee.web.WebFactory;
+import org.eclipse.ui.dialogs.IOverwriteQuery;
+
+public class JBossBirtUtil25 implements IBirtUtil {
+
+ public void configureContextParam(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ContextParamBean bean = (ContextParamBean) map.get(name);
+ if (bean == null)
+ continue;
+
+ // if contained this param
+ List list = webApp.getContextParams();
+
+ int index = getContextParamIndexByName(list, name);
+ if (index >= 0) {
+ String ret = query
+ .queryOverwrite("Context-param '" + name + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ // remove old item
+ list.remove(index);
+ }
+
+ String value = bean.getValue();
+ String description = bean.getDescription();
+ ParamValue param = JavaeeFactory.eINSTANCE.createParamValue();
+ param.setParamName(name);
+ param.setParamValue(value);
+ if (description != null) {
+ Description descriptionObj = JavaeeFactory.eINSTANCE
+ .createDescription();
+ descriptionObj.setValue(description);
+ param.getDescriptions().add(descriptionObj);
+
+ }
+
+ // add into list
+ webApp.getContextParams().add(param);
+
+ }
+
+ }
+
+ private int getContextParamIndexByName(List list, String name) {
+ if (list == null || name == null)
+ return -1;
+ Iterator it = list.iterator();
+ int index = 0;
+ while (it.hasNext()) {
+ Object paramObj = it.next();
+ if (paramObj instanceof ParamValue) {
+ ParamValue param = (ParamValue) paramObj;
+ if (name.equals(param.getParamName()))
+ return index;
+ }
+ index++;
+ }
+ return -1;
+ }
+
+ public void configureFilter(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+
+ // handle filter settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ FilterBean bean = (FilterBean) map.get(name);
+ if (bean == null)
+ continue;
+ // if contained this filter
+ Object obj = getFilterByName(webApp, name);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Filter '" + name +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getFilters().remove(obj);
+ }
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+ // create filter object
+ Filter filter = WebFactory.eINSTANCE.createFilter();
+ filter.setFilterName(name);
+ filter.setFilterClass(className);
+ Description descriptionObj = JavaeeFactory.eINSTANCE
+ .createDescription();
+ descriptionObj.setValue(description);
+ webApp.getFilters().add(filter);
+ }
+ }
+
+ private Object getFilterByName(WebApp webApp, String name) {
+ if (webApp == null || name == null)
+ return null;
+ List filters = webApp.getFilters();
+ for (Iterator iterator = filters.iterator(); iterator.hasNext();) {
+ Filter filter = (Filter) iterator.next();
+ if (filter != null && name.equals(filter.getFilterName()))
+ return filter;
+ }
+
+ return null;
+ }
+
+ public void configureFilterMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+
+ // handle filter-mapping settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String key = DataUtil.getString(it.next(), false);
+ FilterMappingBean bean = (FilterMappingBean) map.get(key);
+ if (bean == null)
+ continue;
+ // if contained this filter-mapping
+ Object obj = getFilterMappingByKey(webApp.getFilterMappings(), key);
+ if (obj != null) {
+ String ret = query
+ .queryOverwrite("Filter-mapping '" + key + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getFilterMappings().remove(obj);
+ }
+ // filter name
+ String name = bean.getName();
+ // create FilterMapping object
+ FilterMapping mapping = WebFactory.eINSTANCE.createFilterMapping();
+ // get filter by name
+ Filter filter = (Filter) getFilterByName(webApp, name);
+ if (filter != null) {
+ mapping.setFilterName(filter.getFilterName());
+ if (bean.getUri() != null) {
+ UrlPatternType urlPattern = JavaeeFactory.eINSTANCE
+ .createUrlPatternType();
+ urlPattern.setValue(bean.getUri());
+ mapping.getUrlPatterns().add(urlPattern);
+ }
+ mapping.getServletNames().add(bean.getServletName());
+
+ // get Servlet object
+ Servlet servlet = findServletByName(webApp, bean
+ .getServletName());
+ // mapping.setServlet(servlet);
+ if (servlet != null || bean.getUri() != null)
+ webApp.getFilterMappings().add(mapping);
+ }
+ }
+
+ }
+
+ private Object getFilterMappingByKey(List list, String key) {
+ if (list == null || key == null)
+ return null;
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ // get filter-mapping object
+ FilterMapping filterMapping = (FilterMapping) it.next();
+ if (filterMapping != null) {
+ String name = filterMapping.getFilterName();
+ List servletNames = filterMapping.getServletNames();
+ for (Iterator iterator = servletNames.iterator(); iterator
+ .hasNext();) {
+ String servletName = (String) iterator.next();
+ List urlPatterns = filterMapping.getUrlPatterns();
+ for (Iterator iterator2 = urlPatterns.iterator(); iterator2
+ .hasNext();) {
+ UrlPatternType urlPattern = (UrlPatternType) iterator2
+ .next();
+ String uri = urlPattern.getValue();
+ String curKey = getFilterMappingString(name,
+ servletName, uri);
+ if (key.equals(curKey))
+ return filterMapping;
+ }
+
+ }
+
+ }
+ }
+ return null;
+ }
+
+ private String getFilterMappingString(String name, String servletName,
+ String uri) {
+ return (name != null ? name : "") //$NON-NLS-1$
+ + (servletName != null ? servletName : "") //$NON-NLS-1$
+ + (uri != null ? uri : ""); //$NON-NLS-1$
+ }
+
+ public void configureListener(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+
+ // handle listeners settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ListenerBean bean = (ListenerBean) map.get(name);
+ if (bean == null)
+ continue;
+
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+
+ // if listener existed in web.xml, skip it
+ Object obj = getListenerByClassName(webApp.getListeners(),
+ className);
+ if (obj != null)
+ continue;
+
+ // create Listener object
+ Listener listener = JavaeeFactory.eINSTANCE.createListener();
+ listener.setListenerClass(className);
+ if (description != null) {
+ Description descriptionObj = JavaeeFactory.eINSTANCE
+ .createDescription();
+ descriptionObj.setValue(description);
+ listener.getDescriptions().add(descriptionObj);
+ }
+
+ webApp.getListeners().remove(listener);
+ webApp.getListeners().add(listener);
+ }
+ }
+
+ private Object getListenerByClassName(List list, String className) {
+ if (list == null || className == null)
+ return null;
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ Listener listener = (Listener) it.next();
+ if (listener != null
+ && className.equals(listener.getListenerClass())) {
+ return listener;
+ }
+ }
+ return null;
+ }
+
+ public void configureServlet(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String name = DataUtil.getString(it.next(), false);
+ ServletBean bean = (ServletBean) map.get(name);
+ if (bean == null)
+ continue;
+ // if contained this servlet
+ Object obj = findServletByName(webApp, name);
+ // webapp.getServletNamed(name);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Servlet '" + name +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getServlets().remove(obj);
+ }
+ String className = bean.getClassName();
+ String description = bean.getDescription();
+ // create Servlet Type object
+ Servlet servlet = WebFactory.eINSTANCE.createServlet();
+ servlet.setServletName(name);
+ servlet.setServletClass(className);
+ // FIXME
+ // servlet.setDescription(description);
+ servlet.setLoadOnStartup(Integer.valueOf(1));
+ // Add the servlet to the web application model
+ webApp.getServlets().add(servlet);
+ // FIXME
+ // servlet.setWebApp(webapp);
+ }
+ }
+
+ private WebApp getWebApp(Map map, IProject project, IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return null;
+ if (map == null || project == null) {
+ return null;
+ }
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return null;
+ }
+ WebApp webApp = (WebApp) modelObject;
+ return webApp;
+ }
+
+ public void configureServletMapping(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String uri = DataUtil.getString(it.next(), false);
+ ServletMappingBean bean = (ServletMappingBean) map.get(uri);
+ if (bean == null)
+ continue;
+ // if contained this servlet-mapping
+ Object obj = getServletMappingByUri(webApp.getServletMappings(),
+ uri);
+ if (obj != null) {
+ String ret = query
+ .queryOverwrite("Servlet-mapping '" + uri + "'");
//$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+ // remove old item
+ webApp.getServletMappings().remove(obj);
+ }
+ // servlet name
+ String name = bean.getName();
+ // create ServletMapping object
+ ServletMapping mapping = WebFactory.eINSTANCE
+ .createServletMapping();
+ // get servlet by name
+ Servlet servlet = findServletByName(webApp, name);
+ if (servlet != null) {
+ mapping.setServletName(servlet.getServletName());
+ UrlPatternType urlPattern = JavaeeFactory.eINSTANCE
+ .createUrlPatternType();
+ urlPattern.setValue(uri);
+ mapping.getUrlPatterns().add(urlPattern);
+ webApp.getServletMappings().add(mapping);
+ // mapping.setUrlPattern(uri);
+ // mapping.setWebApp( webapp );
+ }
+ }
+ }
+
+ public void configureTaglib(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ // Feature 'taglib' not implemented
+ return;
+ }
+
+ public void configureTaglibOrig(Map map, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ WebApp webApp = getWebApp(map, project, monitor);
+ if (webApp == null)
+ return;
+ // handle taglib settings
+ Iterator it = map.keySet().iterator();
+ while (it.hasNext()) {
+ String uri = DataUtil.getString(it.next(), false);
+ TagLibBean bean = (TagLibBean) map.get(uri);
+
+ if (bean == null)
+ continue;
+ // if contained this taglib
+ Object obj = getTagLibByUri(webApp, uri);
+ if (obj != null) {
+ String ret = query.queryOverwrite("Taglib '" + uri +
"'"); //$NON-NLS-1$ //$NON-NLS-2$
+ // check overwrite query result
+ if (IOverwriteQuery.NO.equalsIgnoreCase(ret)) {
+ continue;
+ }
+ if (IOverwriteQuery.CANCEL.equalsIgnoreCase(ret)) {
+ monitor.setCanceled(true);
+ return;
+ }
+
+ List jspConfigs = webApp.getJspConfigs();
+ for (Iterator iterator = jspConfigs.iterator(); iterator
+ .hasNext();) {
+ JspConfig jspConfig = (JspConfig) iterator.next();
+ jspConfig.getTagLibs().remove(obj);
+ }
+
+ }
+ String location = bean.getLocation();
+ JspConfig jspConfig = JspFactory.eINSTANCE.createJspConfig();
+ TagLib ref = JspFactory.eINSTANCE.createTagLib();
+ ref.setTaglibUri(uri);
+ ref.setTaglibLocation(location);
+ jspConfig.getTagLibs().add(ref);
+ webApp.getJspConfigs().add(jspConfig);
+ }
+ }
+
+ private Object getTagLibByUri(WebApp webapp, String uri) {
+ if (webapp == null || uri == null)
+ return null;
+ List jspConfigs = webapp.getJspConfigs();
+ for (Iterator iterator = jspConfigs.iterator(); iterator.hasNext();) {
+ JspConfig jspConfig = (JspConfig) iterator.next();
+ List list = jspConfig.getTagLibs();
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ Object obj = it.next();
+ TagLib ref = (TagLib) obj;
+ if (uri.equals(ref.getTaglibUri()))
+ return ref;
+ }
+ }
+ return null;
+ }
+
+ public void configureWebApp(WebAppBean webAppBean, IProject project,
+ SimpleImportOverwriteQuery query, IProgressMonitor monitor) {
+ if (monitor.isCanceled())
+ return;
+ if (webAppBean == null || project == null) {
+ return;
+ }
+ IModelProvider modelProvider = ModelProviderManager
+ .getModelProvider(project);
+ Object modelObject = modelProvider.getModelObject();
+ if (!(modelObject instanceof WebApp)) {
+ // TODO log
+ return;
+ }
+ WebApp webApp = (WebApp) modelObject;
+ Description descriptionObj = JavaeeFactory.eINSTANCE
+ .createDescription();
+ descriptionObj.setValue(webAppBean.getDescription());
+ webApp.getDescriptions().add(descriptionObj);
+ }
+
+ private Servlet findServletByName(WebApp webApp, String name) {
+ Iterator it = webApp.getServlets().iterator();
+ while (it.hasNext()) {
+ Servlet servlet = (Servlet) it.next();
+ if (servlet.getServletName() != null
+ && servlet.getServletName().trim().equals(name)) {
+ return servlet;
+ }
+ }
+ return null;
+ }
+
+ private Object getServletMappingByUri(List list, String uri) {
+ if (list == null || uri == null)
+ return null;
+ Iterator it = list.iterator();
+ while (it.hasNext()) {
+ // get servlet-mapping object
+ ServletMapping servletMapping = (ServletMapping) it.next();
+ if (servletMapping == null)
+ continue;
+ List<UrlPatternType> urlPaterns = servletMapping.getUrlPatterns();
+ for (UrlPatternType patern : urlPaterns)
+ if (patern != null && uri.equals(patern.getValue())) {
+ return servletMapping;
+ }
+ }
+ return null;
+ }
+}