public TableWrapper(IDatabase db, Table t) { this.db = db; this.table = t; for (Field fld : table.getFields()) { IField iFld = new FieldWrapper(this, fld); fields.add(iFld); sortedFields.add(iFld); } for (Index idx : table.getIndexes()) { IIndex iIdx = new IndexWrapper(this, idx); indexes.add(iIdx); } }
@Override public String getName() { return table.getName(); }
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(); } } } }
int numTriggers = 0; for (Table tab : desc.getTables()) { numFlds += tab.getFields().size(); numIdx += tab.getIndexes().size(); numTriggers += tab.getTriggers().size(); for (Field f : tab.getFields()) { numTriggers += f.getTriggers().size();
db.addSequence(new Sequence(line.substring(1))); } else if (line.startsWith("T")) { currTbl = new Table(line.substring(1)); db.addTable(currTbl); } else if (line.startsWith("F")) { currTbl.addField(f); } else if (line.startsWith("I")) { if (currTbl == null) 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')); currTbl.addIndex(i);
@Override public Void visitAddTable(AddTableContext ctx) { Table table = new Table(ctx.table.getText()); table.setFirstLine(ctx.getStart().getLine()); table.setLastLine(ctx.getStop().getLine()); tables.push(table); db.addTable(table); return visitChildren(ctx); }
@Override public Void visitAddField(AddFieldContext ctx) { Field field = new Field(ctx.field.getText(), ctx.dataType.getText()); field.setFirstLine(ctx.getStart().getLine()); field.setLastLine(ctx.getStop().getLine()); fields.push(field); // 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.addField(field); } else { // Log error } return visitChildren(ctx); }
@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 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); }
@Override public Void visitTableTrigger(TableTriggerContext ctx) { if (tables.isEmpty()) return null; Trigger trigger = new Trigger(TriggerType.getTriggerType(ctx.type.getText()), ctx.triggerProcedure.getText()); if (ctx.crc != null) { trigger.setCrc(ctx.crc.getText()); } if (ctx.noOverride != null) trigger.setNoOverride(true); tables.peek().addTrigger(trigger); 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; }
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(); } } } }
db.addSequence(new Sequence(line.substring(1))); } else if (line.startsWith("T")) { currTbl = new Table(line.substring(1)); db.addTable(currTbl); } else if (line.startsWith("F")) { currTbl.addField(f); } else if (line.startsWith("I")) { if (currTbl == null) 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')); currTbl.addIndex(i);
@Override public Void visitAddTable(AddTableContext ctx) { Table table = new Table(ctx.table.getText()); table.setFirstLine(ctx.getStart().getLine()); table.setLastLine(ctx.getStop().getLine()); tables.push(table); db.addTable(table); return visitChildren(ctx); }
@Override public Void visitAddField(AddFieldContext ctx) { Field field = new Field(ctx.field.getText(), ctx.dataType.getText()); field.setFirstLine(ctx.getStart().getLine()); field.setLastLine(ctx.getStop().getLine()); fields.push(field); // 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.addField(field); } else { // Log error } return visitChildren(ctx); }
@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 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); }
@Override public Void visitTableTrigger(TableTriggerContext ctx) { if (tables.isEmpty()) return null; Trigger trigger = new Trigger(TriggerType.getTriggerType(ctx.type.getText()), ctx.triggerProcedure.getText()); if (ctx.crc != null) { trigger.setCrc(ctx.crc.getText()); } if (ctx.noOverride != null) trigger.setNoOverride(true); tables.peek().addTrigger(trigger); 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; }
public TableWrapper(IDatabase db, Table t) { this.db = db; this.table = t; for (Field fld : table.getFields()) { IField iFld = new FieldWrapper(this, fld); fields.add(iFld); sortedFields.add(iFld); } for (Index idx : table.getIndexes()) { IIndex iIdx = new IndexWrapper(this, idx); indexes.add(iIdx); } }