package org.n3r.eql.impl; import org.n3r.eql.ex.EqlExecuteException; import org.n3r.eql.map.EqlRun; import org.n3r.eql.parser.EqlBlock; import java.util.List; public class IterateOptions { public static void checkIterateOption( EqlBlock eqlBlock, List<EqlRun> eqlRuns, Object[] params) { if (!eqlBlock.isIterateOption()) return; if (eqlRuns.size() != 1) throw new EqlExecuteException ("iterate mode only allow enabled when only one sql in a block"); EqlRun eqlRun = eqlRuns.get(0); if (!eqlRun.getSqlType().isUpdateStmt()) throw new EqlExecuteException( "iterate mode only allow enabled when sql type is update"); if (params == null || params.length == 0) throw new EqlExecuteException( "batch mode only allow enabled when single parameter in collection type"); if (params[0] instanceof Iterable && params.length == 1) return; if (params[0] != null && params[0].getClass().isArray() && params.length == 2 && params[1] == null) return; throw new EqlExecuteException( "batch mode only allow enabled when single parameter of iteratable or array type"); } }