Search in sources :

Example 1 with AvroConverter

use of org.talend.daikon.avro.converter.AvroConverter in project components by Talend.

the class SalesforceAvroRegistryTest method testStringToDateConverter.

@Test
public void testStringToDateConverter() throws ParseException {
    Schema schema = // 
    SchemaBuilder.builder().record("Schema").fields().name("Field_A").type(AvroUtils._date()).noDefault().endRecord();
    schema.getField("Field_A").addProp(SchemaConstants.TALEND_COLUMN_PATTERN, "yyyy-MM-dd");
    AvroConverter<String, ?> converter = sRegistry.getConverterFromString(schema.getField("Field_A"));
    assertNotNull(converter);
    assertEquals(String.class, converter.getDatumClass());
    assertEquals(schema.getField("Field_A").schema(), converter.getSchema());
    Object value = converter.convertToAvro("2017-06-15");
    assertNotNull(value);
    assertThat(value, instanceOf(Long.class));
    assertThat((Long) value, equalTo(Long.valueOf(dateFormat.parse("2017-06-15").getTime())));
    assertNull(converter.convertToAvro(""));
    assertNull(converter.convertToAvro(null));
    Date date = dateFormat.parse("2017-06-15");
    String sValue = ((AvroConverter<String, Long>) converter).convertToDatum(Long.valueOf(date.getTime()));
    assertNotNull(sValue);
    assertEquals(dateFormat.format(date), sValue);
    assertNull(converter.convertToDatum(null));
}
Also used : Schema(org.apache.avro.Schema) Date(java.util.Date) AvroConverter(org.talend.daikon.avro.converter.AvroConverter) Test(org.junit.Test)

Example 2 with AvroConverter

use of org.talend.daikon.avro.converter.AvroConverter in project components by Talend.

the class BigQueryAvroRegistryTest method testGetConverter_long.

@Test
public void testGetConverter_long() {
    AvroConverter converter = BigQueryAvroRegistry.get().getConverter(Schema.create(Schema.Type.LONG));
    assertThat(converter.convertToAvro(123L), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro(123), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro((short) 123), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro((byte) 123), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro(123d), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro(123f), Matchers.<Object>is(123L));
    assertThat(converter.convertToAvro(null), nullValue());
}
Also used : AvroConverter(org.talend.daikon.avro.converter.AvroConverter) Test(org.junit.Test)

Example 3 with AvroConverter

use of org.talend.daikon.avro.converter.AvroConverter in project components by Talend.

the class ValueConverterTest method testIdentityConverters.

@Test
public void testIdentityConverters() throws Exception {
    NsObjectInputTransducer transducer = new NsObjectInputTransducer(clientService, schema, typeDesc.getTypeName());
    FieldDesc fieldDesc = typeDesc.getField("isInactive");
    AvroConverter<Boolean, Boolean> converter1 = (AvroConverter<Boolean, Boolean>) transducer.getValueConverter(fieldDesc);
    assertEquals(Boolean.TRUE, converter1.convertToAvro(Boolean.TRUE));
    assertEquals(Boolean.FALSE, converter1.convertToDatum(Boolean.FALSE));
    fieldDesc = typeDesc.getField("openingBalance");
    AvroConverter<Double, Double> converter2 = (AvroConverter<Double, Double>) transducer.getValueConverter(fieldDesc);
    assertEquals(Double.valueOf(12345.6789), converter2.convertToAvro(Double.valueOf(12345.6789)));
    assertEquals(Double.valueOf(98765.4321), converter2.convertToDatum(Double.valueOf(98765.4321)));
}
Also used : NsObjectInputTransducer(org.talend.components.netsuite.input.NsObjectInputTransducer) AvroConverter(org.talend.daikon.avro.converter.AvroConverter) FieldDesc(org.talend.components.netsuite.client.model.FieldDesc) Test(org.junit.Test)

Example 4 with AvroConverter

use of org.talend.daikon.avro.converter.AvroConverter in project components by Talend.

the class ValueConverterTest method testEnumConverter.

@Test
public void testEnumConverter() throws Exception {
    NsObjectInputTransducer transducer = new NsObjectInputTransducer(clientService, schema, typeDesc.getTypeName());
    FieldDesc fieldDesc = typeDesc.getField("acctType");
    AvroConverter<Enum<AccountType>, String> converter1 = (AvroConverter<Enum<AccountType>, String>) transducer.getValueConverter(fieldDesc);
    assertEquals(AvroUtils._string(), converter1.getSchema());
    assertEquals(AccountType.class, converter1.getDatumClass());
    assertEquals(AccountType.ACCOUNTS_PAYABLE.value(), converter1.convertToAvro(AccountType.ACCOUNTS_PAYABLE));
    assertEquals(AccountType.ACCOUNTS_PAYABLE, converter1.convertToDatum(AccountType.ACCOUNTS_PAYABLE.value()));
    assertEquals(AccountType.ACCOUNTS_PAYABLE, converter1.convertToDatum(AccountType.ACCOUNTS_PAYABLE.name()));
    fieldDesc = typeDesc.getField("generalRate");
    assertNotNull(fieldDesc);
    AvroConverter<Enum<ConsolidatedRate>, String> converter2 = (AvroConverter<Enum<ConsolidatedRate>, String>) transducer.getValueConverter(fieldDesc);
    assertEquals(ConsolidatedRate.HISTORICAL.value(), converter2.convertToAvro(ConsolidatedRate.HISTORICAL));
    assertEquals(ConsolidatedRate.HISTORICAL, converter2.convertToDatum(ConsolidatedRate.HISTORICAL.value()));
}
Also used : ConsolidatedRate(com.netsuite.webservices.test.lists.accounting.types.ConsolidatedRate) NsObjectInputTransducer(org.talend.components.netsuite.input.NsObjectInputTransducer) AccountType(com.netsuite.webservices.test.lists.accounting.types.AccountType) AvroConverter(org.talend.daikon.avro.converter.AvroConverter) FieldDesc(org.talend.components.netsuite.client.model.FieldDesc) Test(org.junit.Test)

Example 5 with AvroConverter

use of org.talend.daikon.avro.converter.AvroConverter in project components by Talend.

the class ValueConverterTest method testXMLGregorianCalendarConverter.

@Test
public void testXMLGregorianCalendarConverter() throws Exception {
    DateTimeZone tz1 = DateTimeZone.getDefault();
    MutableDateTime dateTime1 = new MutableDateTime(tz1);
    dateTime1.setDate(System.currentTimeMillis());
    Long controlValue1 = dateTime1.getMillis();
    XMLGregorianCalendar xmlCalendar1 = datatypeFactory.newXMLGregorianCalendar();
    xmlCalendar1.setYear(dateTime1.getYear());
    xmlCalendar1.setMonth(dateTime1.getMonthOfYear());
    xmlCalendar1.setDay(dateTime1.getDayOfMonth());
    xmlCalendar1.setHour(dateTime1.getHourOfDay());
    xmlCalendar1.setMinute(dateTime1.getMinuteOfHour());
    xmlCalendar1.setSecond(dateTime1.getSecondOfMinute());
    xmlCalendar1.setMillisecond(dateTime1.getMillisOfSecond());
    xmlCalendar1.setTimezone(tz1.toTimeZone().getOffset(dateTime1.getMillis()) / 60000);
    FieldDesc fieldInfo = typeDesc.getField("tranDate");
    NsObjectInputTransducer transducer = new NsObjectInputTransducer(clientService, schema, typeDesc.getTypeName());
    AvroConverter<XMLGregorianCalendar, Long> converter1 = (AvroConverter<XMLGregorianCalendar, Long>) transducer.getValueConverter(fieldInfo);
    assertEquals(AvroUtils._logicalTimestamp(), converter1.getSchema());
    assertEquals(XMLGregorianCalendar.class, converter1.getDatumClass());
    assertEquals(controlValue1, converter1.convertToAvro(xmlCalendar1));
    assertEquals(xmlCalendar1, converter1.convertToDatum(controlValue1));
    AvroConverter<XMLGregorianCalendar, Object> converter2 = (AvroConverter<XMLGregorianCalendar, Object>) transducer.getValueConverter(fieldInfo);
    assertEquals(xmlCalendar1, converter2.convertToDatum(new Date(controlValue1.longValue())));
    assertNull(converter1.convertToAvro(null));
}
Also used : XMLGregorianCalendar(javax.xml.datatype.XMLGregorianCalendar) MutableDateTime(org.joda.time.MutableDateTime) NsObjectInputTransducer(org.talend.components.netsuite.input.NsObjectInputTransducer) DateTimeZone(org.joda.time.DateTimeZone) AvroConverter(org.talend.daikon.avro.converter.AvroConverter) Date(java.util.Date) FieldDesc(org.talend.components.netsuite.client.model.FieldDesc) Test(org.junit.Test)

Aggregations

AvroConverter (org.talend.daikon.avro.converter.AvroConverter)14 Test (org.junit.Test)11 NsObjectInputTransducer (org.talend.components.netsuite.input.NsObjectInputTransducer)7 FieldDesc (org.talend.components.netsuite.client.model.FieldDesc)6 RecordRef (com.netsuite.webservices.test.platform.core.RecordRef)3 ObjectNode (com.fasterxml.jackson.databind.node.ObjectNode)2 BooleanCustomFieldRef (com.netsuite.webservices.test.platform.core.BooleanCustomFieldRef)2 CustomFieldList (com.netsuite.webservices.test.platform.core.CustomFieldList)2 StringCustomFieldRef (com.netsuite.webservices.test.platform.core.StringCustomFieldRef)2 Date (java.util.Date)2 Schema (org.apache.avro.Schema)2 JsonNode (com.fasterxml.jackson.databind.JsonNode)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ArrayNode (com.fasterxml.jackson.databind.node.ArrayNode)1 Account (com.netsuite.webservices.test.lists.accounting.Account)1 AccountType (com.netsuite.webservices.test.lists.accounting.types.AccountType)1 ConsolidatedRate (com.netsuite.webservices.test.lists.accounting.types.ConsolidatedRate)1 RecordRefList (com.netsuite.webservices.test.platform.core.RecordRefList)1 BigDecimal (java.math.BigDecimal)1 ArrayList (java.util.ArrayList)1