/*
* Copyright (c) 2010-2012 Research In Motion Limited. All rights reserved.
*
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License, Version 1.0,
* which accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*
*/
package net.rim.ejde.internal.sourcelookup;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
import org.eclipse.debug.core.sourcelookup.ISourceContainer;
import org.eclipse.debug.core.sourcelookup.containers.AbstractSourceContainerTypeDelegate;
import org.eclipse.debug.internal.core.sourcelookup.SourceLookupMessages;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
/**
* A folder in the local file system.
*
*/
public class RIMDirSourceContainerType extends AbstractSourceContainerTypeDelegate {
/*
* (non-Javadoc)
*
* @see org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#createSourceContainer(java.lang.String)
*/
public ISourceContainer createSourceContainer( String memento ) throws CoreException {
Node node = parseDocument( memento );
if( node.getNodeType() == Node.ELEMENT_NODE ) {
Element element = (Element) node;
if( "directory".equals( element.getNodeName() ) ) { //$NON-NLS-1$
String string = element.getAttribute( "path" ); //$NON-NLS-1$
if( string == null || string.length() == 0 ) {
abort( SourceLookupMessages.DirectorySourceContainerType_10, null );
}
String nest = element.getAttribute( "nest" ); //$NON-NLS-1$
boolean nested = "true".equals( nest ); //$NON-NLS-1$
return new RIMDirSourceContainer( new Path( string ), nested );
}
abort( SourceLookupMessages.DirectorySourceContainerType_11, null );
}
abort( SourceLookupMessages.DirectorySourceContainerType_12, null );
return null;
}
/*
* (non-Javadoc)
*
* @see
* org.eclipse.debug.internal.core.sourcelookup.ISourceContainerType#getMemento(org.eclipse.debug.internal.core.sourcelookup
* .ISourceContainer)
*/
public String getMemento( ISourceContainer container ) throws CoreException {
RIMDirSourceContainer folder = (RIMDirSourceContainer) container;
Document document = newDocument();
Element element = document.createElement( "directory" ); //$NON-NLS-1$
element.setAttribute( "path", folder.getDirectory().getAbsolutePath() ); //$NON-NLS-1$
String nest = "false"; //$NON-NLS-1$
if( folder.isComposite() ) {
nest = "true"; //$NON-NLS-1$
}
element.setAttribute( "nest", nest ); //$NON-NLS-1$
document.appendChild( element );
return serializeDocument( document );
}
}