gui/html: Now files/action browsing is complete
File browsing for now lists all files in the folder **without**
directories. We probably would need to implement normal browsing at
some point, but it requires modification of FileState.
File restoring is coming soon. Stay tuned.
Change-Id: I273366e04164716bfb53e92585cdf02808e4d06a
diff --git a/src/action-log.cc b/src/action-log.cc
index 71ee782..0a05dd2 100644
--- a/src/action-log.cc
+++ b/src/action-log.cc
@@ -701,9 +701,10 @@
action.set_action (static_cast<ActionItem_ActionType> (sqlite3_column_int (stmt, 2)));
action.set_filename (reinterpret_cast<const char *> (sqlite3_column_text (stmt, 3)), sqlite3_column_bytes (stmt, 3));
std::string directory (reinterpret_cast<const char *> (sqlite3_column_text (stmt, 4)), sqlite3_column_bytes (stmt, 4));
+ action.set_version (sqlite3_column_int64 (stmt, 5));
+
if (action.action () == 0)
{
- action.set_version (sqlite3_column_int64 (stmt, 5));
action.set_timestamp (sqlite3_column_int64 (stmt, 6));
action.set_file_hash (sqlite3_column_blob (stmt, 7), sqlite3_column_bytes (stmt, 7));
action.set_mtime (sqlite3_column_int (stmt, 8));
@@ -772,9 +773,10 @@
action.set_action (static_cast<ActionItem_ActionType> (sqlite3_column_int (stmt, 2)));
action.set_filename (reinterpret_cast<const char *> (sqlite3_column_text (stmt, 3)), sqlite3_column_bytes (stmt, 3));
std::string directory (reinterpret_cast<const char *> (sqlite3_column_text (stmt, 4)), sqlite3_column_bytes (stmt, 4));
+ action.set_version (sqlite3_column_int64 (stmt, 5));
+
if (action.action () == 0)
{
- action.set_version (sqlite3_column_int64 (stmt, 5));
action.set_timestamp (sqlite3_column_int64 (stmt, 6));
action.set_file_hash (sqlite3_column_blob (stmt, 7), sqlite3_column_bytes (stmt, 7));
action.set_mtime (sqlite3_column_int (stmt, 8));
diff --git a/src/state-server.cc b/src/state-server.cc
index 43f15e3..89b6095 100644
--- a/src/state-server.cc
+++ b/src/state-server.cc
@@ -77,11 +77,11 @@
// currently supporting limited number of command.
// will be extended to support all planned commands later
- // <PREFIX_INFO>/"actions"/"all"/<nonce>/<segment> get list of all actions
+ // <PREFIX_INFO>/"actions"/"all"/<segment> get list of all actions
m_ccnx->setInterestFilter (Name (m_PREFIX_INFO)("actions")("folder"), bind(&StateServer::info_actions_folder, this, _1));
m_ccnx->setInterestFilter (Name (m_PREFIX_INFO)("actions")("file"), bind(&StateServer::info_actions_file, this, _1));
- // <PREFIX_INFO>/"filestate"/"all"/<nonce>/<segment>
+ // <PREFIX_INFO>/"filestate"/"all"/<segment>
m_ccnx->setInterestFilter (Name (m_PREFIX_INFO)("files")("folder"), bind(&StateServer::info_files_folder, this, _1));
// <PREFIX_CMD>/"restore"/"file"/<one-component-relative-file-name>/<version>/<file-hash>
@@ -174,8 +174,8 @@
void
StateServer::info_actions_folder (const Name &interest)
{
- if (interest.size () - m_PREFIX_INFO.size () != 4 &&
- interest.size () - m_PREFIX_INFO.size () != 5)
+ if (interest.size () - m_PREFIX_INFO.size () != 3 &&
+ interest.size () - m_PREFIX_INFO.size () != 4)
{
_LOG_DEBUG ("Invalid interest: " << interest);
return;
@@ -188,8 +188,8 @@
void
StateServer::info_actions_file (const Name &interest)
{
- if (interest.size () - m_PREFIX_INFO.size () != 4 &&
- interest.size () - m_PREFIX_INFO.size () != 5)
+ if (interest.size () - m_PREFIX_INFO.size () != 3 &&
+ interest.size () - m_PREFIX_INFO.size () != 4)
{
_LOG_DEBUG ("Invalid interest: " << interest);
return;
@@ -203,7 +203,7 @@
void
StateServer::info_actions_fileOrFolder_Execute (const Ccnx::Name &interest, bool isFolder/* = true*/)
{
- // <PREFIX_INFO>/"actions"/"folder|file"/<folder|file>/<nonce>/<offset> get list of all actions
+ // <PREFIX_INFO>/"actions"/"folder|file"/<folder|file>/<offset> get list of all actions
try
{
@@ -212,9 +212,9 @@
/// @todo !!! add security checking
string fileOrFolderName;
- if (interest.size () - m_PREFIX_INFO.size () == 5)
- fileOrFolderName = interest.getCompFromBackAsString (2);
- else // == 4
+ if (interest.size () - m_PREFIX_INFO.size () == 4)
+ fileOrFolderName = interest.getCompFromBackAsString (1);
+ else // == 3
fileOrFolderName = "";
/*
* {
@@ -234,13 +234,13 @@
bool more;
if (isFolder)
{
- m_actionLog->LookupActionsInFolderRecursively
+ more = m_actionLog->LookupActionsInFolderRecursively
(boost::bind (StateServer::formatActionJson, boost::ref(actions), _1, _2, _3),
fileOrFolderName, offset*10, 10);
}
else
{
- m_actionLog->LookupActionsForFile
+ more = m_actionLog->LookupActionsForFile
(boost::bind (StateServer::formatActionJson, boost::ref(actions), _1, _2, _3),
fileOrFolderName, offset*10, 10);
}
@@ -249,8 +249,9 @@
if (more)
{
- Ccnx::Name more = Name (interest.getPartialName (0, interest.size () - 1))(offset + 1);
- json.push_back (Pair ("more", lexical_cast<string> (more)));
+ json.push_back (Pair ("more", lexical_cast<string> (offset + 1)));
+ // Ccnx::Name more = Name (interest.getPartialName (0, interest.size () - 1))(offset + 1);
+ // json.push_back (Pair ("more", lexical_cast<string> (more)));
}
ostringstream os;
@@ -324,8 +325,8 @@
void
StateServer::info_files_folder (const Ccnx::Name &interest)
{
- if (interest.size () - m_PREFIX_INFO.size () != 4 &&
- interest.size () - m_PREFIX_INFO.size () != 5)
+ if (interest.size () - m_PREFIX_INFO.size () != 3 &&
+ interest.size () - m_PREFIX_INFO.size () != 4)
{
_LOG_DEBUG ("Invalid interest: " << interest << ", " << interest.size () - m_PREFIX_INFO.size ());
return;
@@ -339,7 +340,7 @@
void
StateServer::info_files_folder_Execute (const Ccnx::Name &interest)
{
- // <PREFIX_INFO>/"filestate"/"folder"/<one-component-relative-folder-name>/<nonce>/<offset>
+ // <PREFIX_INFO>/"filestate"/"folder"/<one-component-relative-folder-name>/<offset>
try
{
int offset = interest.getCompFromBackAsInt (0);
@@ -347,9 +348,9 @@
// /// @todo !!! add security checking
string folder;
- if (interest.size () - m_PREFIX_INFO.size () == 5)
- folder = interest.getCompFromBackAsString (2);
- else // == 4
+ if (interest.size () - m_PREFIX_INFO.size () == 4)
+ folder = interest.getCompFromBackAsString (1);
+ else // == 3
folder = "";
/*
@@ -377,8 +378,9 @@
if (more)
{
- Ccnx::Name more = Name (interest.getPartialName (0, interest.size () - 1))(offset + 1);
- json.push_back (Pair ("more", lexical_cast<string> (more)));
+ json.push_back (Pair ("more", lexical_cast<string> (offset + 1)));
+ // Ccnx::Name more = Name (interest.getPartialName (0, interest.size () - 1))(offset + 1);
+ // json.push_back (Pair ("more", lexical_cast<string> (more)));
}
ostringstream os;
diff --git a/src/state-server.h b/src/state-server.h
index 22caf89..8809b7f 100644
--- a/src/state-server.h
+++ b/src/state-server.h
@@ -50,15 +50,15 @@
*
* - state: get list of SyncNodes, their sequence numbers, and forwarding hint (almost the same as RECOVERY interest)
*
- * <PREFIX_INFO>/"state" (nonce should probably be the authentification code or authentication code should in addition somewhere)
+ * <PREFIX_INFO>/"state" (@todo: authentification code or authentication code should in addition somewhere)
*
* - action
*
* Get list of actions for a folder (for all files under this folder)
*
- * <PREFIX_INFO>/"actions"/"folder"/<nonce>/<offset> (all actions)
+ * <PREFIX_INFO>/"actions"/"folder"/<offset> (all actions)
* or
- * <PREFIX_INFO>/"actions"/"folder"/<one-component-relative-file-name>/<nonce>/<offset>
+ * <PREFIX_INFO>/"actions"/"folder"/<one-component-relative-file-name>/<offset>
*
* Actions are ordered in decreasing order (latest will go first).
*
@@ -98,15 +98,15 @@
* },
*
* // only if there are more actions available
- * "more": "<NDN-NAME-OF-NEXT-SEGMENT-OF-ACTION>"
+ * "more": "next segment number"
* }
*
*
* - file
*
- * <PREFIX_INFO>/"files"/"folder"/<nonce>/<offset> (full filestate)
+ * <PREFIX_INFO>/"files"/"folder"/<offset> (full filestate)
* or
- * <PREFIX_INFO>/"files"/"folder"/<one-component-relative-folder-name>/<nonce>/<offset>
+ * <PREFIX_INFO>/"files"/"folder"/<one-component-relative-folder-name>/<offset>
*
* Each Data packets contains a list of up to 100 files.
* If more items are available, application data will specify URL for the next packet
@@ -132,7 +132,7 @@
* ]
*
* // only if there are more actions available
- * "more": "<NDN-NAME-OF-NEXT-SEGMENT-OF-FILESTATE>"
+ * "more": "next segment number"
* }
*
* Commands available: