package com.rectang.xsm.site.upgrades;
import com.rectang.xsm.site.Site;
import com.rectang.xsm.site.DocumentPage;
import com.rectang.xsm.site.Page;
import com.rectang.xsm.io.XSMDocument;
import java.util.Iterator;
import java.util.List;
import org.jdom.Element;
public class Upgrade8
implements UpgradeUnit
{
public int getFromVersion()
{
return 8;
}
public int getToVersion()
{
return 9;
}
public String getTitle()
{
return "Fix encoding of HTML entities";
}
public boolean upgrade( Site site )
{
Iterator pages = site.getAllPages();
while ( pages.hasNext() )
{
Page nextPage = (Page) pages.next();
if ( !(nextPage instanceof DocumentPage) )
{
continue;
}
DocumentPage next = (DocumentPage) nextPage;
try
{
XSMDocument doc = next.getXSMDocument();
System.out.println( "upgrade 8 - " + doc.getPath() );
Element root = doc.getContentElement();
unescape( root );
doc.save();
}
catch ( Exception e )
{
System.err.println( "Failed on file " + next.getPath() + e.getMessage() );
return false;
}
}
return true;
}
private void unescape( Element root )
{
String value = root.getText();
System.out.println( value );
if ( value.indexOf( "&" ) != -1 )
{
root.setText( value.replaceAll( "&", "&" ) );
}
if ( root.getChildren() != null && root.getChildren().size() > 0 )
{
Iterator children = root.getChildren().iterator();
while ( children.hasNext() )
{
Element element = (Element) children.next();
unescape( element );
}
}
}
}