private DataRow[] DtFilesVersions(SQLiteCommand command)
        {
            IPEndPoint ipPoint = new IPEndPoint(IPAddress.Parse(IPAddres), Port);
            Socket     socket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            socket.Connect(ipPoint);
            //добавление в модель данных
            CommandSQL commandSend = new CommandSQL();

            commandSend.CommandText = command.CommandText;
            foreach (SQLiteParameter par in command.Parameters)
            {
                commandSend.Parameters += "$" + par.ParameterName + "$" + par.Value;
            }
            //сериализация для отправки команды
            JavaScriptSerializer serializer = new JavaScriptSerializer();

            serializer.MaxJsonLength = int.MaxValue;
            string json = serializer.Serialize(commandSend);

            //отправка
            byte[] data = Encoding.Unicode.GetBytes(json);
            socket.Send(data);
            // получаем ответ
            data = new byte[256];      // буфер для ответа
            StringBuilder builder = new StringBuilder();
            int           bytes   = 0; // количество полученных байт

            do
            {
                bytes = socket.Receive(data, data.Length, 0);
                builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
            }while (socket.Available > 0);
            string test = builder.ToString();

            string[]  mystring = test.Split('$');
            DataTable table    = new DataTable();

            table.Columns.Add("AppVersion");
            table.Columns.Add("FileHash");
            table.Columns.Add("CreationDate");
            table.Columns.Add("FileSize");
            table.Columns.Add("FilePath");
            table.Columns.Add("DateCreateDB");
            table.Columns.Add("Applications");
            //dataRows[0].Table.Columns.Add("AppVersions",Type. );
            for (int i = 1; i < mystring.Length; i++)
            {
                JavaScriptSerializer serializer1 = new JavaScriptSerializer();
                serializer1.MaxJsonLength = int.MaxValue;
                FilesVersions meta = serializer1.Deserialize <FilesVersions>(mystring[i]);
                table.Rows.Add(new object[] { meta.AppVersions, meta.FileHash, meta.CreationDate, meta.FileSize, meta.FilePath, meta.DateCreateDB, meta.Applications });
            }
            socket.Shutdown(SocketShutdown.Both);
            socket.Close();
            DataRow[] dataRows = table.Rows.Cast <DataRow>().ToArray();
            return(dataRows);
        }
Exemple #2
0
 private async void Window_Closing(object sender, CancelEventArgs e)
 {
     if (IsComplete && IsCurrentPage)
     {
         var folderSelect = new FolderSelectDialog
         {
             Title = "Please select download location"
         };
         if (folderSelect.ShowDialog())
         {
             var folderPath = folderSelect.FileName;
             if (!string.IsNullOrEmpty(folderPath))
             {
                 var selectedVersions = FilesVersions.Where(v => v.IsSelected);
                 foreach (var selectedVersion in selectedVersions)
                 {
                     //TODO: write files on disk, we need to have a naming convention, because if the project has multiple languages file name is the same for each language
                     var file = await _projectService.DownloadFileVersion(selectedVersion.ProjectId, selectedVersion.LanguageFileId,
                                                                          selectedVersion.Version);
                 }
             }
         }
     }
 }
Exemple #3
0
        private FileVersion GetVersion(string domain, string path, string versionKey, Func <FileData, FileVersion> transform)
        {
            var existing = this.FilesVersions.All.FirstOrDefault(fv =>
                                                                 fv.File.SiteId == SiteService.CurrentSiteId &&
                                                                 fv.File.FilePath == path && fv.File.Domain == domain && fv.Key == versionKey);

            if (existing != null)
            {
                return(existing);
            }

            var fileObj = FilesData.All.Include(fd => fd.File).FirstOrDefault(fl =>
                                                                              fl.File.SiteId == SiteService.CurrentSiteId &&
                                                                              fl.File.FilePath == path && fl.File.Domain == domain);

            if (fileObj == null)
            {
                return(null);
            }

            var newVersion = transform(fileObj);

            if (newVersion == null)
            {
                return(null);
            }

            newVersion.File = fileObj.File;
            newVersion.Key  = versionKey;

            var res = FilesVersions.Add(newVersion);

            UnitOfWork.Commit();

            return(res);
        }
	    private void GroupFilesByFolderStructure(string selectedFolderPath)
	    {
		    var selectedVersionsGroups =
			    FilesVersions.Where(v => v.IsSelected).GroupBy(p => p.ProjectName); //Group by project name
		    foreach (var group in selectedVersionsGroups)
		    {
			    var projectName = group.Key;
			    var fileVersionsGroup = group.ToList().GroupBy(l => l.LanguageCode); //Group by language code
			    foreach (var languageGroup in fileVersionsGroup)
			    {
				    var languageCode = languageGroup.Key;
				    var languageFolderPath = Path.Combine(selectedFolderPath, projectName, languageCode);

				    var versionGroups = languageGroup.ToList().GroupBy(f => f.Version);
				    foreach (var versionGroup in versionGroups)
				    {
					    var versionFolderPath = Path.Combine(languageFolderPath, versionGroup.Key.ToString()); //Group by file version
					    var files = versionGroup.ToList();

					    SaveFiles(versionFolderPath, files);
				    }
			    }
		    }
	    }
Exemple #5
0
        public void Active()
        {
            IPEndPoint ipPoint      = new IPEndPoint(IPAddress.Parse(IPAddres), Port);
            Socket     listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            listenSocket.Bind(ipPoint);
            listenSocket.Listen(10);
            Console.WriteLine("Сервер запущен. Ожидание подключений...");
            while (true)
            {
                Socket        handler = listenSocket.Accept();
                StringBuilder builder = new StringBuilder();
                int           bytes   = 0;
                byte[]        data    = new byte[256];
                do
                {
                    bytes = handler.Receive(data);
                    builder.Append(Encoding.Unicode.GetString(data, 0, bytes));
                }while (handler.Available > 0);
                string sql = builder.ToString();

                JavaScriptSerializer serializer1 = new JavaScriptSerializer();
                serializer1.MaxJsonLength = int.MaxValue;
                CommandSQL commandSQL = serializer1.Deserialize <CommandSQL>(sql);

                string[] parsingSQL = commandSQL.CommandText.Split(' ');
                string   command    = "";
                string   table      = "";
                if (parsingSQL[0] == "SELECT")
                {
                    command = parsingSQL[0];
                    table   = parsingSQL[3];
                }
                else
                {
                    if (parsingSQL[0] == "INSERT")
                    {
                        command = parsingSQL[0];
                        table   = parsingSQL[2];
                    }
                    else
                    {
                        command = parsingSQL[0];
                        table   = parsingSQL[1];
                    }
                }
                switch (command)
                {
                case "SELECT":
                    switch (table)
                    {
                        #region Applications
                    case "Applications":
                        string       resultApplications = "";
                        Applications applications       = new Applications();
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplications = new SQLiteCommand();
                        commandApplications.CommandText = commandSQL.CommandText;
                        string[] paramApplications = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplications.Length; i += 2)
                        {
                            commandApplications.Parameters.AddWithValue(paramApplications[i], paramApplications[i + 1]);
                        }
                        DataRow[] datarowsApp = mydb.Select(commandApplications);
                        foreach (DataRow row in datarowsApp)
                        {
                            applications.ApplicationName = row[0].ToString();
                            JavaScriptSerializer serializer = new JavaScriptSerializer();
                            serializer.MaxJsonLength = int.MaxValue;
                            string json = serializer.Serialize(applications);
                            resultApplications += "$" + json;
                        }
                        data = Encoding.Unicode.GetBytes(resultApplications);
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region ApplicationInfo
                    case "ApplicationInfo":
                        string          resultApplicationInfo = "";
                        ApplicationInfo applicationInfo       = new ApplicationInfo();
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplicationInfo = new SQLiteCommand();
                        commandApplicationInfo.CommandText = commandSQL.CommandText;
                        string[] paramApplicationInfo = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplicationInfo.Length; i += 2)
                        {
                            commandApplicationInfo.Parameters.AddWithValue(paramApplicationInfo[i], paramApplicationInfo[i + 1]);
                        }
                        DataRow[] datarowsApplicationInfo = mydb.Select(commandApplicationInfo);
                        foreach (DataRow row in datarowsApplicationInfo)
                        {
                            applicationInfo.Application    = row[0].ToString();
                            applicationInfo.AppVersion     = row[1].ToString();
                            applicationInfo.AppDiscription = row[2].ToString();
                            applicationInfo.Flag           = row[3].ToString();
                            JavaScriptSerializer serializer = new JavaScriptSerializer();
                            serializer.MaxJsonLength = int.MaxValue;
                            string json = serializer.Serialize(applicationInfo);
                            resultApplicationInfo += "$" + json;
                        }
                        data = Encoding.Unicode.GetBytes(resultApplicationInfo);
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesContains
                    case "FilesContains":
                        string        resultFilesContains = "";
                        FilesContains filesContains       = new FilesContains();
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesContains = new SQLiteCommand();
                        commandFilesContains.CommandText = commandSQL.CommandText;
                        string[] paramFilesContains = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramFilesContains.Length; i += 2)
                        {
                            commandFilesContains.Parameters.AddWithValue(paramFilesContains[i], paramFilesContains[i + 1]);
                        }
                        DataRow[] datarowsFilesContains = mydb.Select(commandFilesContains);
                        foreach (DataRow row in datarowsFilesContains)
                        {
                            filesContains.Applications = row[0].ToString();
                            filesContains.AppVersions  = row[1].ToString();
                            filesContains.FilePath     = row[2].ToString();
                            filesContains.DateCreateDB = row[3].ToString();
                            filesContains.Contains     = (byte[])row[4];
                            JavaScriptSerializer serializer = new JavaScriptSerializer();
                            serializer.MaxJsonLength = int.MaxValue;
                            string json = serializer.Serialize(filesContains);
                            resultFilesContains += "$" + json;
                        }
                        data = Encoding.Unicode.GetBytes(resultFilesContains);
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesVersions
                    case "FilesVersions":
                        string        resultFilesVersions = "";
                        FilesVersions filesVersions       = new FilesVersions();
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesVersions = new SQLiteCommand();
                        commandFilesVersions.CommandText = commandSQL.CommandText;
                        if (commandSQL.Parameters != null)
                        {
                            string[] paramFilesVersions = commandSQL.Parameters.Split('$');
                            for (int i = 1; i < paramFilesVersions.Length; i += 2)
                            {
                                commandFilesVersions.Parameters.AddWithValue(paramFilesVersions[i], paramFilesVersions[i + 1]);
                            }
                        }
                        DataRow[] datarowsFilesVersions = mydb.Select(commandFilesVersions);
                        foreach (DataRow row in datarowsFilesVersions)
                        {
                            filesVersions.AppVersions  = row[0].ToString();
                            filesVersions.FileHash     = row[1].ToString();
                            filesVersions.CreationDate = row[2].ToString();
                            filesVersions.FileSize     = Convert.ToInt32(row[3].ToString());
                            filesVersions.FilePath     = row[4].ToString();
                            filesVersions.DateCreateDB = row[5].ToString();
                            filesVersions.Applications = row[6].ToString();
                            JavaScriptSerializer serializer = new JavaScriptSerializer();
                            serializer.MaxJsonLength = int.MaxValue;
                            string json = serializer.Serialize(filesVersions);
                            resultFilesVersions += "$" + json;
                        }
                        data = Encoding.Unicode.GetBytes(resultFilesVersions);
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion
                    }
                    break;

                case "INSERT":
                    switch (table)
                    {
                        #region Applications
                    case "Applications":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplications = new SQLiteCommand();
                        commandApplications.CommandText = commandSQL.CommandText;
                        string[] paramApplications = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplications.Length; i += 2)
                        {
                            commandApplications.Parameters.AddWithValue(paramApplications[i], paramApplications[i + 1]);
                        }
                        mydb.Insert(commandApplications);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region ApplicationInfo
                    case "ApplicationInfo":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplicationInfo = new SQLiteCommand();
                        commandApplicationInfo.CommandText = commandSQL.CommandText;
                        string[] paramApplicationInfo = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplicationInfo.Length; i += 2)
                        {
                            commandApplicationInfo.Parameters.AddWithValue(paramApplicationInfo[i], paramApplicationInfo[i + 1]);
                        }
                        mydb.Insert(commandApplicationInfo);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesContains
                    case "FilesContains":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesContains = new SQLiteCommand();
                        commandFilesContains.CommandText = commandSQL.CommandText;
                        string[] paramFilesContains = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramFilesContains.Length; i += 2)
                        {
                            commandFilesContains.Parameters.AddWithValue(paramFilesContains[i], paramFilesContains[i + 1]);
                        }
                        mydb.Insert(commandFilesContains);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesVersions
                    case "FilesVersions":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesVersions = new SQLiteCommand();
                        commandFilesVersions.CommandText = commandSQL.CommandText;
                        string[] paramFilesVersions = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramFilesVersions.Length; i += 2)
                        {
                            commandFilesVersions.Parameters.AddWithValue(paramFilesVersions[i], paramFilesVersions[i + 1]);
                        }
                        mydb.Insert(commandFilesVersions);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion
                    }
                    break;

                case "Update":
                    switch (table)
                    {
                        #region Applications
                    case "Applications":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplications = new SQLiteCommand();
                        commandApplications.CommandText = commandSQL.CommandText;
                        string[] paramApplications = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplications.Length; i += 2)
                        {
                            commandApplications.Parameters.AddWithValue(paramApplications[i], paramApplications[i + 1]);
                        }
                        mydb.Insert(commandApplications);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region ApplicationInfo
                    case "ApplicationInfo":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandApplicationInfo = new SQLiteCommand();
                        commandApplicationInfo.CommandText = commandSQL.CommandText;
                        string[] paramApplicationInfo = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramApplicationInfo.Length; i += 2)
                        {
                            commandApplicationInfo.Parameters.AddWithValue(paramApplicationInfo[i], paramApplicationInfo[i + 1]);
                        }
                        mydb.Insert(commandApplicationInfo);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesContains
                    case "FilesContains":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesContains = new SQLiteCommand();
                        commandFilesContains.CommandText = commandSQL.CommandText;
                        string[] paramFilesContains = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramFilesContains.Length; i += 2)
                        {
                            commandFilesContains.Parameters.AddWithValue(paramFilesContains[i], paramFilesContains[i + 1]);
                        }
                        mydb.Insert(commandFilesContains);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion

                        #region FilesVersions
                    case "FilesVersions":
                        mydb = new SQLite(AppDomain.CurrentDomain.BaseDirectory);
                        SQLiteCommand commandFilesVersions = new SQLiteCommand();
                        commandFilesVersions.CommandText = commandSQL.CommandText;
                        string[] paramFilesVersions = commandSQL.Parameters.Split('$');
                        for (int i = 1; i < paramFilesVersions.Length; i += 2)
                        {
                            commandFilesVersions.Parameters.AddWithValue(paramFilesVersions[i], paramFilesVersions[i + 1]);
                        }
                        mydb.Insert(commandFilesVersions);
                        data = Encoding.Unicode.GetBytes("True");
                        handler.Send(data);
                        handler.Shutdown(SocketShutdown.Both);
                        handler.Close();
                        break;
                        #endregion
                    }
                    break;
                }
            }
        }