package org.zend.php.zendserver.deployment.core.descriptor; import javax.xml.parsers.DocumentBuilder; import org.eclipse.core.resources.IProject; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.zend.php.zendserver.deployment.core.internal.descriptor.DeploymentDescriptor; import org.zend.php.zendserver.deployment.core.internal.descriptor.DirectiveDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.ExtensionDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.Feature; import org.zend.php.zendserver.deployment.core.internal.descriptor.PHPDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.PHPLibraryDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.Parameter; import org.zend.php.zendserver.deployment.core.internal.descriptor.Variable; import org.zend.php.zendserver.deployment.core.internal.descriptor.ZendComponentDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.ZendFramework2Dependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.ZendFrameworkDependency; import org.zend.php.zendserver.deployment.core.internal.descriptor.ZendServerDependency; public class DeploymentDescriptorFactory { public static DeploymentDescriptor create(IProject project) { return new DeploymentDescriptor(); } public static IModelObject createModelElement(Feature path) { switch (path.id) { case DeploymentDescriptorPackage.PACKAGE_ID: return new DeploymentDescriptor(); case DeploymentDescriptorPackage.VARIABLES_ID: return new Variable(); case DeploymentDescriptorPackage.DEPENDENCIES_DIRECTIVE_ID: return new DirectiveDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_EXTENSION_ID: return new ExtensionDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_PHP_ID: return new PHPDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_ZENDFRAMEWORK2_ID: return new ZendFramework2Dependency(); case DeploymentDescriptorPackage.DEPENDENCIES_ZENDFRAMEWORK_ID: return new ZendFrameworkDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_ZENDSERVER_ID: return new ZendServerDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_ZSCOMPONENT_ID: return new ZendComponentDependency(); case DeploymentDescriptorPackage.DEPENDENCIES_LIBRARY_ID: return new PHPLibraryDependency(); case DeploymentDescriptorPackage.PARAMETERS_ID: return new Parameter(); } throw new IllegalArgumentException("Unknown model element "+path); //$NON-NLS-1$ } public static Feature getFeature(Object result) { if (result instanceof IDeploymentDescriptor) { return DeploymentDescriptorPackage.PACKAGE; } else if (result instanceof IVariable) { return DeploymentDescriptorPackage.VARIABLES; } else if (result instanceof IDirectiveDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_DIRECTIVE; } else if (result instanceof IExtensionDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_EXTENSION; } else if (result instanceof IPHPDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_PHP; } else if (result instanceof IZendFramework2Dependency) { return DeploymentDescriptorPackage.DEPENDENCIES_ZENDFRAMEWORK2; } else if (result instanceof IZendFrameworkDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_ZENDFRAMEWORK; } else if (result instanceof IZendServerDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_ZENDSERVER; } else if (result instanceof IZendComponentDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_ZSCOMPONENT; } else if (result instanceof IParameter) { return DeploymentDescriptorPackage.PARAMETERS; } else if (result instanceof IPHPLibraryDependency) { return DeploymentDescriptorPackage.DEPENDENCIES_LIBRARY; } throw new IllegalArgumentException("Unknown model object "+result); //$NON-NLS-1$ } public static Document createEmptyDocument(DocumentBuilder builder) { Document document = builder.newDocument(); Element rootElement = document.createElement(DeploymentDescriptorPackage.PACKAGE.xpath); rootElement.setAttribute("packagerversion", "1.4.11"); //$NON-NLS-1$ //$NON-NLS-2$ rootElement.setAttribute("version", "2.0"); //$NON-NLS-1$ //$NON-NLS-2$ rootElement.setAttribute("xmlns:xsi", //$NON-NLS-1$ "http://www.w3.org/2001/XMLSchema-instance"); //$NON-NLS-1$ rootElement.setAttribute("xsi:schemaLocation", //$NON-NLS-1$ "http://www.zend.com packageDescriptor.xsd"); //$NON-NLS-1$ document.appendChild(rootElement); return document; } }