private AppVersion Find_(string name) { try { string[] Apps = Directory.GetDirectories(RootPath); // массив приложений(папки с названиями всех приложений) string App = (from app in Apps where (Path.GetFileNameWithoutExtension(app.ToLower()) == name.ToLower()) select app).Single(); //Строка содержащая суть к нужному приложению(к версиям) string[] VersionsApps = (from vers in Directory.GetDirectories(App) orderby vers descending select vers.ToString()).ToArray(); //отсортированный по убыванию массив версий VersionNumber Vers = Directory.GetDirectories(App).Select(x => { VersionNumber version; VersionNumber.TryParse(Path.GetFileNameWithoutExtension(x.ToString()), out version); return(version); }).Where(x => x != null).OrderByDescending(x => x).First(); List <FileOfVersion> fileApp = new List <FileOfVersion>(); List <string> ListFile = new List <string>(); ListFile = GetFiles_app(name, Vers); for (int x = 0; x < ListFile.Count; x++) { FileOfVersion verss = new FileOfVersion(ListFile[x], fileContain(RootPath + "\\" + name + "\\" + Vers.ToString() + ListFile[x]), File.GetCreationTime(RootPath + "\\" + name + "\\" + Vers.ToString() + ListFile[x])); fileApp.Add(verss); } AppVersion res = null; res = new AppVersion(Path.GetFileNameWithoutExtension(App), Vers, fileApp); return(res); } catch (AppVersionIsNullException ex) { return(null); throw new AppVersionIsNullException(); } }
private AppVersion Find_(string name) { try { string[] Apps = Directory.GetDirectories(RootPath); // массив приложений(папки с названиями всех приложений) string App = (from app in Apps where (Path.GetFileNameWithoutExtension(app.ToLower()) == name.ToLower()) select app).Single(); //Строка содержащая суть к нужному приложению(к версиям) string[] VersionsApps = (from vers in Directory.GetFiles(App) orderby vers descending select vers.ToString()).ToArray(); string js = File.ReadAllText(VersionsApps[0]); JavaScriptSerializer serializer = new JavaScriptSerializer(); VersionMeta meta = serializer.Deserialize <VersionMeta>(js); VersionNumber Vers = new VersionNumber(meta.Num, meta.Bild); List <FileOfVersion> fileApp = new List <FileOfVersion>(); List <string> ListFile = new List <string>(); ListFile = GetFiles_app(name, Vers); for (int x = 0; x < ListFile.Count; x++) { FileOfVersion verss = new FileOfVersion(ListFile[x], fileContain(RootPath + "\\" + name + ListFile[x]), File.GetCreationTime(RootPath + "\\" + name + ListFile[x])); fileApp.Add(verss); } AppVersion res = new AppVersion(Path.GetFileNameWithoutExtension(App), Vers, fileApp); return(res); } catch (AppVersionIsNullException ex) { return(null); throw new AppVersionIsNullException(); } }
/// <summary>Получение содержимого файла версии приложения</summary><param name="version"></param><param name="name"></param><returns>byte[]</returns> public byte[] GetFile(AppVersion version, FileOfVersion name) { try { byte[] contains = null; mydb = new DB.SQLite.SQLite(BDPath); SQLiteCommand command = new SQLiteCommand(); command.CommandText = "SELECT * FROM FilesContains WHERE Applications = @Applications AND AppVersions = @AppVersions AND FilePath = @FilePath"; command.Parameters.Add("@Applications", DbType.String).Value = version.VersionName; command.Parameters.Add("@AppVersions", DbType.String).Value = version.VersionNumber.ToString(); command.Parameters.Add("@FilePath", DbType.String).Value = name.FilePath; DataRow[] datarows = mydb.Select(command); if (datarows == null) { logger.Add("Не удалось подключиться к базе данных"); throw new FilePathIsNullException(); } foreach (var dr in from DataRow dr in datarows select dr) { contains = (byte[])dr["Contains"]; } return(contains); } catch { throw new FilePathIsNullException();; } }
/// <summary>Список метаданных файлов приложения</summary><param name="ver"></param> public IList <FileOfVersion> FindFileOfVersions(AppVersion ver)// попробовать рпеределать не по индексу а по ключу { try { mydb = new DB.SQLite.SQLite(BDPath); SQLiteCommand command = new SQLiteCommand(); command.CommandText = "SELECT * FROM FilesContains WHERE Applications = @Applications"; command.Parameters.Add("@Applications", DbType.String).Value = ver.VersionName; DataRow[] datarows = mydb.Select(command); if (datarows == null) { logger.Add("Не удалось подключиться к базе данных"); throw new FilePathIsNullException(); } string[] versss = (from vers in datarows orderby vers.ItemArray[0] descending select vers.ItemArray[1].ToString()).ToArray();//поиск наибольшей версии VersionNumber Vers; VersionNumber.TryParse(versss[0], out Vers); List <FileOfVersion> fileApp = new List <FileOfVersion>(); foreach (var dr in from DataRow dr in datarows where Vers.ToString() == dr["AppVersions"].ToString().Trim() select dr)// Заполнение списка мета данных файлов { FileOfVersion verss = new FileOfVersion(dr["FilePath"].ToString(), (byte[])dr["Contains"], File.GetCreationTime(dr["FilePath"].ToString())); fileApp.Add(verss); } return(fileApp); } catch (VersionInFileSystemRepo.FilePathIsNullException ex) { logger.Add(ex); throw new FilePathIsNullException(); } }
private AppVersion Result(SQLiteCommand command) { string appVersion = ""; string app_name = ""; DataRow[] datarows = mydb.Select(command); if (datarows == null) { logger.Add("Не удалось подключиться к базе данных"); throw new FilePathIsNullException(); } string[] versss = (from vers in datarows orderby vers.ItemArray[0] descending select vers.ItemArray[0].ToString()).ToArray();//поиск наибольшей версии VersionNumber Vers; VersionNumber.TryParse(versss[0], out Vers); List <FileOfVersion> fileApp = new List <FileOfVersion>(); foreach (var dr in from DataRow dr in datarows where Vers.ToString() == dr.ItemArray[0].ToString().Trim() select dr) { app_name = dr["Applications"].ToString(); appVersion = dr["AppVersions"].ToString().Trim(); FileOfVersion verss = new FileOfVersion(dr["FileHash"].ToString().Trim(), Convert.ToDateTime(dr["CreationDate"].ToString().Trim()), new AppFileSize(Convert.ToInt32(dr["FileSize"].ToString().Trim())), dr["FilePath"].ToString().Trim()); fileApp.Add(verss); } VersionNumber version; VersionNumber.TryParse(appVersion, out version); AppVersion res = new AppVersion(app_name, version, fileApp); return(res); }
/// <summary>Список метаданных файлов приложения</summary><param name="ver"></param> public IList <FileOfVersion> FindFileOfVersions(AppVersion ver) { try { string[] Apps = Directory.GetDirectories(RootPath); // массив приложений(папки с названиями всех приложений) string App = (from app in Apps where (Path.GetFileNameWithoutExtension(app.ToLower()) == ver.VersionName.ToLower()) select app).Single(); //Строка содержащая суть к нужному приложению(к версиям) string VersionsApps = (from vers in Directory.GetFiles(App) where (Path.GetFileNameWithoutExtension(vers) == ver.VersionName + "-" + ver.VersionNumber.ToString()) select vers).Single(); //отсортированный по убыванию массив версий string js = File.ReadAllText(VersionsApps); JavaScriptSerializer serializer = new JavaScriptSerializer(); VersionMeta meta = serializer.Deserialize <VersionMeta>(js); VersionNumber Vers = new VersionNumber(meta.Num, meta.Bild); List <FileOfVersion> fileApp = new List <FileOfVersion>(); List <string> ListFile = new List <string>(); ListFile = GetFiles_app(ver.VersionName, Vers); for (int x = 0; x < ListFile.Count; x++) { FileOfVersion verss = new FileOfVersion(ListFile[x], fileContain(RootPath + "\\" + ver.VersionName + ListFile[x]), File.GetCreationTime(RootPath + "\\" + ver.VersionName + ListFile[x])); fileApp.Add(verss); } return(fileApp); } catch (FilePathIsNullException ex) { throw new FilePathIsNullException(); } }
/// <summary>Получение содержимого файла версии приложения</summary><param name="version"></param><param name="name"></param><returns>byte[]</returns> public byte[] GetFile(AppVersion version, FileOfVersion name) { try { return(fileContain(RootPath + "\\" + version.VersionName + "\\" + version.VersionNumber.ToString() + "\\" + name.FilePath)); } catch { throw new FilePathIsNullException();; } }
///<summary>Поиск последней версии приложения</summary><param name="version_name"></param><param name="versionNumber"></param> public AppVersion Find(string version_name, VersionNumber versionNumber) { string[] Apps = Directory.GetDirectories(RootPath); // массив приложений(папки с названиями всех приложений) string App = (from app in Apps where (Path.GetFileNameWithoutExtension(app.ToLower()) == version_name.ToLower()) select app).Single(); //Строка содержащая суть к нужному приложению(к версиям) List <FileOfVersion> fileApp = new List <FileOfVersion>(); List <string> ListFile = new List <string>(); ListFile = GetFiles_app(version_name, versionNumber); for (int x = 0; x < ListFile.Count; x++) { FileOfVersion verss = new FileOfVersion(ListFile[x], fileContain(RootPath + "\\" + version_name + ListFile[x]), File.GetCreationTime(RootPath + "\\" + version_name + ListFile[x])); fileApp.Add(verss); } AppVersion res = new AppVersion(Path.GetFileNameWithoutExtension(App), versionNumber, fileApp); return(res); }