/* * for each avro field, search for nested schema. * if field is nested, create tree and recursive * else fetch field as a element */ private static void fetchToTree(Field field, Tree parent) { // System.out.println(" Field: " + field.name()); if (field.schema().getType().toString().equalsIgnoreCase("RECORD")) { // if(!multipleData) // multipleData = true; // Tree child = new Tree(parent); child.setName(field.name()); List<Field> list = field.schema().getFields(); Iterator<Field> it = list.iterator(); while (it.hasNext()) { Field fieldOfField = it.next(); fetchToTree(fieldOfField, child); } parent.getTrees().add(child); } else if (field.schema().getType().getName().equalsIgnoreCase("ARRAY")) { if (field.schema().getElementType().getType().name().toString().equalsIgnoreCase("RECORD")) { if (!multipleData) multipleData = true; Schema arraySchema = field.schema().getElementType(); Tree childParent = new Tree(parent); childParent.setName(field.name()); // employee // parent.getTrees().add(childParent); // Tree child = new Tree(childParent); // child.setName(arraySchema.getName());//employeerecord List<Field> list = arraySchema.getFields(); Iterator<Field> it = list.iterator(); while (it.hasNext()) { Field fieldOfField = it.next(); fetchToTree(fieldOfField, childParent); } parent.getTrees().add(childParent); } } else { Element elementNew = new Element(parent); elementNew.setName(field.name()); parent.getElements().add(elementNew); } // return parent; }
/** @generated NOT */ private void createElement(dataMapper.diagram.tree.model.Element element, TreeNode treeNode) { Element ele = DataMapperFactory.eINSTANCE.createElement(); // ele.setName(element.getCount() + "," + element.getName()); ele.setName(element.getName()); ele.setLevel(element.getCount()); if (element.getSchemaType() != null) { switch (element.getSchemaType()) { case ARRAY: ele.setSchemaDataType(SchemaDataType.ARRAY); break; case BOOLEAN: ele.setSchemaDataType(SchemaDataType.BOOLEAN); break; case BYTES: ele.setSchemaDataType(SchemaDataType.BYTES); break; case DOUBLE: ele.setSchemaDataType(SchemaDataType.DOUBLE); break; case ENUM: ele.setSchemaDataType(SchemaDataType.ENUM); break; case FIXED: ele.setSchemaDataType(SchemaDataType.FIXED); break; case FLOAT: ele.setSchemaDataType(SchemaDataType.FLOAT); break; case INT: ele.setSchemaDataType(SchemaDataType.INT); break; case LONG: ele.setSchemaDataType(SchemaDataType.LONG); break; case MAP: ele.setSchemaDataType(SchemaDataType.MAP); break; case NULL: ele.setSchemaDataType(SchemaDataType.NULL); break; case RECORD: ele.setSchemaDataType(SchemaDataType.RECORD); break; case STRING: ele.setSchemaDataType(SchemaDataType.STRING); break; case UNION: ele.setSchemaDataType(SchemaDataType.UNION); break; default: break; } } treeNode.getElement().add(ele); if (!(element.getAttribute().isEmpty())) { for (dataMapper.diagram.tree.model.Attribute attribute : element.getAttribute()) { createAttribute(attribute, treeNode); } } }