From 84b48278ad69347465e52e86166e14f04189f19d Mon Sep 17 00:00:00 2001 From: hstyi Date: Mon, 24 Feb 2025 14:14:44 +0800 Subject: [PATCH] feat: support sftp status (#307) --- .../app/termora/transport/FileTransportPanel.kt | 12 ++++++++++++ .../app/termora/transport/FileTransportTableModel.kt | 2 +- src/main/kotlin/app/termora/transport/Transport.kt | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/app/termora/transport/FileTransportPanel.kt b/src/main/kotlin/app/termora/transport/FileTransportPanel.kt index bc137b5..ba05af1 100644 --- a/src/main/kotlin/app/termora/transport/FileTransportPanel.kt +++ b/src/main/kotlin/app/termora/transport/FileTransportPanel.kt @@ -156,6 +156,18 @@ class FileTransportPanel( deleteAll.isEnabled = transportManager.getTransports().isNotEmpty() } + popupMenu.addSeparator() + + popupMenu.add(I18n.getString("termora.transport.jobs.table.status")).addActionListener { + val last = transports.last() + OptionPane.showMessageDialog( + SwingUtilities.getWindowAncestor(this), + if (last.state == TransportState.Failed && last.stateText.isNotBlank()) last.stateText + else tableModel.formatStatus(last.state), + messageType = if (last.state == TransportState.Failed) JOptionPane.ERROR_MESSAGE else JOptionPane.INFORMATION_MESSAGE + ) + } + popupMenu.show(table, event.x, event.y) } diff --git a/src/main/kotlin/app/termora/transport/FileTransportTableModel.kt b/src/main/kotlin/app/termora/transport/FileTransportTableModel.kt index 2ce9d36..6e7685f 100644 --- a/src/main/kotlin/app/termora/transport/FileTransportTableModel.kt +++ b/src/main/kotlin/app/termora/transport/FileTransportTableModel.kt @@ -96,7 +96,7 @@ class FileTransportTableModel(transportManager: TransportManager) : DefaultTable } } - private fun formatStatus(state: TransportState): String { + fun formatStatus(state: TransportState): String { return when (state) { TransportState.Transporting -> I18n.getString("termora.transport.sftp.status.transporting") TransportState.Waiting -> I18n.getString("termora.transport.sftp.status.waiting") diff --git a/src/main/kotlin/app/termora/transport/Transport.kt b/src/main/kotlin/app/termora/transport/Transport.kt index d35ba27..7546616 100644 --- a/src/main/kotlin/app/termora/transport/Transport.kt +++ b/src/main/kotlin/app/termora/transport/Transport.kt @@ -3,6 +3,8 @@ package app.termora.transport import app.termora.Disposable import org.apache.commons.io.IOUtils import org.apache.commons.lang3.ObjectUtils +import org.apache.commons.lang3.StringUtils +import org.apache.commons.lang3.exception.ExceptionUtils import org.apache.commons.net.io.CopyStreamEvent import org.apache.commons.net.io.CopyStreamListener import org.apache.commons.net.io.Util @@ -47,6 +49,7 @@ abstract class Transport( field = value listeners.forEach { it.onTransportChanged(this) } } + var stateText: String = StringUtils.EMPTY // 0 - 1 var progress = 0.0 @@ -186,6 +189,7 @@ class FileTransport( log.error(e.message, e) } state = TransportState.Failed + stateText = ExceptionUtils.getRootCauseMessage(e) } finally { counter.clear() }