package at.ac.tuwien.dsg.scaledom.lazy.impl;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.events.XMLEvent;
import at.ac.tuwien.dsg.scaledom.lazy.LazyLoadingStrategy;
import at.ac.tuwien.dsg.scaledom.parser.XmlEventLocation;
/**
* The default strategy loads the requested children only.
*
* @author Dominik Rauch
*/
public class DefaultLazyLoadingStrategy extends LazyLoadingStrategy {
/** Maximum depth to load. */
private static final int DEPTH = 1;
/** Current level. */
private int level;
/**
* Default constructor.
*
* @see LazyLoadingStrategy#LazyLoadingStrategy(int)
*/
public DefaultLazyLoadingStrategy(final int absouteLevel) {
super(absouteLevel);
level = 0;
}
@Override
public boolean shouldLoad(final XMLEvent event, final XmlEventLocation eventLocation) {
if (event.getEventType() == XMLStreamConstants.END_ELEMENT) {
--level;
}
final boolean shouldLoad = level < DEPTH;
if (event.getEventType() == XMLStreamConstants.START_ELEMENT) {
++level;
}
return shouldLoad;
}
}