重构代码避免循环依赖

pull/215/MERGE
ChenX 6 years ago
parent bf5c831c2e
commit ddf2bf8c0f

@ -1,12 +1,12 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`changev 1`] = `"[1,3,[\\"BlockTableRecord\\",1,0,false,1,[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[2,3,4],[0,0,0]]],[\\"MaerialTableRecord\\",1,1,false,0],[\\"ObjectCollection\\",1,2,false,0],1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,-1,false,1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],\\"\\",\\"\\",3]]]"`; exports[`changev 1`] = `"[1,3,[\\"BlockTableRecord\\",1,0,false,1,[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[2,3,4],[0,0,0]]],[\\"MaerialTableRecord\\",1,1,false,0],[\\"ObjectCollection\\",1,2,false,0],1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],\\"\\",\\"\\",3]]]"`;
exports[`创建 修改 撤销撤销 重做重做 撤销 重做 1`] = `"[1,3,[\\"BlockTableRecord\\",1,0,false,1,[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],[\\"MaerialTableRecord\\",1,1,false,0],[\\"ObjectCollection\\",1,2,false,0],1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,-1,false,1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],[\\"AllObjectData\\",1,-1,false,1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],\\"\\",3]]]"`; exports[`创建 修改 撤销撤销 重做重做 撤销 重做 1`] = `"[1,3,[\\"BlockTableRecord\\",1,0,false,1,[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],[\\"MaerialTableRecord\\",1,1,false,0],[\\"ObjectCollection\\",1,2,false,0],1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],[\\"AllObjectData\\",1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],\\"\\",3]]]"`;
exports[`创建 修改 撤销撤销 重做重做 撤销 重做 2`] = `"[[\\"HistoricManage\\",1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,-1,false,1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],[\\"AllObjectData\\",1,-1,false,1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],\\"\\",3]]]]"`; exports[`创建 修改 撤销撤销 重做重做 撤销 重做 2`] = `"[[\\"HistoricManage\\",1,0,1,[\\"CommandHistoryRecord\\",1,\\"\\",2,0,1,[\\"HistorycRecord\\",1,[\\"RemoveObjectData\\",1,0],[\\"CreateObjectData\\",1,[[\\"Line\\",1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]]],\\"\\"],3,1,[\\"ObjectAllDataHistoryRecord\\",1,1,[\\"AllObjectData\\",1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[0,0,0],[0,0,0]]],[\\"AllObjectData\\",1,[1,1,3,false,7,-1,[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],1,[1,2,3],[0,0,0]]],\\"\\",3]]]]"`;
exports[`测试创建 1`] = `"[[\\"AllObjectData\\",1,-1,false,1,[]]]"`; exports[`测试创建 1`] = `"[[\\"AllObjectData\\",1,[]]]"`;
exports[`测试创建 2`] = `"[[\\"BlockTableRecord\\",1,-1,false,0]]"`; exports[`测试创建 2`] = `"[[\\"BlockTableRecord\\",1,-1,false,0]]"`;

@ -1,9 +1,9 @@
import * as THREE from 'three'; import * as THREE from 'three';
import { AllObjectData } from '../../src/DatabaseServices/AllObjectData';
import { BlockTableRecord } from '../../src/DatabaseServices/BlockTableRecord'; import { BlockTableRecord } from '../../src/DatabaseServices/BlockTableRecord';
import { CADFactory } from '../../src/DatabaseServices/CADFactory'; import { CADFactory } from '../../src/DatabaseServices/CADFactory';
import { CADFile } from '../../src/DatabaseServices/CADFile'; import { CADFile } from '../../src/DatabaseServices/CADFile';
import { AllObjectData, CADObject } from '../../src/DatabaseServices/CADObject'; import { CADObject } from '../../src/DatabaseServices/CADObject';
import { CommandHistoryRecord } from '../../src/DatabaseServices/CommandHistoryRecord'; import { CommandHistoryRecord } from '../../src/DatabaseServices/CommandHistoryRecord';
import { CreateObjectData } from '../../src/DatabaseServices/CreateObjectData'; import { CreateObjectData } from '../../src/DatabaseServices/CreateObjectData';
import { Database } from '../../src/DatabaseServices/Database'; import { Database } from '../../src/DatabaseServices/Database';

@ -0,0 +1,39 @@
import { Factory } from './CADFactory';
import { CADFile } from './CADFile';
import { ISerialize } from './ISerialize';
import { CADObject } from './CADObject';
/**
*
*
* @export
* @class AllObjectData
* @extends {IFileReadWrite}
*/
@Factory
export class AllObjectData implements ISerialize
{
file: CADFile;
constructor(obj?: CADObject)
{
this.file = new CADFile();
if (obj)
obj.WriteFile(this.file);
}
//#region -------------------------File-------------------------
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
//对象从文件中读取数据,初始化自身
ReadFile(file: CADFile)
{
let ver = file.Read();
let data = file.Read();
this.file.Data = data;
return this;
}
//对象将自身数据写入到文件.
WriteFile(file: CADFile)
{
file.Write(1);
file.Write(this.file.Data);
return this;
}
}

@ -69,9 +69,10 @@ export class CADFile
let className = tempFile.ReadString(); let className = tempFile.ReadString();
if (className) if (className)
{ {
if (!obj) if (obj === undefined)
{ {
obj = CADFactory.CreateObject(className); obj = CADFactory.CreateObject(className);
if (db !== undefined && obj instanceof CADObject)
obj.SetDefaultDb(db); obj.SetDefaultDb(db);
} }
obj.ReadFile(tempFile); obj.ReadFile(tempFile);

@ -1,9 +1,10 @@
import { Factory } from './CADFactory';
import { CADFile } from './CADFile'; import { CADFile } from './CADFile';
import { CommandHistoryRecord } from './CommandHistoryRecord'; import { CommandHistoryRecord } from './CommandHistoryRecord';
import { Database } from './Database'; import { Database } from './Database';
import { ISerialize } from './ISerialize'; import { ISerialize } from './ISerialize';
import { ObjectId } from './ObjectId'; import { ObjectId } from './ObjectId';
import { EraseEntityData } from './EraseEntityData';
import { AllObjectData } from './AllObjectData';
export abstract class CADObject export abstract class CADObject
{ {
@ -124,7 +125,7 @@ export abstract class CADObject
{ {
let file = new CADFile(); let file = new CADFile();
file.WriteObject(this); file.WriteObject(this);
let newObject = file.ReadObject(undefined) as this; let newObject = file.ReadObject() as this;
newObject.objectId = undefined; newObject.objectId = undefined;
newObject._db = undefined; newObject._db = undefined;
return newObject; return newObject;
@ -160,63 +161,3 @@ export abstract class CADObject
} }
} }
} }
/**
*
*
* @export
* @class AllObjectData
* @extends {IFileReadWrite}
*/
@Factory
export class AllObjectData extends CADObject
{
file: CADFile;
constructor(obj?: CADObject)
{
super();
this.file = new CADFile();
if (obj)
obj.WriteFile(this.file);
}
//#region -------------------------File-------------------------
//对象应该实现dataIn和DataOut的方法,为了对象的序列化和反序列化
//对象从文件中读取数据,初始化自身
ReadFile(file: CADFile)
{
super.ReadFile(file);
let ver = file.Read();
let data = file.Read();
this.file.Data = data;
return this;
}
//对象将自身数据写入到文件.
WriteFile(file: CADFile)
{
super.WriteFile(file);
file.Write(1);
file.Write(this.file.Data);
return this;
}
//#endregion
}
@Factory
export class EraseEntityData implements ISerialize
{
ReadFile(file: CADFile): this
{
this.isErase = file.Read();
return this;
}
WriteFile(file: CADFile): this
{
file.Write(this.isErase);
return this;
}
constructor(public isErase = true)
{
}
}

@ -1,6 +1,7 @@
import { Factory } from './CADFactory'; import { Factory } from './CADFactory';
import { CADFile } from './CADFile'; import { CADFile } from './CADFile';
import { CADObject, EraseEntityData } from './CADObject'; import { CADObject } from './CADObject';
import { EraseEntityData } from "./EraseEntityData";
import { HistorycRecord } from './HistorycRecord'; import { HistorycRecord } from './HistorycRecord';
import { ObjectAllDataHistoryRecord } from './ObjectAllDataHistoryRecord'; import { ObjectAllDataHistoryRecord } from './ObjectAllDataHistoryRecord';
import { ObjectId } from './ObjectId'; import { ObjectId } from './ObjectId';

@ -406,4 +406,3 @@ export class Entity extends CADObject
//#endregion //#endregion
} }

@ -0,0 +1,20 @@
import { Factory } from './CADFactory';
import { CADFile } from './CADFile';
import { ISerialize } from './ISerialize';
@Factory
export class EraseEntityData implements ISerialize
{
ReadFile(file: CADFile): this
{
this.isErase = file.Read();
return this;
}
WriteFile(file: CADFile): this
{
file.Write(this.isErase);
return this;
}
constructor(public isErase = true)
{
}
}

@ -1,6 +1,7 @@
import { Factory } from './CADFactory'; import { Factory } from './CADFactory';
import { CADFile } from './CADFile'; import { CADFile } from './CADFile';
import { AllObjectData, CADObject } from './CADObject'; import { CADObject } from './CADObject';
import { AllObjectData } from "./AllObjectData";
import { HistorycRecord } from './HistorycRecord'; import { HistorycRecord } from './HistorycRecord';
import { ObjectId } from './ObjectId'; import { ObjectId } from './ObjectId';

Loading…
Cancel
Save