Moving shared files

A client device accesses a shared data system and begins moving data from one location to another. The client device generates a tombstone object that indicates that includes metadata indicating that the data has been moved. When another client accesses the data at the old location, it encounters the tombstone and begins accessing the data at the new location. If the data has not already been completely moved to the new location, the second client to access the data assists in transferring the data to the new location.

BACKGROUND

There are many types of systems that allow users to share files. For instance, in some collaboration systems, a plurality of different users can access one or more different note taking applications and set up notebooks where the users can modify, contribute to, and share, information. The notebooks may have sections or folders, each of which contains a variety of different files. In these types of collaborative or shared systems, multiple clients or users can be working on a folder in a shared location, such as a network share location or on a web server.

It is also common in these types of shared systems for an entire notebook, folder, or portions of a folder, to be moved to a new location. When this occurs, other clients may attempt to write data to the old location, without being informed that the working set (the notebook, folder, etc.) has been moved to the new location. In addition, where multiple files are to be moved (such as where an entire folder is to be moved) the client may access the notebook when the folder has only been partially moved to the new location. Similarly, some clients may be offline when the move is initiated, so even if some type of notification system is in place that notifies clients that a folder is to be moved, the offline clients will not be notified of the move in a synchronous way.

Some have attempted to address this problem by relying on the server to send messages. In such a system, the server is required to keep sending messages to notify clients of the change of location. However, this often requires changes to both the server and client which may not be feasible. Similarly, this does not support older clients that have already been released.

Still others have attempted to address this problem by manually generating electronic mail (or other messages) to the clients that work on the shared system. However, this often requires a person to accurately generate electronic mail messages to all users. This is cumbersome and can also be error prone.

SUMMARY

A client device accesses a shared data system and begins moving data from one location to another. The client device generates a tombstone object that includes metadata indicating that the data has been moved. When another client accesses the data at the old location, it encounters the tombstone and begins accessing the data at the new location. If the data has not already been completely moved to the new location, the second client to access the data assists in transferring the data to the new location.

DETAILED DESCRIPTION

FIG. 1is a block diagram of a data system100. Data system100includes data collaboration system (or shared data system)102and data collaboration system (or shared data system)104. User devices (or clients)106and108are coupled to data collaboration systems102and104either directly (as indicated by arrows110and112) or through a network114. In the embodiment shown, users116and118access systems102and104, using user devices106and108.FIG. 1also shows that each user device106and108has a data move component120and122, respectively.

In the embodiment shown inFIG. 1, data collaboration system102includes data store124that has a plurality of notebooks126and128. Each notebook has at least one folder130and132, and each folder has one or more files136and138, respectively. System102also includes one or more note taking applications140and142that generate user interfaces for display on user devices106and108, using user interface component144. Note taking applications140and142maintain the notebooks126and128in data store124, and the user interfaces allow users116and118to collaborate (such as to add, delete, modify, create, save, etc.) or shared data in the files or folders of notebooks126and128.

It will be appreciated that each notebook, itself, could be a folder, while each section could be a file. Folders and files can be configured in other ways as well, where a folder contains one or more files. The folder construct can be named other things such as a notebook, a section, a collection, a notepad or other things. In fact, while the data collaboration system described herein discusses note taking applications with notebooks, this is exemplary only. Other shared data systems can be used as well, or instead. The present discussion is provided with a notebook having section folders for the sake of example only.

In the embodiment shown inFIG. 1, data collaboration system102also includes processor146. In one embodiment, processor146is a computer processor with associated memory and timing circuitry (not shown). Processor146is illustratively a functional component of system102and is activated by, and facilities the functionality of, the various other applications and components in system102.

FIG. 1shows that data collaboration system104is similar to data collaboration system102, in that it includes a data store with notebooks and section folders that each contain files. More specifically, it includes a data store150that includes notebooks152and154, each of which include section folders156and158. Folders156and158also each include files160and162. System104also includes a plurality of note taking applications164and166, along with a user interface component168and processor170. It will be noted that while systems102and104are shown with note taking applications, this is shown by way of example only. They could be provided with substantially any other type of data collaboration systems or shared data systems that allow a plurality of different users to collaborate on, or share, stored data.

In one embodiment, one of the users uses his or her client device to initiate a move of a folder from one location in either system102or104to another location. For the sake of the present discussion, it will be assumed that user116wishes to initiate a move of folder132from its current location in data store124in data collaboration system102to a new location in data store150in data collaboration system104. User116does this by using data move component120in user device106. Moving folder132is indicated by arrow172inFIG. 1.

FIG. 2is a simplified block diagram of system100(shown inFIG. 1), and similar items are similarly numbered. However,FIG. 2shows user devices106and108in more detail. Specifically,FIG. 2shows that user devices106and108each have a processor121and125that is a functional component of its device and is activated by, and facilitates the functionality of, other applications and components of its corresponding device106and108.FIG. 2also shows that devices106and108each have a UI component123and127, respectively, for generating user interface displays with user input mechanisms for receiving user inputs, and client applications129and131that can be client components of the note taking applications140,142,164and166or other applications.

The operation of data move component120in initiating a move of folder132from its old location180in system102to its new location182in system104is described in greater detail below with respect toFIGS. 5-5D. Briefly, before describing the operation in detail, the user116indicates that he or she wishes to move folder132from the old location180to the new location182. This is illustratively done by device106generating a suitable user interface display using user interface component123that displays user input mechanisms that allow user116to interact with data move component120. In response to user116indicating that he or she wishes to move folder132to its new location182, data move component120generates a tombstone184at the old location, and then begins moving the files in folder132to new location182. In one embodiment, tombstone184includes metadata that can be read by client application129or131on a user device that attempts to access folder132at the old location, after the move has been initiated.

One embodiment of tombstone184is illustrated inFIG. 3. It can be seen inFIG. 3that the embodiment of tombstone184includes a metadata portion186and a human readable portion188. Metadata portion186illustratively includes an identity of new location identifier190that identifies the new location182, time and date information192that indicate the time and date that the move was initiated, a user identifier194that identifies the user that initiated the move, and a status indicator196that indicates whether the move has been completed, or whether it is in process. Of course, metadata in portion186can include other data198as well.

The embodiment shown inFIG. 3illustrates that the human readable data portion188in tombstone184includes a message that can be displayed to another user that attempts to access folder132in the old location180. In one embodiment, where the user's device is not equipped with a version of the client application129,131that can read metadata in metadata portion186, the message in human readable data portion188is displayed to the user. In the embodiment shown inFIG. 3, the human readable data simply states “This notebook has been moved. Click the link below to open the notebook.” Human readable data portion188includes an actuatable link200which, when actuated by the user, navigates the user to the new location of the notebook or folder132.

FIG. 4is another embodiment of a tombstone202which is similar to tombstones184shown inFIG. 3, and similar items are similarly numbered. However, for the embodiment shown inFIG. 4, the entire folder132has not yet been moved to its new location, but instead the move is still in progress. Therefore, the information in status indicator196will indicate that the move is still in progress, and the human readable message will be changed to indicate this as well. In the embodiment shown inFIG. 4, the human readable message states “This notebook is being moved. Click on the link below to open the notebook at its new location.” Of course, these are exemplary embodiments of tombstone184and200, and others could be generated as well.

FIG. 5is a flow diagram illustrating the operation of user devices106and108in moving folder132from its old location180in system102to its new location182in system104, in greater detail.FIGS. 5A-5Dare illustrative user interface displays that are generated by the user interface components123and127and allow a user to initiate the move of a folder.FIGS. 5-5Dwill now be described in conjunction with one another. The description will proceed with respect to user116initiating a move with user device106. However, this is, of course, exemplary only and other users can initiate the move as well.

User116first provides an input, through a suitable user input mechanism generated by UI component123, indicating that the user wishes to access folder132. Then, in one embodiment, client application129generates a user interface display, using UI component123, such as user interface display300shown inFIG. 5A. User interface display300shows a variety of different information corresponding to a notebook whose name is displayed in a text box302. The location of the given notebook is also indicated at location display portion304. In addition, the author of the notebook and the various other users of the notebook, for example, are indicated generally at306. Accessing the desired data (in this case folder132) is indicated by block399inFIG. 5. In the embodiment shown inFIG. 5A, the user is provided with a delete button308and a move button310. Delete button308allows the user to delete a notebook or other data while move button310allows the user to initiate the move of a notebook, or a portion of the notebook, to a new location. The user116illustratively actuates button310. This can be done in a wide variety of different ways. For instance, where the display screen of user device106is a touch sensitive display screen, the user116can actuate button310simply by touching it either with the user's finger or with a stylus or with another item. Of course, the user116can also actuate button310in other ways, such as by using a point and click device, by using voice commands, by using other touch gestures, etc. This input is provided to data move component120which is then initiated to begin moving folder132from old location180to new location182. Having the client initiate the move is indicated by block400inFIG. 5.

As the client is attempting to initiate the move at block400, it may be desirable to ask the user for credentials or authorization to ensure that this particular user has the authority to move the folder. This can be done as well.

FIG. 5Bshows an alternative user interface display320. Display320allows a user to choose a notebook using a suitable user input mechanism, such as dropdown menu324. Once the user has chosen the notebook, the location for that notebook is indicated generally at326. Display320also provides a plurality of buttons328that allow the user to perform certain actions with respect to the notebook displayed in dropdown menu324. Among the buttons328are move button330and delete button332. When the user actuates delete button332, the user can delete the notebook. If the user actuates button330, the user can initiate a move of the notebook from its current location to a new location.

Once a move has been initiated, data move component120generates tombstone184at the old location of folder132. This is indicated by block402inFIG. 5. Recall that two exemplary embodiments of tombstones are described above with respect toFIGS. 3 and 4. Once the tombstone is generated by data move component120, it is stored in the old location180, and this is indicated by block404.

User device106then generates a user interface display using component123that allows the user to input the identity of the new location for the file to be moved.FIG. 5Cshows one embodiment of a user interface display340that has some similar items to user interface display320shown inFIG. 5B, and those items are similarly numbered. User interface display340shows some new locations that can be selected by the user, and these are generally indicated at342. In the embodiment shown inFIG. 5C, the new locations342are listed in a new locations list344that includes a plurality of different portions. List344is shown broken out by general location, such as a location corresponding to a given project (in this case Contoso Landscaping) shown at346, an individual user's cloud site348and a general computer location350. If the user selects one of items346,348and350, the list corresponding to the selected item expands. In the embodiment shown inFIG. 5C, the user has selected the Contoso Landscaping item346. Therefore, the locations corresponding to that item are divided into two sections including a recent libraries section352and a team sites section354. This list is also scrollable using a scroll bar356. Therefore, the user can scroll through different possible new locations and select one of them. Once the new location is selected, it is listed in a new location text box358and the user can begin the move by pressing move button360. Receiving a user input indicative of the identity of the new location is indicated by block406inFIG. 5. It will of course be appreciated that the described way of selecting a new location is exemplary only and a wide variety of other ways, other users input mechanisms and other displays can be used as well.

Once the new location is input or chosen by the user, the tombstone (184or202) is updated with a link to that new location and the tombstone metadata is updated to indicate that location as well. Of course, in another embodiment, the tombstone (184or202) is not created and stored in the old location until after the user has input or chosen the new location and actuated move button360. The present description is exemplary only.

Once the user has actuated move button360, data move component120selects one of the files in folder132and moves the selected files from the old location180to the new location182. Selecting a file and moving the file are indicated by blocks408and410inFIG. 5. Data move component120then determines whether there are more files to be moved, at block412. If so, processing reverts to block408where component120selects another file to be moved and moves that file.

It will be appreciated that, as long as there are still files to be moved in the selected folder132, the tombstone stored at the old location will be tombstone202and will indicate the new location of folder132, the time and date that the move was initiated, the user who initiated the move, and the status indicator196will indicate that the move is still in progress. Human readable data188will indicate this as well. However, if, at block412, it is determined that all of the files have been moved, then data move component120modifies the tombstone202to be tombstone184and to indicate that the move has been completed. This is done by illustratively modifying the status indicator196and the human readable data188to indicate that the move has been completed. This is indicated by block414inFIG. 5. It will also be appreciated that, while the move is in process, data move component120may lock the files in folder132during the move. Any changes by a client or other user device will be held locally on that client or user device until the move has been completed.

During the move, data move component120can generate a progress bar display such as that shown in user interface display380inFIG. 5D. The progress bar display380illustratively shows the new location for the notebook (or folder) at382and provides a status bar384that indicates the progress of the move to the new location.

Once the move has been completed, data move component120modifies application129so that the location of the working set (in this case folder132) is set to the new location182. This is indicated by block416inFIG. 5. Any pending changes that have been made during the move are then written to the working set at the new location182. This is indicated by block418inFIG. 5.

It may happen that, either during the move of folder132or after it, a different client device (such as user device108) attempts to access folder132at the old location180. Because the user device108itself has a data move component122, user device108will discover the tombstone (184or202) at the old location. Having device108attempt to access the folder at the old location180and having it subsequently discover tombstone (184or202) is indicated by blocks420and422inFIG. 5.

In an embodiment where data move component122is configured to read the metadata in metadata portion186of tombstone184or202, data move component122can read the status indicator196to determine whether the move has been completed. This is indicated by blocks424and426inFIG. 5. If not, then data move component122, itself, begins to assist in moving folder132from its old location180to the new location182. In doing so, data move component122of user device108begins processing at block408discussed above. Thus, data move component122on user device108selects a file to be moved and moves the selected file and then determines whether there are still more files to be moved. This is indicated by blocks408,410and412. This continues until there are no more files to be moved (at which point the move is complete) or until device108is off line (in which case it stops helping with the move). The particular data move component120or122that moves the last file updates the status indicator196in tombstone202to indicate that the move is now complete. Processing then continues at blocks414,416and418.

Once the files in folder132have been completely moved, it may be desirable to delete them from the old location as well. Therefore, the data move component that moves the last file may optionally delete the old files from the old location.

It may happen that a particular data move component120or122is not configured to read the metadata in the tombstone184or202. This may happen, for instance, where the particular data move component is an older version or has simply not been setup to read the metadata. In that case, at block424, the given user device108will simply display the human readable data from tombstone184or202to the user. This is indicated by block430inFIG. 5. Thus, the user will see the displayed message “This notebook has been moved. Click the link below to open the notebook.” (where the move has been completed). Alternatively, if the move has not yet been completed, the user will be shown the message illustrated inFIG. 4which states “This notebook is being moved. Click on the link below to open the notebook at its new location.” Of course, these are exemplary messages only and others could be used as well.

The embodiment shown inFIG. 6, specifically shows that system100is located in cloud502(which can be public, private, or a combination where portions are public while others are private). Therefore, user116uses a user device, such as user device106, to access those systems through cloud502.

FIG. 6also depicts another embodiment of a cloud architecture.FIG. 6shows that it is also contemplated that some elements of system100are disposed in cloud502while others are not. By way of example, data store124can be disposed outside of cloud502, and accessed through cloud502. In another embodiment, some or all of the components of system100(such as note taking application140or other portions) are also outside of cloud502. Regardless of where they are located, they can be accessed directly by device106, through a network (either a wide area network or a local area network), they can be hosted at a remote site by a service, or they can be provided as a service through a cloud or accessed by a connection service that resides in the cloud. All of these architectures are contemplated herein.

FIG. 6further shows that some or all of the portions of system100can be located on device106.

FIG. 7is a simplified block diagram of one illustrative embodiment of a handheld or mobile computing device that can be used as a user's or client's hand held device16, in which the present system (or parts of it) can be deployed. In one embodiment, device16can comprise one or more of user devices106or108but it can also comprise a collaboration system102or104as well.FIGS. 7-11are examples of handheld or mobile devices.

FIG. 7provides a general block diagram of the components of a client device16that can run components of system100or that interacts with system100, or both. In the device16, a communications link13is provided that allows the handheld device to communicate with other computing devices and under some embodiments provides a channel for receiving information automatically, such as by scanning. Examples of communications link13include an infrared port, a serial/USB port, a cable network port such as an Ethernet port, and a wireless network port allowing communication though one or more communication protocols including General Packet Radio Service (GPRS), LTE, HSPA, HSPA+ and other 3G and 4G radio protocols, 1×rtt, and Short Message Service, which are wireless services used to provide cellular access to a network, as well as 802.11 and 802.11b (Wi-Fi) protocols, and Bluetooth protocol, which provide local wireless connections to networks.

Under other embodiments, applications or systems (like system100) are received on a removable Secure Digital (SD) card that is connected to a SD card interface15. SD card interface15and communication links13communicate with a processor17(which can also embody one of processors146,170,121or125fromFIGS. 1 and 2) along a bus19that is also connected to memory21and input/output (I/O) components23, as well as clock25and location system27.

Applications33can be applications (such as application140or129) that have previously been stored on the device16or applications that are installed during use, although these can be part of operating system29, or hosted external to device16, as well.

FIG. 8and show one embodiment in which device16is a tablet computer600. InFIG. 8, computer600is shown with display screen602showing the display ofFIG. 3whileFIG. 9shows computer600with display screen602showing the display ofFIG. 5B. Screen602can be a touch screen (so touch gestures from a user's finger604can be used to interact with the application) or a pen-enabled interface that receives inputs from a pen or stylus. It can also use an on-screen virtual keyboard. Of course, it might also be attached to a keyboard or other user input device through a suitable attachment mechanism, such as a wireless link or USB port, for instance. Computer600can also illustratively receive voice inputs as well.

FIGS. 10 and 11provide additional examples of devices16that can be used, although others can be used as well. InFIG. 10, a smart phone or mobile phone45is provided as the device16. Phone45includes a set of keypads47for dialing phone numbers, a display49capable of displaying images including application images, icons, web pages, photographs, and video, and control buttons51for selecting items shown on the display. The phone includes an antenna53for receiving cellular phone signals such as General Packet Radio Service (GPRS) and 1×rtt, and Short Message Service (SMS) signals. In some embodiments, phone45also includes a Secure Digital (SD) card slot55that accepts a SD card57.

The mobile device ofFIG. 11is a personal digital assistant (PDA)59or a multimedia player or a tablet computing device, etc. (hereinafter referred to as PDA59). PDA59includes an inductive screen61that senses the position of a stylus63(or other pointers, such as a user's finger) when the stylus is positioned over the screen. This allows the user to select, highlight, and move items on the screen as well as draw and write. PDA59also includes a number of user input keys or buttons (such as button65) which allow the user to scroll through menu options or other display options which are displayed on display61, and allow the user to change applications or select user input functions, without contacting display61. Although not shown, PDA59can include an internal antenna and an infrared transmitter/receiver that allow for wireless communication with other computers as well as connection ports that allow for hardware connections to other computing devices. Such hardware connections are typically made through a cradle that connects to the other computer through a serial or USB port. As such, these connections are non-network connections. In one embodiment, mobile device59also includes a SD card slot67that accepts a SD card69.

Note that other forms of the devices16are possible.