package org.basex.query.ft; import java.io.IOException; import org.basex.io.serial.Serializer; import org.basex.query.QueryContext; import org.basex.query.QueryException; import org.basex.query.item.FTNode; import org.basex.query.iter.FTIter; import org.basex.util.InputInfo; import org.basex.util.Util; import org.basex.util.ft.FTOpt; /** * FTOptions expression. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class FTOptions extends FTExpr { /** FTOptions. */ private final FTOpt opt; /** * Constructor. * @param ii input info * @param e expression * @param o ft options */ public FTOptions(final InputInfo ii, final FTExpr e, final FTOpt o) { super(ii, e); opt = o; } @Override public FTExpr comp(final QueryContext ctx) throws QueryException { final FTOpt tmp = ctx.ftopt; ctx.ftopt = opt.copy(tmp); if(opt.sw != null && ctx.value != null && ctx.value.data() != null) opt.sw.comp(ctx.value.data()); expr[0] = expr[0].comp(ctx); ctx.ftopt = tmp; return expr[0]; } @Override public void plan(final Serializer ser) throws IOException { ser.openElement(this); opt.plan(ser); expr[0].plan(ser); ser.closeElement(); } @Override public String toString() { return expr[0].toString() + opt; } @Override public FTNode item(final QueryContext ctx, final InputInfo ii) { // shouldn't be called, as compile returns argument throw Util.notexpected(); } @Override public FTIter iter(final QueryContext ctx) { // shouldn't be called, as compile returns argument throw Util.notexpected(); } }