From ab9929c8e3bf9de5ad885bec086431aa98db7ec5 Mon Sep 17 00:00:00 2001 From: xdavidwu Date: Fri, 29 Jul 2022 14:16:23 +0800 Subject: [PATCH] SFTPDocumentsProvider: unify stat filling --- .../org/safsftp/SFTPDocumentsProvider.java | 38 +++++++++---------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/main/java/org/safsftp/SFTPDocumentsProvider.java b/src/main/java/org/safsftp/SFTPDocumentsProvider.java index a07ab5b..62207d4 100644 --- a/src/main/java/org/safsftp/SFTPDocumentsProvider.java +++ b/src/main/java/org/safsftp/SFTPDocumentsProvider.java @@ -163,6 +163,18 @@ public class SFTPDocumentsProvider extends DocumentsProvider { } } + private void fillStatRow(MatrixCursor.RowBuilder row, String name, + SFTPv3FileAttributes stat) { + row.add(Document.COLUMN_DISPLAY_NAME, name); + if (stat.isDirectory()) { + row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); + } else if (stat.isRegularFile()) { + row.add(Document.COLUMN_MIME_TYPE, getMime(name)); + } + row.add(Document.COLUMN_SIZE, stat.size); + row.add(Document.COLUMN_LAST_MODIFIED, stat.mtime * 1000); + } + public Cursor queryChildDocuments( String parentDocumentId, String[] projection, String sortOrder) { MatrixCursor result = @@ -177,26 +189,14 @@ public class SFTPDocumentsProvider extends DocumentsProvider { try { Vector res = sftp.ls(filename); for (SFTPv3DirectoryEntry entry : res) { - Log.v("SFTP", - "qcf " + parentDocumentId + " " + entry.filename + " " - + entry.attributes.size + " " - + entry.attributes.mtime); if (entry.filename.equals(".") || entry.filename.equals("..")) continue; MatrixCursor.RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, parentDocumentId + '/' + entry.filename); - row.add(Document.COLUMN_DISPLAY_NAME, entry.filename); - if (entry.attributes.isDirectory()) { - row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); - } else if (entry.attributes.isRegularFile()) { - row.add(Document.COLUMN_MIME_TYPE, getMime(entry.filename)); - } - row.add(Document.COLUMN_SIZE, entry.attributes.size); - row.add(Document.COLUMN_LAST_MODIFIED, - entry.attributes.mtime * 1000); + fillStatRow(row, entry.filename, entry.attributes); } - } catch (Exception e) { + } catch (IOException e) { throwOrAddErrorExtra(e.toString(), result); } sftp.close(); @@ -213,16 +213,12 @@ public class SFTPDocumentsProvider extends DocumentsProvider { return result; } String filename = documentId.substring(documentId.indexOf("/") + 1); + String basename = filename.substring(filename.lastIndexOf("/") + 1); try { - SFTPv3FileAttributes res = sftp.stat(filename); + SFTPv3FileAttributes stat = sftp.stat(filename); MatrixCursor.RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, documentId); - row.add(Document.COLUMN_DISPLAY_NAME, - filename.substring(filename.lastIndexOf("/") + 1)); - row.add(Document.COLUMN_MIME_TYPE, - res.isDirectory() ? Document.MIME_TYPE_DIR : getMime(filename)); - row.add(Document.COLUMN_SIZE, res.size); - row.add(Document.COLUMN_LAST_MODIFIED, res.mtime * 1000); + fillStatRow(row, basename, stat); } catch (IOException e) { throwOrAddErrorExtra(e.toString(), result); } -- 2.43.0