diff --git a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/metadata/MetadataToolAvroHelper.java b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/metadata/MetadataToolAvroHelper.java index b12946289c..f8cec8feb7 100644 --- a/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/metadata/MetadataToolAvroHelper.java +++ b/main/plugins/org.talend.core.runtime/src/main/java/org/talend/core/model/metadata/MetadataToolAvroHelper.java @@ -135,17 +135,29 @@ public final class MetadataToolAvroHelper { */ private static FieldAssembler convertToAvro(FieldAssembler fa, org.talend.core.model.metadata.builder.connection.MetadataColumn in) { - ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class); - String label = in.getLabel(); - if (label != null && coreService != null) { - if (coreService.isKeyword(label)) { - label = "_" + label; //$NON-NLS-1$ + + String name = null; + for (TaggedValue tv : in.getTaggedValue()) { + String additionalTag = tv.getTag(); + if (DiSchemaConstants.AVRO_TECHNICAL_KEY.equals(additionalTag)) { + name = tv.getValue(); + break; } } - - FieldBuilder fb = fa.name(label); + String label = in.getLabel(); + if (name == null) { + name = label; + ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class); + if (label != null && coreService != null) { + if (coreService.isKeyword(label)) { + name = "_" + label; //$NON-NLS-1$ + } + } + } + + FieldBuilder fb = fa.name(name); copyColumnProperties(fb, in); - + fb.prop(DiSchemaConstants.TALEND6_LABEL, label); Object defaultValue = null; @@ -160,22 +172,22 @@ public final class MetadataToolAvroHelper { // Numeric types. if (JavaTypesManager.LONG.getId().equals(tt)) { type = AvroUtils._long(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Long.parseLong(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Long.parseLong(defaultValue.toString()); } else if (JavaTypesManager.INTEGER.getId().equals(tt)) { type = AvroUtils._int(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Integer.parseInt(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Integer.parseInt(defaultValue.toString()); } else if (JavaTypesManager.SHORT.getId().equals(tt)) { type = AvroUtils._short(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Integer.parseInt(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Integer.parseInt(defaultValue.toString()); } else if (JavaTypesManager.BYTE.getId().equals(tt)) { type = AvroUtils._byte(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Integer.parseInt(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Integer.parseInt(defaultValue.toString()); } else if (JavaTypesManager.DOUBLE.getId().equals(tt)) { type = AvroUtils._double(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Double.parseDouble(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Double.parseDouble(defaultValue.toString()); } else if (JavaTypesManager.FLOAT.getId().equals(tt)) { type = AvroUtils._float(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Float.parseFloat(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Float.parseFloat(defaultValue.toString()); } else if (JavaTypesManager.BIGDECIMAL.getId().equals(tt)) { // decimal(precision, scale) == column length and precision? type = AvroUtils._decimal(); @@ -184,18 +196,18 @@ public final class MetadataToolAvroHelper { // Other primitive types that map directly to Avro. else if (JavaTypesManager.BOOLEAN.getId().equals(tt)) { type = AvroUtils._boolean(); - defaultValue = StringUtils.isEmpty((String)defaultValue) ? null : Boolean.parseBoolean(defaultValue.toString()); + defaultValue = StringUtils.isEmpty((String) defaultValue) ? null : Boolean.parseBoolean(defaultValue.toString()); } else if (JavaTypesManager.BYTE_ARRAY.getId().equals(tt)) { type = AvroUtils._bytes(); } else if (JavaTypesManager.DATE.getId().equals(tt)) { - if (matchTag(in, DiSchemaConstants.TALEND6_COLUMN_DATE_DATE)) { - type = AvroUtils._logicalDate(); - } else if (matchTag(in, DiSchemaConstants.TALEND6_COLUMN_DATE_TIMESTAMP)) { - type = AvroUtils._logicalTimestamp(); - } else { - // FIXME - this one should go away - type = AvroUtils._date(); - } + if (matchTag(in, DiSchemaConstants.TALEND6_COLUMN_DATE_DATE)) { + type = AvroUtils._logicalDate(); + } else if (matchTag(in, DiSchemaConstants.TALEND6_COLUMN_DATE_TIMESTAMP)) { + type = AvroUtils._logicalTimestamp(); + } else { + // FIXME - this one should go away + type = AvroUtils._date(); + } } // String-ish types. else if (JavaTypesManager.STRING.getId().equals(tt) || JavaTypesManager.FILE.getId().equals(tt) @@ -240,7 +252,7 @@ public final class MetadataToolAvroHelper { private static boolean matchTag(org.talend.core.model.metadata.builder.connection.MetadataColumn in, String value) { for (TaggedValue tv : in.getTaggedValue()) { if (tv.getTag().equals(value)) { - return true; + return true; } } return false; @@ -265,8 +277,8 @@ public final class MetadataToolAvroHelper { } else { String additionalTag = tv.getTag(); if (tv.getValue() != null) { - schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_DYNAMIC_ADDITIONAL_PROPERTIES - + additionalTag, tv.getValue()); + schema = AvroUtils.setProperty(schema, + DiSchemaConstants.TALEND6_DYNAMIC_ADDITIONAL_PROPERTIES + additionalTag, tv.getValue()); } } } @@ -286,8 +298,7 @@ public final class MetadataToolAvroHelper { TalendQuoteUtils.removeQuotesIfExist(in.getPattern())); } if (in.getLength() >= 0) { - schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_LENGTH, - String.valueOf((int) in.getLength())); + schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_LENGTH, String.valueOf((int) in.getLength())); } if (in.getOriginalLength() >= 0) { schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_ORIGINAL_LENGTH, @@ -297,8 +308,7 @@ public final class MetadataToolAvroHelper { schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_IS_NULLABLE, "true"); //$NON-NLS-1$ } if (in.getPrecision() >= 0) { - schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_PRECISION, - String.valueOf(in.getPrecision())); + schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_PRECISION, String.valueOf(in.getPrecision())); } if (in.getScale() >= 0) { schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_SCALE, String.valueOf(in.getScale())); @@ -314,13 +324,11 @@ public final class MetadataToolAvroHelper { schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_RELATED_ENTITY, in.getRelatedEntity()); } if (in.getRelationshipType() != null) { - schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_RELATIONSHIP_TYPE, - in.getRelationshipType()); + schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_RELATIONSHIP_TYPE, in.getRelationshipType()); } return schema; } - /** * Copy all of the information from the IMetadataColumn in the form of key/value properties into an Avro object. * @@ -344,9 +352,9 @@ public final class MetadataToolAvroHelper { String additionalTag = tv.getTag(); if (DiSchemaConstants.TALEND6_IS_READ_ONLY.equals(additionalTag)) { builder.prop(DiSchemaConstants.TALEND6_IS_READ_ONLY, tv.getValue()); - }else if(DiSchemaConstants.AVRO_TECHNICAL_KEY.equals(additionalTag)){ + } else if (DiSchemaConstants.AVRO_TECHNICAL_KEY.equals(additionalTag)) { builder.prop(DiSchemaConstants.AVRO_TECHNICAL_KEY, tv.getValue()); - }else if (tv.getValue() != null) { + } else if (tv.getValue() != null) { builder.prop(DiSchemaConstants.TALEND6_ADDITIONAL_PROPERTIES + additionalTag, tv.getValue()); } } @@ -532,27 +540,28 @@ public final class MetadataToolAvroHelper { col.setTalendType("id_Dynamic"); //$NON-NLS-1$ return col; } - - public static org.talend.core.model.metadata.builder.connection.MetadataColumn convertFromAvro(Schema.Field field, MetadataTable metadataTable) { + + public static org.talend.core.model.metadata.builder.connection.MetadataColumn convertFromAvro(Schema.Field field, + MetadataTable metadataTable) { org.talend.core.model.metadata.builder.connection.MetadataColumn col = convertFromAvro(field); - if(metadataTable == null){ + if (metadataTable == null) { return col; } List labels = new ArrayList(); - for(org.talend.core.model.metadata.builder.connection.MetadataColumn column:metadataTable.getColumns()){ + for (org.talend.core.model.metadata.builder.connection.MetadataColumn column : metadataTable.getColumns()) { labels.add(column.getLabel()); } String label = col.getLabel(); ICoreService coreService = (ICoreService) GlobalServiceRegister.getDefault().getService(ICoreService.class); - if(coreService != null && coreService.isKeyword(label)){ - label = "_"+label; + if (coreService != null && coreService.isKeyword(label)) { + label = "_" + label; } label = MetadataToolHelper.validateColumnName(label, metadataTable.getColumns().size(), labels); col.setLabel(label); - + TaggedValue tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, field.name()); col.getTaggedValue().add(tv); - + return col; } @@ -591,21 +600,21 @@ public final class MetadataToolAvroHelper { col.setTalendType(JavaTypesManager.FLOAT.getId()); } else if (AvroUtils.isSameType(nonnullable, AvroUtils._int())) { if (logicalType == LogicalTypes.date()) { - col.setTalendType(JavaTypesManager.DATE.getId()); + col.setTalendType(JavaTypesManager.DATE.getId()); TaggedValue tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.TALEND6_COLUMN_DATE_DATE, "true"); col.getTaggedValue().add(tv); - } else { - // The logical type time maps to this as well - col.setTalendType(JavaTypesManager.INTEGER.getId()); - } + } else { + // The logical type time maps to this as well + col.setTalendType(JavaTypesManager.INTEGER.getId()); + } } else if (AvroUtils.isSameType(nonnullable, AvroUtils._long())) { if (logicalType == LogicalTypes.timestampMillis()) { - col.setTalendType(JavaTypesManager.DATE.getId()); + col.setTalendType(JavaTypesManager.DATE.getId()); TaggedValue tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.TALEND6_COLUMN_DATE_TIMESTAMP, "true"); col.getTaggedValue().add(tv); - } else { - col.setTalendType(JavaTypesManager.LONG.getId()); - } + } else { + col.setTalendType(JavaTypesManager.LONG.getId()); + } } else if (AvroUtils.isSameType(nonnullable, AvroUtils._short())) { col.setTalendType(JavaTypesManager.SHORT.getId()); } else if (AvroUtils.isSameType(nonnullable, AvroUtils._string())) { @@ -728,7 +737,7 @@ public final class MetadataToolAvroHelper { // IMetadataColumn dynColumn = null; // int i = 0; // for (IMetadataColumn column : in.getListColumns()) { - // if ("id_Dynamic".equals(column.getTalendType())) { //$NON-NLS-1$ + // if ("id_Dynamic".equals(column.getTalendType())) { //$NON-NLS-1$ // dynamicPosition = i; // dynColumn = column; // } else { @@ -774,7 +783,7 @@ public final class MetadataToolAvroHelper { // builder.prop(DiSchemaConstants.TALEND6_LABEL, in.getLabel()); // } // if (in.isReadOnly()) { - // builder.prop(DiSchemaConstants.TALEND6_IS_READ_ONLY, "true"); //$NON-NLS-1$ + // builder.prop(DiSchemaConstants.TALEND6_IS_READ_ONLY, "true"); //$NON-NLS-1$ // } // // // Table-specific properties. @@ -851,7 +860,7 @@ public final class MetadataToolAvroHelper { // } // // Can this occur? // if (type == null) { - // throw new UnsupportedOperationException("Unrecognized type " + tt); //$NON-NLS-1$ + // throw new UnsupportedOperationException("Unrecognized type " + tt); //$NON-NLS-1$ // } // // type = in.isNullable() ? AvroUtils.wrapAsNullable(type) : type; @@ -878,7 +887,7 @@ public final class MetadataToolAvroHelper { // builder.prop(DiSchemaConstants.TALEND6_LABEL, in.getLabel()); // } // if (in.isReadOnly()) { - // builder.prop(DiSchemaConstants.TALEND6_IS_READ_ONLY, "true"); //$NON-NLS-1$ + // builder.prop(DiSchemaConstants.TALEND6_IS_READ_ONLY, "true"); //$NON-NLS-1$ // } // // no such support for IMetadataColumn // // @@ -891,7 +900,7 @@ public final class MetadataToolAvroHelper { // // // Column-specific properties. // if (in.isKey()) { - // builder.prop(DiSchemaConstants.TALEND6_COLUMN_IS_KEY, "true"); //$NON-NLS-1$ + // builder.prop(DiSchemaConstants.TALEND6_COLUMN_IS_KEY, "true"); //$NON-NLS-1$ // } // if (in.getType() != null) { // builder.prop(DiSchemaConstants.TALEND6_COLUMN_SOURCE_TYPE, in.getType()); @@ -910,7 +919,7 @@ public final class MetadataToolAvroHelper { // builder.prop(DiSchemaConstants.TALEND6_COLUMN_ORIGINAL_LENGTH, String.valueOf(in.getOriginalLength())); // } // if (in.isNullable()) { - // builder.prop(DiSchemaConstants.TALEND6_COLUMN_IS_NULLABLE, "true"); //$NON-NLS-1$ + // builder.prop(DiSchemaConstants.TALEND6_COLUMN_IS_NULLABLE, "true"); //$NON-NLS-1$ // } // if (in.getPrecision() != null && in.getPrecision() >= 0) { // builder.prop(DiSchemaConstants.TALEND6_COLUMN_PRECISION, String.valueOf(in.getPrecision())); @@ -943,12 +952,12 @@ public final class MetadataToolAvroHelper { // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_DYNAMIC_COLUMN_NAME, in.getLabel()); // } // if (in.isReadOnly()) { - // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_DYNAMIC_IS_READ_ONLY, "true"); //$NON-NLS-1$ + // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_DYNAMIC_IS_READ_ONLY, "true"); //$NON-NLS-1$ // } // // // Column-specific properties. // if (in.isKey()) { - // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_IS_KEY, "true"); //$NON-NLS-1$ + // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_IS_KEY, "true"); //$NON-NLS-1$ // } // if (in.getType() != null) { // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_SOURCE_TYPE, in.getType()); @@ -969,7 +978,7 @@ public final class MetadataToolAvroHelper { // String.valueOf(in.getOriginalLength())); // } // if (in.isNullable()) { - // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_IS_NULLABLE, "true"); //$NON-NLS-1$ + // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_IS_NULLABLE, "true"); //$NON-NLS-1$ // } // if (in.getPrecision() >= 0) { // schema = AvroUtils.setProperty(schema, DiSchemaConstants.TALEND6_COLUMN_PRECISION, @@ -993,5 +1002,5 @@ public final class MetadataToolAvroHelper { // } // return schema; // } - + } diff --git a/test/plugins/org.talend.core.runtime.test/src/org/talend/core/model/metadata/MetadataToolAvroHelperTest.java b/test/plugins/org.talend.core.runtime.test/src/org/talend/core/model/metadata/MetadataToolAvroHelperTest.java index 9dee72b3c2..ed28c35b1b 100644 --- a/test/plugins/org.talend.core.runtime.test/src/org/talend/core/model/metadata/MetadataToolAvroHelperTest.java +++ b/test/plugins/org.talend.core.runtime.test/src/org/talend/core/model/metadata/MetadataToolAvroHelperTest.java @@ -192,7 +192,7 @@ public class MetadataToolAvroHelperTest { assertEquals(map.size() + 1, table.getColumns().size()); int i = 0; for (String talendType : map.keySet()) { - assertThat(table.getColumns().get(i).getLabel(), is(talendType)); + assertThat(table.getColumns().get(i).getLabel(), is(talendType.replace('[', '_').replace(']', '_'))); assertThat(table.getColumns().get(i).getTalendType(), is(talendType)); assertThat(table.getColumns().get(i).getPattern(), is("")); //$NON-NLS-1$ assertThat(table.getColumns().get(i).getLength(), is(-1L)); @@ -362,10 +362,8 @@ public class MetadataToolAvroHelperTest { creatMetadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); creatMetadataColumn.setId("222222"); - creatMetadataColumn.setLabel("A"); - creatMetadataColumn.setName("A"); - tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "A"); - creatMetadataColumn.getTaggedValue().add(tv); + creatMetadataColumn.setLabel("_long"); + creatMetadataColumn.setName("long"); creatMetadataColumn.setTalendType("id_String"); metadataTable.getColumns().add(creatMetadataColumn); @@ -380,9 +378,9 @@ public class MetadataToolAvroHelperTest { creatMetadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); creatMetadataColumn.setId("444444"); - creatMetadataColumn.setLabel("_234"); + creatMetadataColumn.setLabel("1234"); creatMetadataColumn.setName("1234"); - tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "1234"); + tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "_234"); creatMetadataColumn.getTaggedValue().add(tv); creatMetadataColumn.setTalendType("id_String"); metadataTable.getColumns().add(creatMetadataColumn); @@ -391,26 +389,22 @@ public class MetadataToolAvroHelperTest { creatMetadataColumn.setId("555555"); creatMetadataColumn.setLabel("中文"); creatMetadataColumn.setName("中文"); - tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "中文"); + tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "Column4"); creatMetadataColumn.getTaggedValue().add(tv); creatMetadataColumn.setTalendType("id_String"); metadataTable.getColumns().add(creatMetadataColumn); creatMetadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); creatMetadataColumn.setId("666666"); - creatMetadataColumn.setLabel(MetadataToolHelper.validateColumnName("TEST", 0)); - creatMetadataColumn.setName("TEST"); - tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "TEST"); - creatMetadataColumn.getTaggedValue().add(tv); + creatMetadataColumn.setLabel("Column5"); + creatMetadataColumn.setName("中文"); creatMetadataColumn.setTalendType("id_String"); metadataTable.getColumns().add(creatMetadataColumn); creatMetadataColumn = ConnectionFactory.eINSTANCE.createMetadataColumn(); creatMetadataColumn.setId("777777"); - creatMetadataColumn.setLabel("TEST1"); - creatMetadataColumn.setName("TEST"); - tv = TaggedValueHelper.createTaggedValue(DiSchemaConstants.AVRO_TECHNICAL_KEY, "TEST1"); - creatMetadataColumn.getTaggedValue().add(tv); + creatMetadataColumn.setLabel("英文"); + creatMetadataColumn.setName("英文"); creatMetadataColumn.setTalendType("id_String"); metadataTable.getColumns().add(creatMetadataColumn); @@ -418,27 +412,27 @@ public class MetadataToolAvroHelperTest { coreUIPluginNode.putBoolean(IRepositoryPrefConstants.ALLOW_SPECIFIC_CHARACTERS_FOR_SCHEMA_COLUMNS, true); org.apache.avro.Schema schema =MetadataToolAvroHelper.convertToAvro(metadataTable); String s = "{\"type\":\"record\",\"name\":\"table1\",\"fields\":[" - + "{\"name\":\"_long\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"long\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"111111\",\"talend.field.dbColumnName\":\"long\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"A\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"A\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"A\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"222222\",\"talend.field.dbColumnName\":\"A\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"long\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"long\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"111111\",\"talend.field.dbColumnName\":\"long\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"_long\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"222222\",\"talend.field.dbColumnName\":\"long\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}," + "{\"name\":\"B\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"B\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"B\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"333333\",\"talend.field.dbColumnName\":\"B\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"_234\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"1234\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_234\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"444444\",\"talend.field.dbColumnName\":\"1234\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"中文\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"中文\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"中文\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"555555\",\"talend.field.dbColumnName\":\"中文\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"TEST\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"TEST\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"TEST\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"666666\",\"talend.field.dbColumnName\":\"TEST\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"TEST1\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"TEST1\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"TEST1\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"777777\",\"talend.field.dbColumnName\":\"TEST\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}]," + + "{\"name\":\"_234\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"_234\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"1234\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"444444\",\"talend.field.dbColumnName\":\"1234\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"Column4\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"Column4\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"中文\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"555555\",\"talend.field.dbColumnName\":\"中文\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"Column5\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"666666\",\"talend.field.dbColumnName\":\"中文\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"Column5\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"英文\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"777777\",\"talend.field.dbColumnName\":\"英文\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"英文\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}]," + "\"di.table.comment\":\"\",\"di.table.name\":\"table1\",\"di.table.label\":\"table1\"}"; - assertTrue(schema.toString().equals(s)); + assertEquals(s, schema.toString()); coreUIPluginNode.putBoolean(IRepositoryPrefConstants.ALLOW_SPECIFIC_CHARACTERS_FOR_SCHEMA_COLUMNS, false); schema =MetadataToolAvroHelper.convertToAvro(metadataTable); s = "{\"type\":\"record\",\"name\":\"table1\",\"fields\":[" - + "{\"name\":\"_long\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"long\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"111111\",\"talend.field.dbColumnName\":\"long\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"A\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"A\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"A\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"222222\",\"talend.field.dbColumnName\":\"A\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"B\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"B\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"B\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"333333\",\"talend.field.dbColumnName\":\"B\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"_234\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"1234\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_234\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"444444\",\"talend.field.dbColumnName\":\"1234\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"Column4\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"中文\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"Column4\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"555555\",\"talend.field.dbColumnName\":\"中文\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"TEST\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"TEST\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"TEST\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"666666\",\"talend.field.dbColumnName\":\"TEST\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," - + "{\"name\":\"TEST1\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"TEST1\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"TEST1\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"777777\",\"talend.field.dbColumnName\":\"TEST\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}]," - + "\"di.table.comment\":\"\",\"di.table.name\":\"table1\",\"di.table.label\":\"table1\"}"; - assertTrue(schema.toString().equals(s)); + + "{\"name\":\"long\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"long\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"111111\",\"talend.field.dbColumnName\":\"long\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"_long\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"222222\",\"talend.field.dbColumnName\":\"long\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"_long\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"B\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"B\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"B\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"333333\",\"talend.field.dbColumnName\":\"B\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"_234\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"_234\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"1234\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"444444\",\"talend.field.dbColumnName\":\"1234\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"Column4\",\"type\":[\"string\",\"null\"],\"AVRO_TECHNICAL_KEY\":\"Column4\",\"di.column.talendType\":\"id_String\",\"talend.field.pattern\":\"\",\"di.table.label\":\"中文\",\"talend.field.precision\":\"0\",\"di.table.comment\":\"\",\"di.column.id\":\"555555\",\"talend.field.dbColumnName\":\"中文\",\"di.column.isNullable\":\"true\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"Column5\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"666666\",\"talend.field.dbColumnName\":\"中文\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"Column5\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}," + + "{\"name\":\"英文\",\"type\":[\"string\",\"null\"],\"di.table.comment\":\"\",\"di.column.id\":\"777777\",\"talend.field.dbColumnName\":\"英文\",\"di.column.talendType\":\"id_String\",\"di.column.isNullable\":\"true\",\"talend.field.pattern\":\"\",\"talend.field.length\":\"0\",\"di.column.relationshipType\":\"\",\"di.column.originalLength\":\"0\",\"di.table.label\":\"英文\",\"talend.field.precision\":\"0\",\"di.column.relatedEntity\":\"\"}]," + + "\"di.table.comment\":\"\",\"di.table.name\":\"table1\",\"di.table.label\":\"table1\"}"; + assertEquals(s, schema.toString()); } } diff --git a/test/plugins/org.talend.metadata.managment.test/src/org/talend/core/model/metadata/builder/ConvertionHelperTest.java b/test/plugins/org.talend.metadata.managment.test/src/org/talend/core/model/metadata/builder/ConvertionHelperTest.java index 45b66b8842..ea64cb697c 100644 --- a/test/plugins/org.talend.metadata.managment.test/src/org/talend/core/model/metadata/builder/ConvertionHelperTest.java +++ b/test/plugins/org.talend.metadata.managment.test/src/org/talend/core/model/metadata/builder/ConvertionHelperTest.java @@ -12,10 +12,7 @@ // ============================================================================ package org.talend.core.model.metadata.builder; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.Assert.*; import java.util.ArrayList; import java.util.Iterator; @@ -26,6 +23,7 @@ import org.eclipse.core.runtime.preferences.InstanceScope; import org.eclipse.emf.common.util.EList; import org.junit.Test; import org.talend.core.IRepositoryContextService; +import org.talend.core.model.metadata.DiSchemaConstants; import org.talend.core.model.metadata.IMetadataColumn; import org.talend.core.model.metadata.IMetadataConnection; import org.talend.core.model.metadata.IMetadataTable; @@ -212,7 +210,7 @@ public class ConvertionHelperTest { if (columnName.equals(newColumn.getLabel())) { EList taggedValues = newColumn.getTaggedValue(); for (TaggedValue taggedValue : taggedValues) { - if ("AVRO_TECHNICAL_KEY".equals(taggedValue.getTag())) { + if (DiSchemaConstants.TALEND6_IS_READ_ONLY.equals(taggedValue.getTag())) { return Boolean.valueOf(taggedValue.getValue()); } }