00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef INCL_TEST_FILE_SYNC_SOURCE
00037 #define INCL_TEST_FILE_SYNC_SOURCE
00038
00042 #include "base/fscapi.h"
00043 #include "base/util/ItemContainer.h"
00044 #include "base/globalsdef.h"
00045 #include "spds/constants.h"
00046 #include "spds/SyncItem.h"
00047 #include "spds/SyncMap.h"
00048 #include "spds/SyncStatus.h"
00049 #include "spds/SyncSource.h"
00050 #include "spdm/ManagementNode.h"
00051
00052
00053 BEGIN_NAMESPACE
00054
00063 class TestFileSyncSource : public SyncSource {
00064
00065 protected:
00066
00067
00068 char* dir;
00069
00070
00071 TestFileSyncSource(SyncSource& s);
00072
00073
00074
00075
00076 virtual bool setItemData(SyncItem* syncItem);
00077
00085 int addedItem(SyncItem& item, const WCHAR* key);
00086
00087 public:
00088 TestFileSyncSource(const WCHAR* name, AbstractSyncSourceConfig* sc);
00089 virtual ~TestFileSyncSource();
00090
00096 void setDir(const char* p);
00097 const char* getDir();
00098
00109 void setFileNode(ManagementNode *mn) { fileNode = mn; }
00110 ManagementNode *getFileNode() { return fileNode; }
00111
00112
00113
00114 SyncItem* getFirstItem() { return getFirst(allItems); }
00115 SyncItem* getNextItem() { return getNext(allItems); }
00116 SyncItem* getFirstNewItem() { return getFirst(newItems); }
00117 SyncItem* getNextNewItem() { return getNext(newItems); }
00118 SyncItem* getFirstUpdatedItem() { return getFirst(updatedItems); }
00119 SyncItem* getNextUpdatedItem() { return getNext(updatedItems); }
00120 SyncItem* getFirstDeletedItem() { return getFirst(deletedItems, false); }
00121 SyncItem* getNextDeletedItem() { return getNext(deletedItems, false); }
00122 SyncItem* getFirstItemKey() { return getFirst(allItems, false); }
00123 SyncItem* getNextItemKey() { return getNext(allItems, false); }
00124 int addItem(SyncItem& item);
00125 int updateItem(SyncItem& item);
00126 int deleteItem(SyncItem& item);
00127 void setItemStatus(const WCHAR* key, int status);
00128 int removeAllItems();
00129 int beginSync();
00130 int endSync();
00131 void assign(TestFileSyncSource& s);
00132
00133 private:
00134
00135
00136 struct ItemIteratorContainer {
00137 ArrayList items;
00138 int index;
00139 } allItems, newItems, updatedItems, deletedItems;
00140
00141
00142 ManagementNode* fileNode;
00143
00145 unsigned long getServerModTime(const char* keystr);
00146
00147 SyncItem* getFirst(ItemIteratorContainer& container, bool getData = true);
00148 SyncItem* getNext(ItemIteratorContainer& container, bool getData = true);
00149 };
00150
00151
00152 END_NAMESPACE
00153
00156 #endif