/**
* <copyright>
*
* Copyright (c) 2002-2006 IBM Corporation 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:
* IBM - Initial API and implementation
*
* </copyright>
*
* $Id: RoseWalker.java,v 1.3 2006/12/28 06:56:06 marcelop Exp $
*/
package com.sap.emf.importer.moin.rose.builder;
import java.util.List;
import com.sap.emf.importer.moin.rose.parser.RoseNode;
/**
* Traverses the Rose file a second time to create mapping object.
*/
public class RoseWalker
{
private RoseNode roseNode;
private RoseVisitor visitor;
public RoseWalker(RoseNode roseNode)
{
this.roseNode = roseNode;
}
public void traverse(RoseVisitor visitor)
{
this.visitor = visitor;
traverseObject(roseNode);
}
private void traverseObject(RoseNode roseNode)
{
visitor.visitObject(roseNode);
traverse(roseNode);
}
private void traverseList(RoseNode roseNode)
{
visitor.visitList(roseNode);
traverse(roseNode);
}
private void traverse(RoseNode roseNode)
{
List<RoseNode> nodes = roseNode.getNodes();
for (int i = 0; i < nodes.size(); i++)
{
RoseNode node = nodes.get(i);
if (node.getRoseNodeType() == RoseNode.OBJECT)
{
traverseObject(node);
}
else if (node.getRoseNodeType() == RoseNode.LIST)
{
traverseList(node);
}
}
}
}