use of org.sirix.api.Axis in project sirix by sirixdb.
the class Function method ebv.
public static boolean ebv(final Axis axis) throws SirixXPathException {
final FuncDef ebv = FuncDef.BOOLEAN;
final List<Axis> param = new ArrayList<Axis>();
param.add(axis);
final AbstractAxis bAxis = new FNBoolean(axis.getTrx(), param, ebv.getMin(), ebv.getMax(), axis.getTrx().keyForName(ebv.getReturnType()));
if (bAxis.hasNext()) {
bAxis.next();
final boolean result = Boolean.parseBoolean(bAxis.getTrx().getValue());
if (!bAxis.hasNext()) {
bAxis.reset(axis.getTrx().getNodeKey());
return result;
}
}
// TODO!!
throw new IllegalStateException("This should not happen!");
}
use of org.sirix.api.Axis in project sirix by sirixdb.
the class SequenceAxis method reset.
/**
* {@inheritDoc}
*/
@Override
public void reset(final long mNodeKey) {
super.reset(mNodeKey);
if (mSeq != null) {
for (Axis ax : mSeq) {
ax.reset(mNodeKey);
}
}
mCurrent = null;
mNum = 0;
}
use of org.sirix.api.Axis in project sirix by sirixdb.
the class SomeExpr method evaluate.
@Override
public void evaluate() {
boolean satisfiesCond = false;
for (final Axis axis : mVars) {
while (axis.hasNext()) {
mKey = axis.next();
mSatisfy.reset(mKey);
if (mSatisfy.hasNext()) {
mKey = mSatisfy.next();
// condition is satisfied for this item -> expression is
// true
satisfiesCond = true;
break;
}
}
}
final int itemKey = getTrx().getItemList().addItem(new AtomicValue(TypedValue.getBytes(Boolean.toString(satisfiesCond)), getTrx().keyForName("xs:boolean")));
mKey = itemKey;
}
use of org.sirix.api.Axis in project sirix by sirixdb.
the class ConcurrentAxisTest method testPartConcurrentDescAxis2.
/**
* Test concurrent.
*
* @throws SirixXPathException
*/
// @Bench
@Test
public void testPartConcurrentDescAxis2() throws Exception {
/* query: //regions/africa//location */
final int resultNumber = 55;
final XdmNodeReadTrx firstConcurrRtx = holder.getResourceManager().beginNodeReadTrx();
final Axis axis = new NestedAxis(new NestedAxis(new FilterAxis(new DescendantAxis(firstConcurrRtx, IncludeSelf.YES), new NameFilter(firstConcurrRtx, "regions")), new FilterAxis(new ChildAxis(firstConcurrRtx), new NameFilter(firstConcurrRtx, "africa"))), new ConcurrentAxis(firstConcurrRtx, new FilterAxis(new DescendantAxis(holder.getReader(), IncludeSelf.YES), new NameFilter(holder.getReader(), "location"))));
for (int i = 0; i < resultNumber; i++) {
assertEquals(true, axis.hasNext());
axis.next();
}
assertEquals(axis.hasNext(), false);
}
use of org.sirix.api.Axis in project sirix by sirixdb.
the class ConcurrentAxisTest method testSeriellOld.
/**
* Test seriell.
*/
// @Ignore
// @SkipBench
// @Bench
@Test
public void testSeriellOld() throws Exception {
// final String query = "//people/person[@id=\"person3\"]/name";
// final String query = "count(//location[text() = \"United States\"])";
final String query = "//regions/africa//location";
// final String result = "<name>Limor Simone</name>";
final int resultNumber = 55;
final Axis axis = new XPathAxis(holder.getReader(), query);
for (int i = 0; i < resultNumber; i++) {
assertEquals(true, axis.hasNext());
axis.next();
}
assertEquals(false, axis.hasNext());
}
Aggregations