diff --git a/src/DatabaseServices/FileSystem.ts b/src/DatabaseServices/FileSystem.ts deleted file mode 100644 index d78381ce2..000000000 --- a/src/DatabaseServices/FileSystem.ts +++ /dev/null @@ -1,109 +0,0 @@ -/* -关于webCAD 文件系统的原型. -包括了对象的保存,撤销,还原. - -对象ID更新 引用 - -关于对象的撤销和重做设计. - -对象池 - -增量保存 - -1.应该能够新增和删除图元. -2.新增删除图元应该是可以撤销和重做的. -3.图元更改是可以撤销和重做的. -4.命令事务一致性,事物可以提交也可以取消. -5.数据保存和还原 -6.对象引用应该是可以复制到新图纸的. - - -创建对象如何撤销和重做? -db.AppendEntity(ent); - -当我们删除对象时,尝试只对对象进行标记删除. -当历史记录被优化时,我们尝试对删除的对象进行彻底删除 - -###关于对象的历史记录信息 - -->对象创建 -.... - undo:删除该对象,在集合中清除该数据 Remove - redo:重新创建该对象.保存完整的数据 A - -->对象删除 - undo:添加删除标记. P - redo:取消删除标记. P - -->对象修改 - undo:添加补丁. P - redo:添加补丁 P - - -问题:对象完整性保存时,优化重复的保存对象状态(不同命令下) - -R:补丁与完整的对象存储不能优化. -假设用A表示完整的对象补丁,P表示局部补丁. 那么以下状态无法被优化. -如 A P P P A P P - | 这里A部分无法被优化 必须保证拥有旧的和新的全部数据. -假设拥有连续的完整补丁. -如 A A A A - 连续的A是可以优化旧数据的. - -结论:不优化. - - -问题:对象历史记录,完整性保存时优化.(相同命令下) -当对象已经尝试完整的保存一个对象时,如果还继续往里面保存一个完整的数据,那么将更新旧的完整数据. -比如. -A (insert new A). -A (update A.redo) - - -历史记录的数据结构 - -cmdName:"Line" //对象的创建命令 - [ - Object1:[C]//对象保留的创建的记录 - ] -cmdName:"Move" //对象修改命令 - [ - Object1:[P], - ObjectN:[P], - ObjectM:[P], - ... - ] -cmdName:"Ohther" //假设这个是一个复杂度很高的命令 - [ - Object1:[A,P,A,P,A,P,P,P],保存连续的记录. - ObjectN:[A,P,A,P,A,P,P,P], - ObjectM:[C,P,P,P,P] ,假设C为创建数据 - ... - ] - - -优化A -当连续2个命令是A时,优化第二个命令A的undo数据为空 -当第一个数据为A时,优化后续的P. -A写入时,只写入undo信息,并不写入redo信息.当命令结束时,写入redo数据. - -优化C: -当第一个数据为C时,优化后续的P. -同A 写入时,只写入UNDO,并不写入redo,命令结束时,写入redo数据 - - - -问题:对象id的更新. -跨文档复制时,对象的id和引用的id应该被更新. -加入ObjectId类. -id只有在一个情况下才会更新.跨文档复制时. - -问题:对象的id如何分配. -在加入到图形记录时,分配id. - -撤销创建对象,采用完全撤销模式,删除对象与集合的记录. -还原对象时,创建对象,并且加入集合. - - -*/ -