/// <summary> /// Метод добавления новой записи, создаёт новый файл с записью /// </summary> /// <param name="objectToAdd">Обьект для добавления</param> /// <returns>Обнвленная коллекция</returns> public ICollection <DataBaseObject> Add(DataBaseObject objectToAdd) { switch (mode) { case ("json"): string newFileNameJson = path + "\\newRecordDB-" + objectToAdd.GetHashCode().ToString() + ".json"; BinaryWriter binaryWriterJson = new BinaryWriter(File.Create(newFileNameJson)); DllFileInfo writableObjJson = (DllFileInfo)objectToAdd; LinkedList <DllFileInfo> listForWriting = new LinkedList <DllFileInfo>(); listForWriting.AddLast(writableObjJson); binaryWriterJson.Write(JsonConvert.SerializeObject(listForWriting)); binaryWriterJson.Close(); break; case ("bin"): string newFileName = path + "\\newRecordDB-" + objectToAdd.GetHashCode().ToString() + ".bin"; BinaryWriter binaryWriter = new BinaryWriter(File.Create(newFileName)); AccessInfo writableObj = (AccessInfo)objectToAdd; binaryWriter.Write(writableObj.SystemId.ToString()); binaryWriter.Write(writableObj.Login); binaryWriter.Write(writableObj.Hashcode); binaryWriter.Write(writableObj.Password); binaryWriter.Write(writableObj.Email); binaryWriter.Close(); break; } return(GetAll()); }
void OnEnable() { thisDataBaseObject = (DataBaseObject)target; selectedObjectType = thisDataBaseObject.oObjectType; dietIndex = thisDataBaseObject.oDiet; behaviourIndex = thisDataBaseObject.oBehaviourNumber; floraTypeIndex = thisDataBaseObject.oFloraType; }
/// <summary> /// Обновляет данные существующей записи в базе данных /// </summary> /// <param name="objectToAdd"> Объект наследуемый от DataBaseObject (Либо AccessInfo, либо DllFileInfo) </param> public ICollection <DataBaseObject> Update(DataBaseObject objectToAdd) { using (ISession session = HybernateHelper.OpenSession(path)) { using (ITransaction transaction = session.BeginTransaction()) { session.Update(objectToAdd); transaction.Commit(); } } return(GetAll()); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseStaticFiles(); app.UseRouting(); app.UseCors(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute("default", "{controller=Games}/{action=List}"); }); using (var scope = app.ApplicationServices.CreateScope()) { DateBaseContent content = app.ApplicationServices.GetRequiredService <Data.DateBaseContent>(); DataBaseObject.Initial(content); } }
/// <summary> /// Удаление записи из файловой БД /// </summary> /// <param name="objectToDelete">Сущность для удаления</param> /// <returns>Обновлённая коллекция</returns> public ICollection <DataBaseObject> Delete(DataBaseObject objectToDelete) { string[] files; switch (mode) { case ("json"): files = Directory.GetFiles(path, "*.json"); BinaryReader binaryReaderJson; DllFileInfo objectToDeleteJson = (DllFileInfo)objectToDelete; bool rewriteJson = false; ICollection <DataBaseObject> rewriteCollection = new LinkedList <DataBaseObject>(); for (int i = 0; i < files.Length; i++) { binaryReaderJson = new BinaryReader(File.OpenRead(files[i])); rewriteCollection = new LinkedList <DataBaseObject>(); string jsonString = ""; while (binaryReaderJson.PeekChar() > -1) { jsonString = jsonString + binaryReaderJson.ReadString(); } LinkedList <DllFileInfo> currObjects = new LinkedList <DllFileInfo>(); if (jsonString.Length > 2) { currObjects = JsonConvert.DeserializeObject <LinkedList <DllFileInfo> >(jsonString); if (currObjects.Select(x => x.SystemId.Equals(objectToDeleteJson.SystemId)).Count() > 0) //danger - lambda { currObjects.Remove(currObjects.First(x => x.SystemId.Equals(objectToDeleteJson.SystemId))); rewriteJson = true; } } binaryReaderJson.Close(); if (rewriteJson) { BinaryWriter binaryWriter = new BinaryWriter(File.Create(files[i])); binaryWriter.Write(JsonConvert.SerializeObject(currObjects)); binaryWriter.Close(); break; } } break; case ("bin"): files = Directory.GetFiles(path, "*.bin"); BinaryReader binaryReader; AccessInfo objectToDeleteBin = (AccessInfo)objectToDelete; bool rewrite = false; ICollection <DataBaseObject> rewriteCollectionBin = new LinkedList <DataBaseObject>(); for (int i = 0; i < files.Length; i++) { binaryReader = new BinaryReader(File.OpenRead(files[i])); rewriteCollectionBin = new LinkedList <DataBaseObject>(); while (binaryReader.PeekChar() > -1) { AccessInfo currentInfo = new AccessInfo( Guid.Parse(binaryReader.ReadString()), //Guid binaryReader.ReadString(), //login binaryReader.ReadString(), //hash binaryReader.ReadString(), //pass binaryReader.ReadString()); //email if (objectToDeleteBin.SystemId.Equals(currentInfo.SystemId)) { rewrite = true; } else { rewriteCollectionBin.Add(currentInfo); } } binaryReader.Close(); if (rewrite) { BinaryWriter binaryWriter = new BinaryWriter(File.Create(files[i])); for (int j = 0; j < rewriteCollectionBin.Count(); j++) { AccessInfo accessInfo = (AccessInfo)rewriteCollectionBin.ElementAt(j); binaryWriter.Write(accessInfo.SystemId.ToString()); binaryWriter.Write(accessInfo.Login); binaryWriter.Write(accessInfo.Hashcode); binaryWriter.Write(accessInfo.Password); binaryWriter.Write(accessInfo.Email); } binaryWriter.Close(); break; } } break; } return(GetAll()); }
/// <summary> /// 创建数据库对象 /// </summary> /// <param name="objName"></param> /// <returns></returns> public string GetCreateTableSql(DataBaseObject objName) { string createSql = ""; switch (objName) { case DataBaseObject.TI18NMODULE: createSql = "CREATE TABLE TI18NMODULE " + "( " + " NAME VARCHAR(31) NOT NULL," + " DESCRIPTION VARCHAR(127) NOT NULL," + " NEXT_SEQ INTEGER DEFAULT 0 NOT NULL " + " )"; break; case DataBaseObject.TI18NCATALOG: createSql = "CREATE TABLE TI18NCATALOG " + "( " + " ID CHAR(50) NOT NULL," + " MODULE VARCHAR(31) NOT NULL," + " NAME VARCHAR(31) NOT NULL," + " KIND CHAR(1 BYTE) NOT NULL," + " DESCRIPTION VARCHAR(127)," + " NEXT_SEQ INTEGER DEFAULT 0 NOT NULL" + ")"; break; case DataBaseObject.TI18NCULTURE: createSql = " CREATE TABLE TI18NCULTURE" + "(" + " NAME VARCHAR(31) NOT NULL," + " DESCRIPTION VARCHAR(63) DEFAULT ' ' NOT NULL," + " ISDEFAULT CHAR(1) DEFAULT 0 NOT NULL," + " ICUNAME VARCHAR(31) DEFAULT ' ' NOT NULL" + " )"; break; case DataBaseObject.TI18NRESKIND: createSql = " CREATE TABLE TI18NRESKIND" + " (" + " NAME CHAR(1 BYTE)," + " DESCRIPTION VARCHAR2(63 BYTE)" + " )"; break; case DataBaseObject.TI18NRESLEVEL: createSql = " CREATE TABLE TI18NRESLEVEL" + " (" + " NAME VARCHAR2(30 BYTE) NOT NULL," + " DESCRIPTION VARCHAR2(100 BYTE)" + " )"; break; //资源表 case DataBaseObject.TI18NLOCAL: createSql = " CREATE TABLE TI18NLOCAL" + " (" + " ID CHAR(12) NOT NULL," + " CULTURE VARCHAR(31) NOT NULL," + " CONTENT VARCHAR(4000) NOT NULL" + " )"; break; //关系表(资源--等级) case DataBaseObject.TI18NRES: createSql = " CREATE TABLE TI18NRES" +" (" +" ID CHAR(12 BYTE) NOT NULL," +" \"LEVEL\" VARCHAR(30 BYTE)" +" )"; break; //关系表(资源--资源包) case DataBaseObject.TI18NRESCATALOG: createSql = " CREATE TABLE TI18NRESCATALOG" +" (" +" CID CHAR(50 BYTE)," +" RID CHAR(12 BYTE)" +" )"; break; //用户 case DataBaseObject.TI18NUSERINFO: createSql = " CREATE TABLE TI18NUSERINFO" + " (" + " ID VARCHAR2(50 BYTE) DEFAULT 0 NOT NULL," + " ENAME VARCHAR2(18 BYTE) DEFAULT ' '," + " CNAME VARCHAR2(50 BYTE) DEFAULT ' '," + " PASSWORD VARCHAR2(50 BYTE) DEFAULT ' '," + " ISADMIN CHAR(1 BYTE) DEFAULT '0'" + " )"; break; case DataBaseObject.TI18NUSERMODULE: createSql = " CREATE TABLE TI18NUSERMODULE" + " (" + " USERID VARCHAR2(50 BYTE)," + " NAME VARCHAR2(31 BYTE)" + " )"; break; //日志 case DataBaseObject.TI18NLOGEVENT: createSql = " CREATE TABLE TI18NLOGEVENT" + " (" + " ID VARCHAR(50) NOT NULL," + " LOG_TIME VARCHAR(16)," + " LOG_USERID VARCHAR(50)," + " LOG_USERCNAME VARCHAR(50)," + " LOG_MESSAGE VARCHAR(500)" + " )"; break; case DataBaseObject.VI18NRESOURCES: createSql = " CREATE VIEW VI18NRESOURCES" +" (" +" ID," +" CATALOGID," +" MODULE," +" CATALOGNAME," +" KINDID," +" KINDNAME," +" DESCRIPTION," +" RESKEY," +" CULTUREID," +" CULTURENAME," +" RESCONTENT," +" LEVELID," +" LEVELNAME" +" )" +" AS" +" SELECT DISTINCT ti18nlocal.ID || '_' || ti18nlocal.CULTURE AS ID," +" ti18ncatalog.ID AS catalogID," +" ti18ncatalog.MODULE AS module," +" ti18ncatalog.NAME AS catalogName," +" ti18ncatalog.KIND AS kindID," +" ti18nreskind.description AS kindName," +" ti18ncatalog.DESCRIPTION," +" ti18nlocal.ID AS reskey," +" ti18nlocal.CULTURE AS cultureID," +" ti18nculture.name AS cultureNAME," +" ti18nlocal.CONTENT AS rescontent," +" ti18nres.\"LEVEL\" AS levelID," +" ti18nreslevel.description AS levelName" +" FROM ti18ncatalog," +" ti18nlocal," +" ti18nres," +" ti18nrescatalog," +" ti18nreslevel," +" ti18nreskind," +" ti18nculture" +" WHERE ti18nlocal.id = ti18nres.id" +" AND ti18nlocal.id = ti18nrescatalog.rid" +" AND ti18nrescatalog.cid = ti18ncatalog.id" +" AND ti18ncatalog.KIND = ti18nreskind.name" +" AND ti18nlocal.culture = ti18nculture.name" +" AND ti18nres.\"LEVEL\" = ti18nreslevel.name;"; break; case DataBaseObject.TI18NANALYZERESULT: createSql = " CREATE TABLE TI18NANALYZERESULT" + "(" + " ID VARCHAR(50) NOT NULL," + " ITEMNAME VARCHAR(100) DEFAULT ' '," + " ITEMTYPE VARCHAR(2) DEFAULT ' '," + " ITEMRELATIVEPATH VARCHAR(200) DEFAULT ' '," + " PROJECT VARCHAR(50) DEFAULT 'XXXX'," + " RESNAME VARCHAR(100) DEFAULT ' '," + " RESVALUE VARCHAR(4000) DEFAULT ' '," + " ROWINDEXINITEM NUMBER DEFAULT -1," + " CULTURE VARCHAR(31) DEFAULT 'zh-CHS'," + " GRIDNAME VARCHAR(50) DEFAULT ' '" + ")"; break; case DataBaseObject.TI18NANALYZELOCAL: createSql="CREATE TABLE TI18NANALYZELOCAL" +"(" +" ID VARCHAR(50) NOT NULL," +" keyTo VARCHAR(12) DEFAULT ' '," +" resContent VARCHAR(4000) DEFAULT ' ' " +")"; break; } return createSql; }
/// <summary> /// 创建数据库对象 /// </summary> /// <param name="objName"></param> /// <returns></returns> public string GetCreateTableSql(DataBaseObject objName) { string createSql = ""; switch (objName) { case DataBaseObject.TI18NMODULE: createSql = "CREATE TABLE TI18NMODULE " + "( " + " NAME VARCHAR(31) NOT NULL," + " DESCRIPTION VARCHAR(127) NOT NULL," + " NEXT_SEQ INTEGER DEFAULT 0 NOT NULL " + " )"; break; case DataBaseObject.TI18NCATALOG: createSql = "CREATE TABLE TI18NCATALOG " + "( " + " ID CHAR(50) NOT NULL," + " MODULE VARCHAR(31) NOT NULL," + " NAME VARCHAR(31) NOT NULL," + " KIND CHAR(1 BYTE) NOT NULL," + " DESCRIPTION VARCHAR(127)," + " NEXT_SEQ INTEGER DEFAULT 0 NOT NULL" + ")"; break; case DataBaseObject.TI18NCULTURE: createSql = " CREATE TABLE TI18NCULTURE" + "(" + " NAME VARCHAR(31) NOT NULL," + " DESCRIPTION VARCHAR(63) DEFAULT ' ' NOT NULL," + " ISDEFAULT CHAR(1) DEFAULT 0 NOT NULL," + " ICUNAME VARCHAR(31) DEFAULT ' ' NOT NULL" + " )"; break; case DataBaseObject.TI18NRESKIND: createSql = " CREATE TABLE TI18NRESKIND" + " (" + " NAME CHAR(1 BYTE)," + " DESCRIPTION VARCHAR2(63 BYTE)" + " )"; break; case DataBaseObject.TI18NRESLEVEL: createSql = " CREATE TABLE TI18NRESLEVEL" + " (" + " NAME VARCHAR2(30 BYTE) NOT NULL," + " DESCRIPTION VARCHAR2(100 BYTE)" + " )"; break; //资源表 case DataBaseObject.TI18NLOCAL: createSql = " CREATE TABLE TI18NLOCAL" + " (" + " ID CHAR(12) NOT NULL," + " CULTURE VARCHAR(31) NOT NULL," + " CONTENT VARCHAR(4000) NOT NULL" + " )"; break; //关系表(资源--等级) case DataBaseObject.TI18NRES: createSql = " CREATE TABLE TI18NRES" + " (" + " ID CHAR(12 BYTE) NOT NULL," + " \"LEVEL\" VARCHAR(30 BYTE)" + " )"; break; //关系表(资源--资源包) case DataBaseObject.TI18NRESCATALOG: createSql = " CREATE TABLE TI18NRESCATALOG" + " (" + " CID CHAR(50 BYTE)," + " RID CHAR(12 BYTE)" + " )"; break; //用户 case DataBaseObject.TI18NUSERINFO: createSql = " CREATE TABLE TI18NUSERINFO" + " (" + " ID VARCHAR2(50 BYTE) DEFAULT 0 NOT NULL," + " ENAME VARCHAR2(18 BYTE) DEFAULT ' '," + " CNAME VARCHAR2(50 BYTE) DEFAULT ' '," + " PASSWORD VARCHAR2(50 BYTE) DEFAULT ' '," + " ISADMIN CHAR(1 BYTE) DEFAULT '0'" + " )"; break; case DataBaseObject.TI18NUSERMODULE: createSql = " CREATE TABLE TI18NUSERMODULE" + " (" + " USERID VARCHAR2(50 BYTE)," + " NAME VARCHAR2(31 BYTE)" + " )"; break; //日志 case DataBaseObject.TI18NLOGEVENT: createSql = " CREATE TABLE TI18NLOGEVENT" + " (" + " ID VARCHAR(50) NOT NULL," + " LOG_TIME VARCHAR(16)," + " LOG_USERID VARCHAR(50)," + " LOG_USERCNAME VARCHAR(50)," + " LOG_MESSAGE VARCHAR(500)" + " )"; break; case DataBaseObject.VI18NRESOURCES: createSql = " CREATE VIEW VI18NRESOURCES" + " (" + " ID," + " CATALOGID," + " MODULE," + " CATALOGNAME," + " KINDID," + " KINDNAME," + " DESCRIPTION," + " RESKEY," + " CULTUREID," + " CULTURENAME," + " RESCONTENT," + " LEVELID," + " LEVELNAME" + " )" + " AS" + " SELECT DISTINCT ti18nlocal.ID || '_' || ti18nlocal.CULTURE AS ID," + " ti18ncatalog.ID AS catalogID," + " ti18ncatalog.MODULE AS module," + " ti18ncatalog.NAME AS catalogName," + " ti18ncatalog.KIND AS kindID," + " ti18nreskind.description AS kindName," + " ti18ncatalog.DESCRIPTION," + " ti18nlocal.ID AS reskey," + " ti18nlocal.CULTURE AS cultureID," + " ti18nculture.name AS cultureNAME," + " ti18nlocal.CONTENT AS rescontent," + " ti18nres.\"LEVEL\" AS levelID," + " ti18nreslevel.description AS levelName" + " FROM ti18ncatalog," + " ti18nlocal," + " ti18nres," + " ti18nrescatalog," + " ti18nreslevel," + " ti18nreskind," + " ti18nculture" + " WHERE ti18nlocal.id = ti18nres.id" + " AND ti18nlocal.id = ti18nrescatalog.rid" + " AND ti18nrescatalog.cid = ti18ncatalog.id" + " AND ti18ncatalog.KIND = ti18nreskind.name" + " AND ti18nlocal.culture = ti18nculture.name" + " AND ti18nres.\"LEVEL\" = ti18nreslevel.name;"; break; case DataBaseObject.TI18NANALYZERESULT: createSql = " CREATE TABLE TI18NANALYZERESULT" + "(" + " ID VARCHAR(50) NOT NULL," + " ITEMNAME VARCHAR(100) DEFAULT ' '," + " ITEMTYPE VARCHAR(2) DEFAULT ' '," + " ITEMRELATIVEPATH VARCHAR(200) DEFAULT ' '," + " PROJECT VARCHAR(50) DEFAULT 'XXXX'," + " RESNAME VARCHAR(100) DEFAULT ' '," + " RESVALUE VARCHAR(4000) DEFAULT ' '," + " ROWINDEXINITEM NUMBER DEFAULT -1," + " CULTURE VARCHAR(31) DEFAULT 'zh-CHS'," + " GRIDNAME VARCHAR(50) DEFAULT ' '" + ")"; break; case DataBaseObject.TI18NANALYZELOCAL: createSql = "CREATE TABLE TI18NANALYZELOCAL" + "(" + " ID VARCHAR(50) NOT NULL," + " keyTo VARCHAR(12) DEFAULT ' '," + " resContent VARCHAR(4000) DEFAULT ' ' " + ")"; break; } return(createSql); }