~xdavidwu/saf-sftp

ab9929c8e3bf9de5ad885bec086431aa98db7ec5 — xdavidwu 1 year, 8 months ago 4a005d4
SFTPDocumentsProvider: unify stat filling
1 files changed, 17 insertions(+), 21 deletions(-)

M src/main/java/org/safsftp/SFTPDocumentsProvider.java
M src/main/java/org/safsftp/SFTPDocumentsProvider.java => src/main/java/org/safsftp/SFTPDocumentsProvider.java +17 -21
@@ 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<SFTPv3DirectoryEntry> 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);
		}