@Override public String getName() { return field.getName(); }
@Override public Void visitFieldDescription(FieldDescriptionContext ctx) { if (fields.isEmpty()) return null; fields.peek().setDescription(ctx.val.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(); } } } }
@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 DataType getDataType() { return DataType.getDataType(field.getDataType().toUpperCase()); }
@Override public Void visitFieldExtent(FieldExtentContext ctx) { if (fields.isEmpty()) return null; fields.peek().setExtent(Integer.parseInt(ctx.val.getText())); return null; }
@Override public Void visitFieldFormat(FieldFormatContext ctx) { if (fields.isEmpty()) return null; fields.peek().setFormat(ctx.val.getText()); return super.visitFieldFormat(ctx); }
@Override public Void visitFieldTrigger(FieldTriggerContext ctx) { if (fields.isEmpty()) return null; if (TriggerType.getTriggerType(ctx.type.getText()) != TriggerType.ASSIGN) { // Value can only be 'ASSIGN', but we just log the problem and return in case of different value LOG.error("'{}' FIELD-TRIGGER found at line {}", ctx.type.getText(), ctx.type.getLine()); return null; } Trigger trigger = new Trigger(TriggerType.ASSIGN, ctx.triggerProcedure.getText()); if (ctx.crc != null) { trigger.setCrc(ctx.crc.getText()); } if (ctx.noOverride != null) trigger.setNoOverride(true); fields.peek().addTrigger(trigger); return null; }
numTriggers += tab.getTriggers().size(); for (Field f : tab.getFields()) { numTriggers += f.getTriggers().size();
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 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 DataType getDataType() { return DataType.getDataType(field.getDataType().toUpperCase()); }
@Override public Void visitFieldExtent(FieldExtentContext ctx) { if (fields.isEmpty()) return null; fields.peek().setExtent(Integer.parseInt(ctx.val.getText())); return null; }
@Override public Void visitFieldFormat(FieldFormatContext ctx) { if (fields.isEmpty()) return null; fields.peek().setFormat(ctx.val.getText()); return super.visitFieldFormat(ctx); }
@Override public Void visitFieldTrigger(FieldTriggerContext ctx) { if (fields.isEmpty()) return null; if (TriggerType.getTriggerType(ctx.type.getText()) != TriggerType.ASSIGN) { // Value can only be 'ASSIGN', but we just log the problem and return in case of different value LOG.error("'{}' FIELD-TRIGGER found at line {}", ctx.type.getText(), ctx.type.getLine()); return null; } Trigger trigger = new Trigger(TriggerType.ASSIGN, ctx.triggerProcedure.getText()); if (ctx.crc != null) { trigger.setCrc(ctx.crc.getText()); } if (ctx.noOverride != null) trigger.setNoOverride(true); fields.peek().addTrigger(trigger); return null; }
@Override public String getName() { return field.getName(); }