blob: 08d297a6d58cb4abe053b0d2d049a621a767f4f7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 EclipseSource and others. All rights reserved. This
* program and the accompanying materials are made available under the terms of
* the Eclipse Public License v1.0 which accompanies this distribution, and is
* available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Holger Staudacher - initial API and implementation
*******************************************************************************/
package org.eclipse.libra.warproducts.core;
import java.io.InputStream;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.*;
public class InfrastructureCreator {
private static final String WEB_INF_PATH = "WEB-INF"; //$NON-NLS-1$
private static final String WEB_XML_TEMPLATE_PATH
= "/web.xml"; //$NON-NLS-1$
private static final String LAUNCH_INI_TEMPLATE_PATH
= "/launch.ini"; //$NON-NLS-1$
private static final String WEB_XML_NAME = "web.xml"; //$NON-NLS-1$
private static final String LAUNCH_INI_NAME = "launch.ini"; //$NON-NLS-1$
private IContainer rootFolder;
private IFolder webInfDir;
public InfrastructureCreator( final IContainer tempDir ) {
this.rootFolder = tempDir;
}
public IContainer getContainer() {
return rootFolder;
}
public void createWebInf() throws CoreException {
if( webInfDir == null ) {
IPath webInfPath = new Path( WEB_INF_PATH );
webInfDir = rootFolder.getFolder( webInfPath );
if( !webInfDir.exists() ) {
webInfDir.create( true, false, null );
refreshWebInf();
}
}
}
public void createWebXml() throws CoreException {
if( webInfDir == null ) {
createWebInf();
}
internalCopyFile( WEB_XML_TEMPLATE_PATH, webInfDir, WEB_XML_NAME );
refreshWebInf();
}
public void createLaunchIni() throws CoreException {
if( webInfDir == null ) {
createWebInf();
}
internalCopyFile( LAUNCH_INI_TEMPLATE_PATH, webInfDir, LAUNCH_INI_NAME );
refreshWebInf();
}
private void internalCopyFile( final String from,
final IContainer container,
final String fileName )
throws CoreException
{
copyFile( from, container, fileName );
}
private void copyFile( final String from,
final IContainer container,
final String fileName )
throws CoreException
{
IPath path = new Path( fileName );
IFile file = container.getFile( path );
if( !file.exists() ) {
file.create( getFileStream( from ), true, null );
}
}
private InputStream getFileStream( final String from ) {
InputStream fileInStream = getClass().getResourceAsStream( from );
return fileInStream;
}
public IPath getWebXmlPath() {
IPath webInfPath = webInfDir.getFullPath();
return webInfPath.append( WEB_XML_NAME );
}
public IPath getLaunchIniPath() {
IPath webInfPath = webInfDir.getFullPath();
return webInfPath.append( LAUNCH_INI_NAME );
}
private void refreshWebInf() throws CoreException {
webInfDir.refreshLocal( IResource.DEPTH_ONE, null );
}
}