@Override public String getName() { return index.getName(); }
@Override public boolean isPrimary() { return index.isPrimary(); }
@Override public boolean isUnique() { return index.isUnique(); }
public void serialize(OutputStream out) throws IOException { try (OutputStreamWriter osw = new OutputStreamWriter(out, Charset.forName("utf-8")); BufferedWriter writer = new BufferedWriter(osw)) { for (Sequence s : sequences.values()) { writer.write("S" + s.getName()); writer.newLine(); } for (Table t : tables.values()) { writer.write("T" + t.getName()); writer.newLine(); for (Field f : t.getFields()) { writer.write("F" + f.getName() + ":" + f.getDataType() + ":" + f.getExtent()); writer.newLine(); } for (Index i : t.getIndexes()) { writer.write("I" + i.getName() + ":" + (i.isPrimary() ? "P" : "") + (i.isUnique() ? "U" : "")); for (IndexField ifld : i.getFields()) { writer.write(":" + (ifld.isAscending() ? 'A' : 'D') + ifld.getField().getName()); } writer.newLine(); } } } }
@Override public Void visitAddIndex(AddIndexContext ctx) { Index index = new Index(ctx.index.getText()); index.setFirstLine(ctx.getStart().getLine()); index.setLastLine(ctx.getStop().getLine()); indexes.push(index); if (ctx.uniq != null) index.setUnique(true); // Search for Table object for this field Table table = null; for (Table t : tables) { if (t.getName().equalsIgnoreCase(ctx.table.getText())) table = t; } if (table != null) { table.addIndex(index); } else { // Log error ? } return visitChildren(ctx); }
if (lst.size() < 3) throw new IOException("Invalid file format: " + line); Index i = new Index(lst.get(0).substring(1)); i.setUnique(lst.get(1).indexOf('U') > -1); i.setPrimary(lst.get(1).indexOf('P') > -1); for (int zz = 2; zz < lst.size(); zz++) { i.addField(new IndexField(currTbl.getField(lst.get(zz).substring(1)), lst.get(zz).charAt(0) == 'A'));
public IndexWrapper(ITable table, Index index) { Preconditions.checkNotNull(table); Preconditions.checkNotNull(index); this.table = table; this.index = index; for (IndexField fld : index.getFields()) { fields.add(new FieldWrapper(table, fld.getField())); } }
@Override public Void visitIndexArea(IndexAreaContext ctx) { if (indexes.isEmpty()) return null; indexes.peek().setArea(ctx.val.getText()); return null; }
@Override public Void visitUpdateIndexBP(UpdateIndexBPContext ctx) { String tableName = ctx.table.getText(); String indexName = ctx.index.getText(); Table table = db.getTable(tableName); if (table != null) { Index index = table.getIndex(indexName); if (index != null) { index.setBufferPool(ctx.value.getText()); } } return null; }
@Override public Void visitIndexField(IndexFieldContext ctx) { if (indexes.isEmpty()) return null; // Search for Table object for this index String tableName = ((AddIndexContext) ctx.parent).table.getText(); Table table = null; for (Table t : tables) { if (t.getName().equalsIgnoreCase(tableName)) table = t; } if (table != null) { IndexField idxFld = new IndexField(table.getField(ctx.field.getText()), "ascending".equalsIgnoreCase(ctx.order.getText())); indexes.peek().addField(idxFld); } else { // Log error ? } return null; }
public void serialize(OutputStream out) throws IOException { try (OutputStreamWriter osw = new OutputStreamWriter(out, Charset.forName("utf-8")); BufferedWriter writer = new BufferedWriter(osw)) { for (Sequence s : sequences.values()) { writer.write("S" + s.getName()); writer.newLine(); } for (Table t : tables.values()) { writer.write("T" + t.getName()); writer.newLine(); for (Field f : t.getFields()) { writer.write("F" + f.getName() + ":" + f.getDataType() + ":" + f.getExtent()); writer.newLine(); } for (Index i : t.getIndexes()) { writer.write("I" + i.getName() + ":" + (i.isPrimary() ? "P" : "") + (i.isUnique() ? "U" : "")); for (IndexField ifld : i.getFields()) { writer.write(":" + (ifld.isAscending() ? 'A' : 'D') + ifld.getField().getName()); } writer.newLine(); } } } }
@Override public Void visitAddIndex(AddIndexContext ctx) { Index index = new Index(ctx.index.getText()); index.setFirstLine(ctx.getStart().getLine()); index.setLastLine(ctx.getStop().getLine()); indexes.push(index); if (ctx.uniq != null) index.setUnique(true); // Search for Table object for this field Table table = null; for (Table t : tables) { if (t.getName().equalsIgnoreCase(ctx.table.getText())) table = t; } if (table != null) { table.addIndex(index); } else { // Log error ? } return visitChildren(ctx); }
if (lst.size() < 3) throw new IOException("Invalid file format: " + line); Index i = new Index(lst.get(0).substring(1)); i.setUnique(lst.get(1).indexOf('U') > -1); i.setPrimary(lst.get(1).indexOf('P') > -1); for (int zz = 2; zz < lst.size(); zz++) { i.addField(new IndexField(currTbl.getField(lst.get(zz).substring(1)), lst.get(zz).charAt(0) == 'A'));
public IndexWrapper(ITable table, Index index) { Preconditions.checkNotNull(table); Preconditions.checkNotNull(index); this.table = table; this.index = index; for (IndexField fld : index.getFields()) { fields.add(new FieldWrapper(table, fld.getField())); } }
@Override public Void visitIndexArea(IndexAreaContext ctx) { if (indexes.isEmpty()) return null; indexes.peek().setArea(ctx.val.getText()); return null; }
@Override public Void visitUpdateIndexBP(UpdateIndexBPContext ctx) { String tableName = ctx.table.getText(); String indexName = ctx.index.getText(); Table table = db.getTable(tableName); if (table != null) { Index index = table.getIndex(indexName); if (index != null) { index.setBufferPool(ctx.value.getText()); } } return null; }
@Override public Void visitIndexField(IndexFieldContext ctx) { if (indexes.isEmpty()) return null; // Search for Table object for this index String tableName = ((AddIndexContext) ctx.parent).table.getText(); Table table = null; for (Table t : tables) { if (t.getName().equalsIgnoreCase(tableName)) table = t; } if (table != null) { IndexField idxFld = new IndexField(table.getField(ctx.field.getText()), "ascending".equalsIgnoreCase(ctx.order.getText())); indexes.peek().addField(idxFld); } else { // Log error ? } return null; }
@Override public String getName() { return index.getName(); }
@Override public boolean isPrimary() { return index.isPrimary(); }
@Override public boolean isUnique() { return index.isUnique(); }