@Override public String toString() { return getDisplayName(); } }
@SuppressWarnings("CloneDoesntCallSuperClone") public TextWalker clone() { TextWalker clone = new TextWalker(myText); clone.myOffset = myOffset; clone.myRow = myRow; clone.myPos = myPos; clone.myChar = myChar; return clone; }
public String getDisplayName() { if (myDisplayName == null) { prepareDisplayName(); } return myDisplayName; }
@NotNull public final SqlScript script(@NotNull final String name) { TextFragment fragment = getText(name); SqlScriptBuilder b = new SqlScriptBuilder(); b.parse(fragment.text); return new SqlScript(b.build()); }
@NotNull public final <S> SqlQuery<S> query(@NotNull final String name, @NotNull final ResultLayout<S> layout) { TextFileFragment fragment = getText(name); fragment = stripSingleStatement(fragment); final SqlQuery<S> query = new SqlQuery<S>(fragment, layout); query.setDisplayName(fragment.getFragmentName()); return query; }
@Test public void basic_4_with_query() { final SqlScript script = new SqlScript(new SqlCommand("create table TT4a(X1 integer)"), new SqlCommand("insert into TT4a values (44)"), new SqlQuery<Boolean>("select * from TT4a", Layouts.existence()), new SqlCommand("drop table TT4a")); myFacade.inSession(new InSessionNoResult() { @Override public void run(@NotNull final DBSession session) { session.script(script).run(); } }); }
private static SqlScript build(String text) { SqlScriptBuilder b = new SqlScriptBuilder(); b.parse(text); return b.build(); }
public void parse(@NotNull final String text) { TextWalker walker = new TextWalker(text); while (!walker.isEOT()) { skipEmptySpace(walker); if (walker.isEOT()) break; String essentialWords = extractEssentialWords(walker, 6); boolean pl = determinePL(essentialWords); if (pl) { extractPLBlock(walker); } else { extractSQLCommand(walker); } } }
@NotNull public final SqlCommand command(@NotNull final String name) { TextFileFragment fragment = getText(name); fragment = stripSingleStatement(fragment); return new SqlCommand(fragment); }
@Override public void performScript(final String... commands) { if (commands == null || commands.length == 0) return; SqlScriptBuilder b = new SqlScriptBuilder(); for (String c : commands) b.add(c); performScript(b.build()); }
@Test public void parse_OraclePackage() { final SqlScript script = build(ORACLE_PKG1); assertThat(script.getStatements()).hasSize(2); assertThat(script.getStatements().get(0).getSourceText()).startsWith("create package pkg1") .endsWith("end pkg1;"); assertThat(script.getStatements().get(1).getSourceText()).startsWith("create package body") .endsWith("end;"); }
@Test public void postgresProcedure1() { SqlCommand plb = myScriptum.command("PostgresProcedure1"); assertThat(plb.getSourceText()).startsWith("create") .endsWith("language plpgsql"); }
@NotNull String[] getExistentNames() { loadIfNeeded(); int n = myFragments.length; String[] names = new String[n]; for (int i = 0; i < n; i++) names[i] = myFragments[i].getFragmentName(); return names; }
protected void loadIfNeeded() { if (myFragments == null) { myFragments = loadFragments(); myFragmentsMap = new TreeMap<String, TextFileFragment>(String.CASE_INSENSITIVE_ORDER); for (TextFileFragment fragment : myFragments) { if (fragment.getFragmentName() != null) { myFragmentsMap.put(fragment.getFragmentName(), fragment); } } } }
@Test public void parse_OraclePackage_lines() { final SqlScript script = build(ORACLE_PKG1); assertThat(script.getStatements()).hasSize(2) .extracting("row") .containsSequence(1, 9); }
@Override public String toString() { return getTextLocationHumanReadable() + '\n' + text; }
int count() { loadIfNeeded(); return myFragments.length; }
public void skipToOffset(int newOffset) { if (newOffset < myOffset) throw new IllegalArgumentException("Attempted to skip back"); if (newOffset > myLength) throw new IllegalArgumentException("Attempted to skip out of the end of text"); int distance = newOffset - myOffset; for (int i = 1; i <= distance; i++) next(); }