liunaijie commented on code in PR #8765:
URL: https://github.com/apache/seatunnel/pull/8765#discussion_r1987278345


##########
seatunnel-connectors-v2/connector-file/connector-file-sftp/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/sftp/sink/SftpFileSinkFactory.java:
##########
@@ -46,67 +46,53 @@ public String factoryIdentifier() {
     @Override
     public OptionRule optionRule() {
         return OptionRule.builder()
-                .required(SftpConfigOptions.FILE_PATH)
-                .required(SftpConfigOptions.SFTP_HOST)
-                .required(SftpConfigOptions.SFTP_PORT)
-                .required(SftpConfigOptions.SFTP_USER)
-                .required(SftpConfigOptions.SFTP_PASSWORD)
-                .optional(BaseSinkConfig.FILE_FORMAT_TYPE)
-                .optional(BaseSinkConfig.SCHEMA_SAVE_MODE)
-                .optional(BaseSinkConfig.DATA_SAVE_MODE)
+                .required(SftpFileSinkOptions.FILE_PATH)
+                .required(SftpFileSinkOptions.SFTP_HOST)
+                .required(SftpFileSinkOptions.SFTP_PORT)
+                .required(SftpFileSinkOptions.SFTP_USER)
+                .required(SftpFileSinkOptions.SFTP_PASSWORD)
+                .optional(FileBaseSinkOptions.FILE_FORMAT_TYPE)
                 .optional(SinkConnectorCommonOptions.MULTI_TABLE_SINK_REPLICA)
                 .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
-                        FileFormat.TEXT,
-                        BaseSinkConfig.ROW_DELIMITER,
-                        BaseSinkConfig.FIELD_DELIMITER,
-                        BaseSinkConfig.TXT_COMPRESS,
-                        BaseSinkConfig.ENABLE_HEADER_WRITE)
-                .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
-                        FileFormat.CSV,
-                        BaseSinkConfig.TXT_COMPRESS,
-                        BaseSinkConfig.ENABLE_HEADER_WRITE)
-                .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
-                        FileFormat.JSON,
-                        BaseSinkConfig.TXT_COMPRESS)
-                .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
-                        FileFormat.ORC,
-                        BaseSinkConfig.ORC_COMPRESS)
-                .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
-                        FileFormat.PARQUET,
-                        BaseSinkConfig.PARQUET_COMPRESS,
-                        BaseSinkConfig.PARQUET_AVRO_WRITE_FIXED_AS_INT96,
-                        BaseSinkConfig.PARQUET_AVRO_WRITE_TIMESTAMP_AS_INT96)
-                .conditional(
-                        BaseSinkConfig.FILE_FORMAT_TYPE,
+                        FileBaseSinkOptions.FILE_FORMAT_TYPE,
                         FileFormat.XML,
-                        BaseSinkConfig.XML_USE_ATTR_FORMAT)
-                .optional(BaseSinkConfig.CUSTOM_FILENAME)
+                        FileBaseSinkOptions.XML_USE_ATTR_FORMAT)
+                .optional(FileBaseSinkOptions.CUSTOM_FILENAME)
                 .conditional(
-                        BaseSinkConfig.CUSTOM_FILENAME,
+                        FileBaseSinkOptions.CUSTOM_FILENAME,
                         true,
-                        BaseSinkConfig.FILE_NAME_EXPRESSION,
-                        BaseSinkConfig.FILENAME_TIME_FORMAT)
-                .optional(BaseSinkConfig.HAVE_PARTITION)
+                        FileBaseSinkOptions.FILE_NAME_EXPRESSION)
+                .optional(FileBaseSinkOptions.HAVE_PARTITION)
                 .conditional(
-                        BaseSinkConfig.HAVE_PARTITION,
+                        FileBaseSinkOptions.HAVE_PARTITION,
                         true,
-                        BaseSinkConfig.PARTITION_BY,
-                        BaseSinkConfig.PARTITION_DIR_EXPRESSION,
-                        BaseSinkConfig.IS_PARTITION_FIELD_WRITE_IN_FILE)
-                .optional(BaseSinkConfig.SINK_COLUMNS)
-                .optional(BaseSinkConfig.IS_ENABLE_TRANSACTION)
-                .optional(BaseSinkConfig.DATE_FORMAT)
-                .optional(BaseSinkConfig.DATETIME_FORMAT)
-                .optional(BaseSinkConfig.TIME_FORMAT)
-                .optional(BaseSinkConfig.SINGLE_FILE_MODE)
-                .optional(BaseSinkConfig.BATCH_SIZE)
-                .optional(BaseSinkConfig.CREATE_EMPTY_FILE_WHEN_NO_DATA)
-                .optional(BaseSinkConfig.FILENAME_EXTENSION)
+                        FileBaseSinkOptions.PARTITION_BY,
+                        FileBaseSinkOptions.PARTITION_DIR_EXPRESSION,
+                        FileBaseSinkOptions.IS_PARTITION_FIELD_WRITE_IN_FILE)
+                .optional(FileBaseSinkOptions.TMP_PATH)
+                .optional(FileBaseSinkOptions.SINK_COLUMNS)
+                .optional(FileBaseSinkOptions.COMPRESS_CODEC)
+                .optional(FileBaseSinkOptions.ENABLE_HEADER_WRITE)
+                .optional(FileBaseSinkOptions.FIELD_DELIMITER)
+                .optional(FileBaseSinkOptions.ROW_DELIMITER)
+                .optional(FileBaseSinkOptions.IS_ENABLE_TRANSACTION)
+                .optional(FileBaseSinkOptions.FILENAME_TIME_FORMAT)
+                .optional(FileBaseSinkOptions.MAX_ROWS_IN_MEMORY)
+                .optional(FileBaseSinkOptions.SHEET_NAME)
+                .optional(FileBaseSinkOptions.DATE_FORMAT)
+                .optional(FileBaseSinkOptions.DATETIME_FORMAT)
+                .optional(FileBaseSinkOptions.TIME_FORMAT)
+                .optional(FileBaseSinkOptions.XML_ROOT_TAG)

Review Comment:
   `xml_root_tag` maybe only needed when format is `xml`
   `PARQUET_AVRO_WRITE_TIMESTAMP_AS_INT96` only needed when format is `parquet`.
   
   I think we need a new method to describe this relationship in the feature. 
`Optional on some condition`
   



##########
seatunnel-connectors-v2/connector-file/connector-file-sftp/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/sftp/source/SftpFileSourceFactory.java:
##########
@@ -45,39 +45,38 @@ public String factoryIdentifier() {
     @Override
     public OptionRule optionRule() {
         return OptionRule.builder()
-                .optional(SftpConfigOptions.FILE_PATH)
-                .optional(SftpConfigOptions.SFTP_HOST)
-                .optional(SftpConfigOptions.SFTP_PORT)
-                .optional(SftpConfigOptions.SFTP_USER)
-                .optional(SftpConfigOptions.SFTP_PASSWORD)
-                .optional(BaseSourceConfigOptions.FILE_FORMAT_TYPE)
+                .exclusive(SftpFileSourceOptions.TABLE_CONFIGS, 
SftpFileSourceOptions.FILE_PATH)
+                .optional(SftpFileSourceOptions.SFTP_HOST)
+                .optional(SftpFileSourceOptions.SFTP_PORT)

Review Comment:
   The `host`, `port` should be `required`. 
https://github.com/apache/seatunnel/blob/dev/seatunnel-connectors-v2/connector-file/connector-file-sftp/src/main/java/org/apache/seatunnel/connectors/seatunnel/file/sftp/config/SftpConf.java#L45
   
   
   



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscr...@seatunnel.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to