/*
* Copyright 2000-2013 Enonic AS
* http://www.enonic.com/license
*/
package com.enonic.cms.core.content.contentdata;
import java.util.StringTokenizer;
import org.jdom.Element;
public class ContentDataXPathCreator
{
/**
* Creates given xpath, not reusing existing matching path.
*/
public static Element createNewPath( final Element parentEl, final String xpath )
{
return doCreatePath( parentEl, xpath, true );
}
/**
* Ensures given xpath, resuing existing matching elements.
*/
public static Element ensurePath( final Element parentEl, final String xpath )
{
return doCreatePath( parentEl, xpath, false );
}
private static Element doCreatePath( final Element parentEl, final String wantedXPath, final boolean createNew )
{
Element curParentEl = parentEl;
StringTokenizer st = new StringTokenizer( wantedXPath, "/" );
while ( st.hasMoreTokens() )
{
String wantedElementName = st.nextToken();
Element child = curParentEl.getChild( wantedElementName );
if ( child == null || ( createNew && !st.hasMoreTokens() ) )
{
child = new Element( wantedElementName );
curParentEl.addContent( child );
}
curParentEl = child;
}
return curParentEl;
}
}