[NO ISSUE][COMP] Minor refactoring in QueryTranslator

- user model changes: no
- storage format changes: no
- interface changes: no

Details:
- Replace QueryTranslator method
  validateExternalDatasetRequirements()
  with createExternalDatasetProperties()

Change-Id: Ifbf54dbcd560a3c987f6c42a387d1fa0f0e41e0a
Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/5566
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Dmitry Lychagin <dmitry.lychagin@couchbase.com>
Reviewed-by: Hussain Towaileb <hussainht@gmail.com>
diff --git a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
index a440ae4..81dce6d 100644
--- a/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
+++ b/asterixdb/asterix-app/src/main/java/org/apache/asterix/app/translator/QueryTranslator.java
@@ -157,8 +157,6 @@
 import org.apache.asterix.metadata.utils.MetadataConstants;
 import org.apache.asterix.metadata.utils.MetadataLockUtil;
 import org.apache.asterix.metadata.utils.MetadataUtil;
-import org.apache.asterix.object.base.AdmObjectNode;
-import org.apache.asterix.object.base.AdmStringNode;
 import org.apache.asterix.om.base.IAObject;
 import org.apache.asterix.om.types.ARecordType;
 import org.apache.asterix.om.types.ATypeTag;
@@ -714,18 +712,10 @@
                             keySourceIndicators, partitioningTypes, autogenerated, filterField);
                     break;
                 case EXTERNAL:
-                    validateExternalDatasetRequirements(appCtx, metadataProvider, mdTxnCtx, dd);
-                    String adapter = ((ExternalDetailsDecl) dd.getDatasetDetailsDecl()).getAdapter();
-                    Map<String, String> properties = ((ExternalDetailsDecl) dd.getDatasetDetailsDecl()).getProperties();
-
-                    // Add the withObjectNode items to the external dataset properties
-                    if (!dd.getWithObjectNode().isEmpty()) {
-                        AdmObjectNode withObjectNode = dd.getWithObjectNode();
-                        dd.getWithObjectNode().getFieldNames().iterator().forEachRemaining(fieldName -> properties
-                                .put(fieldName, ((AdmStringNode) withObjectNode.get(fieldName)).get()));
-                    }
-                    datasetDetails =
-                            new ExternalDatasetDetails(adapter, properties, new Date(), TransactionState.COMMIT);
+                    ExternalDetailsDecl externalDetails = (ExternalDetailsDecl) dd.getDatasetDetailsDecl();
+                    Map<String, String> properties = createExternalDatasetProperties(dd, metadataProvider, mdTxnCtx);
+                    datasetDetails = new ExternalDatasetDetails(externalDetails.getAdapter(), properties, new Date(),
+                            TransactionState.COMMIT);
                     break;
                 default:
                     throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc,
@@ -814,6 +804,12 @@
         }
     }
 
+    protected Map<String, String> createExternalDatasetProperties(DatasetDecl dd, MetadataProvider metadataProvider,
+            MetadataTransactionContext mdTxnCtx) throws AlgebricksException {
+        ExternalDetailsDecl externalDetails = (ExternalDetailsDecl) dd.getDatasetDetailsDecl();
+        return externalDetails.getProperties();
+    }
+
     protected static void validateIfResourceIsActiveInFeed(ICcApplicationContext appCtx, Dataset dataset,
             SourceLocation sourceLoc) throws CompilationException {
         ActiveNotificationHandler activeEventHandler =
@@ -3163,17 +3159,4 @@
             throw new RuntimeDataException(ErrorCode.REQUEST_CANCELLED, clientRequest.getId());
         }
     }
-
-    /**
-     * Performs any required validation before creating an external dataset
-     *
-     * @param appContext {@link ICcApplicationContext} context
-     * @param metadataProvider {@link MetadataProvider} metadata provider
-     * @param mdTxnCtx {@link MetadataTransactionContext} metadata transaction context
-     * @param datasetDecl {@link DatasetDecl} dataset declaration statement
-     */
-    protected void validateExternalDatasetRequirements(ICcApplicationContext appContext,
-            MetadataProvider metadataProvider, MetadataTransactionContext mdTxnCtx, DatasetDecl datasetDecl)
-            throws Exception {
-    }
 }