diff --git a/client/src/main/java/org/apache/sqoop/client/core/Constants.java b/client/src/main/java/org/apache/sqoop/client/core/Constants.java index b93577c5..cc956d0f 100644 --- a/client/src/main/java/org/apache/sqoop/client/core/Constants.java +++ b/client/src/main/java/org/apache/sqoop/client/core/Constants.java @@ -347,6 +347,9 @@ public class Constants { public static final String RES_FORMDISPLAYER_INPUT_SENSITIVE = "formdisplayer.input_sensitive"; + public static final String RES_FORMDISPLAYER_FORM_WARNING = + "formdisplayer.warning_message"; + private Constants() { // Instantiation is prohibited } diff --git a/client/src/main/java/org/apache/sqoop/client/shell/CreateConnectionFunction.java b/client/src/main/java/org/apache/sqoop/client/shell/CreateConnectionFunction.java index 5bf9aaa2..04238ee6 100644 --- a/client/src/main/java/org/apache/sqoop/client/shell/CreateConnectionFunction.java +++ b/client/src/main/java/org/apache/sqoop/client/shell/CreateConnectionFunction.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.sqoop.client.core.ClientError; import org.apache.sqoop.client.core.Constants; +import org.apache.sqoop.client.utils.FormDisplayer; import org.apache.sqoop.common.SqoopException; import org.apache.sqoop.model.MConnection; import org.apache.sqoop.validation.Status; @@ -86,7 +87,7 @@ private void createConnection(long connectorId) throws IOException { // Try to create status = client.createConnection(connection); } while(!status.canProceed()); - + FormDisplayer.displayFormWarning(connection); printlnResource(Constants.RES_CREATE_CONN_SUCCESSFUL, status.name(), connection.getPersistenceId()); } } diff --git a/client/src/main/java/org/apache/sqoop/client/shell/CreateJobFunction.java b/client/src/main/java/org/apache/sqoop/client/shell/CreateJobFunction.java index f5155d5c..cc4d546e 100644 --- a/client/src/main/java/org/apache/sqoop/client/shell/CreateJobFunction.java +++ b/client/src/main/java/org/apache/sqoop/client/shell/CreateJobFunction.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.sqoop.client.core.ClientError; import org.apache.sqoop.client.core.Constants; +import org.apache.sqoop.client.utils.FormDisplayer; import org.apache.sqoop.common.SqoopException; import org.apache.sqoop.model.MJob; import org.apache.sqoop.validation.Status; @@ -99,7 +100,7 @@ private void createJob(Long connectionId, String type) throws IOException { // Try to create status = client.createJob(job); } while(!status.canProceed()); - + FormDisplayer.displayFormWarning(job); printlnResource(Constants.RES_CREATE_JOB_SUCCESSFUL, status.name(), job.getPersistenceId()); } } diff --git a/client/src/main/java/org/apache/sqoop/client/shell/UpdateConnectionFunction.java b/client/src/main/java/org/apache/sqoop/client/shell/UpdateConnectionFunction.java index 95ada63e..8556e2bc 100644 --- a/client/src/main/java/org/apache/sqoop/client/shell/UpdateConnectionFunction.java +++ b/client/src/main/java/org/apache/sqoop/client/shell/UpdateConnectionFunction.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.sqoop.client.core.ClientError; import org.apache.sqoop.client.core.Constants; +import org.apache.sqoop.client.utils.FormDisplayer; import org.apache.sqoop.common.SqoopException; import org.apache.sqoop.model.MConnection; import org.apache.sqoop.validation.Status; @@ -88,7 +89,7 @@ private void updateConnection(Long connectionId) throws IOException { // Try to create status = client.updateConnection(connection); } while(!status.canProceed()); - + FormDisplayer.displayFormWarning(connection); printlnResource(Constants.RES_UPDATE_CONN_SUCCESSFUL, status.name()); } diff --git a/client/src/main/java/org/apache/sqoop/client/shell/UpdateJobFunction.java b/client/src/main/java/org/apache/sqoop/client/shell/UpdateJobFunction.java index 3f0ac7d7..425a53f3 100644 --- a/client/src/main/java/org/apache/sqoop/client/shell/UpdateJobFunction.java +++ b/client/src/main/java/org/apache/sqoop/client/shell/UpdateJobFunction.java @@ -22,6 +22,7 @@ import org.apache.commons.cli.OptionBuilder; import org.apache.sqoop.client.core.ClientError; import org.apache.sqoop.client.core.Constants; +import org.apache.sqoop.client.utils.FormDisplayer; import org.apache.sqoop.common.SqoopException; import org.apache.sqoop.model.MJob; import org.apache.sqoop.validation.Status; @@ -88,7 +89,7 @@ private void updateJob(Long jobId) throws IOException { // Try to create status = client.updateJob(job); } while(!status.canProceed()); - + FormDisplayer.displayFormWarning(job); printlnResource(Constants.RES_UPDATE_JOB_SUCCESSFUL, status.name()); } } diff --git a/client/src/main/java/org/apache/sqoop/client/utils/FormDisplayer.java b/client/src/main/java/org/apache/sqoop/client/utils/FormDisplayer.java index 7cce7133..36509c4e 100644 --- a/client/src/main/java/org/apache/sqoop/client/utils/FormDisplayer.java +++ b/client/src/main/java/org/apache/sqoop/client/utils/FormDisplayer.java @@ -18,17 +18,22 @@ package org.apache.sqoop.client.utils; import org.apache.sqoop.client.core.Constants; +import org.apache.sqoop.model.MAccountableEntity; +import org.apache.sqoop.model.MConnection; import org.apache.sqoop.model.MEnumInput; import org.apache.sqoop.model.MForm; import org.apache.sqoop.model.MFramework; import org.apache.sqoop.model.MInput; import org.apache.sqoop.model.MInputType; import org.apache.sqoop.model.MIntegerInput; +import org.apache.sqoop.model.MJob; import org.apache.sqoop.model.MJobForms; import org.apache.sqoop.model.MMapInput; import org.apache.sqoop.model.MStringInput; import org.apache.sqoop.utils.StringUtils; +import org.apache.sqoop.validation.Status; +import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.Map; @@ -120,6 +125,33 @@ public static void displayForms(List forms, ResourceBundle bundle) { } } + /** + * Method prints the warning message of ACCEPTABLE status + * @param entity - connection or job instance + */ + public static void displayFormWarning(MAccountableEntity entity) { + List formList = new ArrayList(); + boolean showMessage = true; + if (entity instanceof MConnection) { + MConnection connection = (MConnection) entity; + formList.addAll(connection.getConnectorPart().getForms()); + formList.addAll(connection.getFrameworkPart().getForms()); + } else if(entity instanceof MJob) { + MJob job = (MJob) entity; + formList.addAll(job.getConnectorPart().getForms()); + formList.addAll(job.getFrameworkPart().getForms()); + } + for(MForm form : formList) { + if(form.getValidationStatus() == Status.ACCEPTABLE) { + if(showMessage) { + print("\n@|yellow %s|@\n", resourceString(Constants.RES_FORMDISPLAYER_FORM_WARNING)); + showMessage = false; + } + FormFiller.warningMessage(form.getValidationMessage()); + } + } + } + private static void displayForm(MForm form, ResourceBundle bundle) { print(" "); println(bundle.getString(form.getLabelKey())); diff --git a/client/src/main/resources/client-resource.properties b/client/src/main/resources/client-resource.properties index 7e68c4f6..feb09e0d 100644 --- a/client/src/main/resources/client-resource.properties +++ b/client/src/main/resources/client-resource.properties @@ -187,3 +187,5 @@ formdisplayer.size = Size formdisplayer.possible_values = Possible values formdisplayer.unsupported_datatype = Unsupported data type formdisplayer.input_sensitive = This input is sensitive + +formdisplayer.warning_message = There were warnings while create or update, but saved successfully. \ No newline at end of file