PARQUET-1782: Use Switch Statement in AvroRecordConverter (#752)

* PARQUET-1782: Use Switch Statement in AvroRecordConverter

* Changed Datum Class Initialization
diff --git a/parquet-avro/src/main/java/org/apache/parquet/avro/AvroRecordConverter.java b/parquet-avro/src/main/java/org/apache/parquet/avro/AvroRecordConverter.java
index 743d6aa..45504b6 100644
--- a/parquet-avro/src/main/java/org/apache/parquet/avro/AvroRecordConverter.java
+++ b/parquet-avro/src/main/java/org/apache/parquet/avro/AvroRecordConverter.java
@@ -236,6 +236,7 @@
       GenericData model, Class<?> knownClass, ParentValueContainer setter) {
     LogicalType logicalType = schema.getLogicalType();
     Conversion<?> conversion;
+
     if (knownClass != null) {
       conversion = model.getConversionByClass(knownClass, logicalType);
     } else {
@@ -245,58 +246,63 @@
     ParentValueContainer parent = ParentValueContainer
         .getConversionContainer(setter, conversion, schema);
 
-    if (schema.getType().equals(Schema.Type.BOOLEAN)) {
+    switch (schema.getType()) {
+    case BOOLEAN:
       return new AvroConverters.FieldBooleanConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.INT)) {
-      Class<?> datumClass = getDatumClass(conversion, knownClass, schema, model);
-      if (datumClass == null) {
+    case INT:
+      Class<?> intDatumClass = getDatumClass(conversion, knownClass, schema, model);
+      if (intDatumClass == null) {
         return new AvroConverters.FieldIntegerConverter(parent);
-      } else if (datumClass == byte.class || datumClass == Byte.class) {
+      }
+      if (intDatumClass == byte.class || intDatumClass == Byte.class) {
         return new AvroConverters.FieldByteConverter(parent);
-      } else if (datumClass == short.class || datumClass == Short.class) {
-        return new AvroConverters.FieldShortConverter(parent);
-      } else if (datumClass == char.class || datumClass == Character.class) {
+      }
+      if (intDatumClass == char.class || intDatumClass == Character.class) {
         return new AvroConverters.FieldCharConverter(parent);
       }
+      if (intDatumClass == short.class || intDatumClass == Short.class) {
+        return new AvroConverters.FieldShortConverter(parent);
+      }
       return new AvroConverters.FieldIntegerConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.LONG)) {
+    case LONG:
       return new AvroConverters.FieldLongConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.FLOAT)) {
+    case FLOAT:
       return new AvroConverters.FieldFloatConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.DOUBLE)) {
+    case DOUBLE:
       return new AvroConverters.FieldDoubleConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.BYTES)) {
-      Class<?> datumClass = getDatumClass(conversion, knownClass, schema, model);
-      if (datumClass == null) {
+    case BYTES:
+      Class<?> byteDatumClass = getDatumClass(conversion, knownClass, schema, model);
+      if (byteDatumClass == null) {
         return new AvroConverters.FieldByteBufferConverter(parent);
-      } else if (datumClass.isArray() && datumClass.getComponentType() == byte.class) {
+      }
+      if (byteDatumClass.isArray() && byteDatumClass.getComponentType() == byte.class) {
         return new AvroConverters.FieldByteArrayConverter(parent);
       }
       return new AvroConverters.FieldByteBufferConverter(parent);
-    } else if (schema.getType().equals(Schema.Type.STRING)) {
+    case STRING:
       return newStringConverter(schema, model, parent);
-    } else if (schema.getType().equals(Schema.Type.RECORD)) {
+    case RECORD:
       return new AvroRecordConverter(parent, type.asGroupType(), schema, model);
-    } else if (schema.getType().equals(Schema.Type.ENUM)) {
+    case ENUM:
       return new AvroConverters.FieldEnumConverter(parent, schema, model);
-    } else if (schema.getType().equals(Schema.Type.ARRAY)) {
-      Class<?> datumClass = getDatumClass(conversion, knownClass, schema, model);
-      if (datumClass != null && datumClass.isArray()) {
-        return new AvroArrayConverter(
-            parent, type.asGroupType(), schema, model, datumClass);
-      } else {
-        return new AvroCollectionConverter(
-            parent, type.asGroupType(), schema, model, datumClass);
+    case ARRAY:
+      Class<?> arrayDatumClass = getDatumClass(conversion, knownClass, schema, model);
+      if (arrayDatumClass != null && arrayDatumClass.isArray()) {
+        return new AvroArrayConverter(parent, type.asGroupType(), schema, model,
+            arrayDatumClass);
       }
-    } else if (schema.getType().equals(Schema.Type.MAP)) {
+      return new AvroCollectionConverter(parent, type.asGroupType(), schema,
+          model, arrayDatumClass);
+    case MAP:
       return new MapConverter(parent, type.asGroupType(), schema, model);
-    } else if (schema.getType().equals(Schema.Type.UNION)) {
+    case UNION:
       return new AvroUnionConverter(parent, type, schema, model);
-    } else if (schema.getType().equals(Schema.Type.FIXED)) {
+    case FIXED:
       return new AvroConverters.FieldFixedConverter(parent, schema, model);
+    default:
+      throw new UnsupportedOperationException(String.format(
+          "Cannot convert Avro type: %s to Parquet type: %s", schema, type));
     }
-    throw new UnsupportedOperationException(String.format(
-        "Cannot convert Avro type: %s to Parquet type: %s", schema, type));
   }
 
   private static Converter newStringConverter(Schema schema, GenericData model,