private bool NeedUpdateStringPosition(StringPosition stringPosition, StringData stringData)
        {
            if (stringPosition.Date != stringData.Date ||
                stringPosition.AnonymousCompanyName != stringData.AnonymousCompanyName ||
                stringPosition.VacancyName != stringData.VacancyName ||
                stringPosition.VacancyAdditional != stringData.VacancyAdditional ||
                stringPosition.Requirement != stringData.RequirementsData.Value ||
                stringPosition.AgeFrom != stringData.RequirementsData.AgeData.From ||
                stringPosition.AgeTo != stringData.RequirementsData.AgeData.To ||
                stringPosition.GenderId != stringData.RequirementsData.GenderId ||
                stringPosition.EducationId != stringData.RequirementsData.EducationId ||
                stringPosition.CitizenshipId != stringData.RequirementsData.CitizenshipId ||
                stringPosition.ExperienceId != stringData.RequirementsData.ExperienceData.Id ||
                stringPosition.ExperienceValue != stringData.RequirementsData.ExperienceData.Value ||
                stringPosition.Responsibility != stringData.Responsibility ||
                stringPosition.Condition != stringData.ConditionsData.Value ||
                stringPosition.WorkGraphicId != stringData.ConditionsData.WorkGraphicData.Id ||
                stringPosition.WorkGraphic != stringData.ConditionsData.WorkGraphicData.Comment ||
                stringPosition.SalaryFrom != stringData.ConditionsData.SalaryData.From ||
                stringPosition.SalaryTo != stringData.ConditionsData.SalaryData.To ||
                stringPosition.SalaryDescription != stringData.ConditionsData.SalaryData.Description ||
                stringPosition.IsSalaryPercent != stringData.ConditionsData.SalaryData.IsSalaryPercent ||
                stringPosition.ContactFirstName != stringData.ContactData.FirstName ||
                stringPosition.IsFood != stringData.ConditionsData.IsFood ||
                stringPosition.IsHousing != stringData.ConditionsData.IsHousing ||
                stringPosition.ContactSecondName != stringData.ContactData.SecondName ||
                stringPosition.ContactLastName != stringData.ContactData.LastName ||
                stringPosition.Logo != Base64ToBytesConverter.Convert(stringData.LogoData.Base64String) ||
                stringPosition.LogoFileName != stringData.LogoData.FileName)
            {
                return(true);
            }

            return(false);
        }
            public object Add(string text)
            {
                if (filePath == null)
                {
                    // on 64-bit, we have as much memory as we want
                    // so no need to write to the file at all
                    return(text);
                }

                // Tradeoff between not crashing with OOM on large binlogs and
                // keeping the playback of smaller binlogs relatively fast.
                // It is slow to store all small strings in the file and constantly
                // seek to retrieve them. Instead we'll keep storing small strings
                // in memory until we allocate 2 GB. After that, all strings go to
                // the file.
                // Win-win: small binlog playback is fast and large binlog playback
                // doesn't OOM.
                if (text.Length <= StringSizeThreshold && totalAllocatedShortStrings < 1_000_000_000)
                {
                    totalAllocatedShortStrings += text.Length;
                    return(text);
                }

                var stringPosition = new StringPosition();

                stringPosition.FilePosition = stream.Position;

                streamWriter.Write(text);

                stringPosition.StringLength = text.Length;
                return(stringPosition);
            }
        private static IEnumerable <StringPosition> ToStringPos(IReadOnlyList <int> positions)
        {
            var stringPos = new StringPosition[positions.Count / 2];

            for (int i = 0; i < stringPos.Length; i++)
            {
                stringPos[i] = new StringPosition(positions[2 * i], positions[2 * i + 1]);
            }

            return(stringPos);
        }
        public StringPosition SetString(StringPosition stringPosition, bool isActual, DbTransaction dbTran)
        {
            var stringId     = stringPosition.Id;
            var lastEditDate = stringPosition.BeginDate;

            SetString(
                dbTran: dbTran,
                stringId: ref stringId,
                parentId: 0,
                orderPositionId: stringPosition.OrderPositionId,
                companyId: stringPosition.CompanyId,
                anonymousCompanyName: stringPosition.AnonymousCompanyName,
                businessUnitId: stringPosition.BusinessUnitId,
                date: stringPosition.Date,
                vacancyName: stringPosition.VacancyName,
                vacancyAdditional: stringPosition.VacancyAdditional,
                vacancyCode: stringPosition.VacancyCode,
                responsibility: stringPosition.Responsibility,
                requirement: stringPosition.Requirement,
                ageFrom: stringPosition.AgeFrom,
                ageTo: stringPosition.AgeTo,
                genderId: stringPosition.GenderId,
                educationId: stringPosition.EducationId,
                experienceId: stringPosition.ExperienceId,
                experienceValue: stringPosition.ExperienceValue,
                citizenshipId: stringPosition.CitizenshipId,
                condition: stringPosition.Condition,
                salaryFrom: stringPosition.SalaryFrom,
                salaryTo: stringPosition.SalaryTo,
                salaryDescription: stringPosition.SalaryDescription,
                currencyId: stringPosition.CurrencyId,
                workGraphicId: stringPosition.WorkGraphicId,
                workGraphicComm: stringPosition.WorkGraphic,
                keywords: stringPosition.Keywords,
                logo: stringPosition.Logo,
                logoFileName: stringPosition.LogoFileName,
                contactFirstName: stringPosition.ContactFirstName,
                contactSecondName: stringPosition.ContactSecondName,
                contactLastName: stringPosition.ContactLastName,
                text: stringPosition.Text,
                isSalaryPercent: stringPosition.IsSalaryPercent,
                isHousing: stringPosition.IsHousing,
                isFood: stringPosition.IsFood,
                isActual: isActual,
                editUserId: _editUserId,
                lastEditDate: ref lastEditDate);

            stringPosition.Id        = stringId;
            stringPosition.BeginDate = lastEditDate;

            return(stringPosition);
        }
Exemple #5
0
        public void Add(string s)
        {
            if (s.Length > 255)
            {
                throw new ArgumentOutOfRangeException("string too big.");
            }
            this._strings.Add(s);
            this._dirty = true;
            var listIdx = _strings.Count - 1;

            for (byte i = 0; i < s.Length; i++)
            {
                var stringPosition = new StringPosition(listIdx, i);
                this._positions.Add(stringPosition);
            }
        }
        public StringPosition Create(int businessUnitId, int companyId, int orderPositionId, StringData stringData)
        {
            var stringPosition = new StringPosition
            {
                Id                   = 0,                                                // Идентификатор строки
                CompanyId            = companyId,                                        // Идентификатор компании
                OrderPositionId      = orderPositionId,
                AnonymousCompanyName = stringData.AnonymousCompanyName,                  // Название компании для анонимных вакансий
                BusinessUnitId       = businessUnitId,                                   // Идентификатор бизнес еденицы
                Date                 = null,                                             // Дата создания строки
                VacancyName          = stringData.VacancyName,                           // Название вакансии
                VacancyAdditional    = stringData.VacancyAdditional,                     // Дополнение к названию вакансии
                VacancyCode          = null,                                             // Код вакансии
                Responsibility       = stringData.Responsibility,                        // Обязаности
                Requirement          = stringData.RequirementsData.Value,                // Требования
                AgeFrom              = stringData.RequirementsData.AgeData.From,         // Возраст от
                AgeTo                = stringData.RequirementsData.AgeData.To,           // Возраст до
                GenderId             = stringData.RequirementsData.GenderId,             // Идентификатор пола
                EducationId          = stringData.RequirementsData.EducationId,          // Идентификатор образования
                ExperienceId         = stringData.RequirementsData.ExperienceData.Id,    // Идентификатор опыта работы
                ExperienceValue      = stringData.RequirementsData.ExperienceData.Value, // Значение опыта
                CitizenshipId        = stringData.RequirementsData.CitizenshipId,        // Идентификатор гражданства
                Condition            = stringData.ConditionsData.Value,                  // Условия
                SalaryFrom           = stringData.ConditionsData.SalaryData.From,        // Доход от
                SalaryTo             = stringData.ConditionsData.SalaryData.To,          // Доход до
                SalaryDescription    = stringData.ConditionsData.SalaryData.Description, // Примечание к уровню дохода
                CurrencyId           = stringData.ConditionsData.SalaryData.CurrencyId,  // Идентификатор валюты
                WorkGraphicId        = stringData.ConditionsData.WorkGraphicData.Id,     // Идентификатор графика работы
                WorkGraphic          = stringData.ConditionsData.WorkGraphicData.Comment,
                Keywords             = null,                                             // Ключевые слова
                Logo                 = Base64ToBytesConverter.Convert(stringData.LogoData.Base64String),
                LogoFileName         = stringData.LogoData.FileName,
                ContactFirstName     = stringData.ContactData.FirstName,                     // Имя контактного лица
                ContactSecondName    = stringData.ContactData.SecondName,                    // Оотчество контактного лица
                ContactLastName      = stringData.ContactData.LastName,                      // Фамилия контактного лица
                Text                 = null,                                                 // изначальный текст
                IsSalaryPercent      = stringData.ConditionsData.SalaryData.IsSalaryPercent, // Процент с продаж
                IsHousing            = stringData.ConditionsData.IsHousing,                  // Предоставляется общежитие
                IsFood               = stringData.ConditionsData.IsFood,                     // Предоставляются обеды
                BeginDate            = DateTime.Now
            };

            return(stringPosition);
        }
Exemple #7
0
        public StringPosition LookForTextStrings2(string[] text)
        {
            string buffer = new String(this.mScreenBuffer);

            for (int i = 0; i < text.Length; i++)
            {
                if (buffer.Contains(text[i]))
                {
                    int            index = buffer.IndexOf(text[i]);
                    StringPosition s     = new StringPosition();
                    s.indexInStringArray = i;
                    s.str = text[i];
                    s.x   = index % _CX;
                    s.y   = index / _CX;
                    return(s);
                }
            }
            return(null);
        }
        public StringPosition UpdateString(StringPosition stringPosition, StringData stringData, DbTransaction dbTran)
        {
            if (!NeedUpdateStringPosition(stringPosition, stringData))
            {
                return(stringPosition);
            }

            stringPosition.AnonymousCompanyName = stringData.AnonymousCompanyName;
            stringPosition.VacancyName          = stringData.VacancyName;
            stringPosition.VacancyAdditional    = stringData.VacancyAdditional;
            stringPosition.VacancyCode          = stringPosition.VacancyCode;
            stringPosition.Responsibility       = stringData.Responsibility;
            stringPosition.Requirement          = stringData.RequirementsData.Value;
            stringPosition.AgeFrom           = stringData.RequirementsData.AgeData.From;
            stringPosition.AgeTo             = stringData.RequirementsData.AgeData.To;
            stringPosition.GenderId          = stringData.RequirementsData.GenderId;
            stringPosition.EducationId       = stringData.RequirementsData.EducationId;
            stringPosition.ExperienceId      = stringData.RequirementsData.ExperienceData.Id;
            stringPosition.ExperienceValue   = stringData.RequirementsData.ExperienceData.Value;
            stringPosition.CitizenshipId     = stringData.RequirementsData.CitizenshipId;
            stringPosition.Condition         = stringData.ConditionsData.Value;
            stringPosition.SalaryFrom        = stringData.ConditionsData.SalaryData.From;
            stringPosition.SalaryTo          = stringData.ConditionsData.SalaryData.To;
            stringPosition.SalaryDescription = stringData.ConditionsData.SalaryData.Description;
            stringPosition.CurrencyId        = stringData.ConditionsData.SalaryData.CurrencyId;
            stringPosition.WorkGraphicId     = stringData.ConditionsData.WorkGraphicData.Id;
            stringPosition.WorkGraphic       = stringData.ConditionsData.WorkGraphicData.Comment;
            stringPosition.Keywords          = stringPosition.Keywords;
            stringPosition.Logo              = Base64ToBytesConverter.Convert(stringData.LogoData.Base64String);
            stringPosition.LogoFileName      = stringData.LogoData.FileName;
            stringPosition.ContactFirstName  = stringData.ContactData.FirstName;
            stringPosition.ContactSecondName = stringData.ContactData.SecondName;
            stringPosition.ContactLastName   = stringData.ContactData.LastName;
            stringPosition.Text              = stringPosition.Text;
            stringPosition.IsSalaryPercent   = stringData.ConditionsData.SalaryData.IsSalaryPercent;
            stringPosition.IsHousing         = stringData.ConditionsData.IsHousing;
            stringPosition.IsFood            = stringData.ConditionsData.IsFood;

            stringPosition = _repository.SetString(stringPosition, isActual: true, dbTran);

            return(stringPosition);
        }
        public void DuplicatedCharacters_Test()
        {
            //Arrange
            StringPosition obj     = new StringPosition();
            var            builder = new StringPositionBuilder();

            //Act
            builder.DuplicatedCharacters("letter");
            //Assert
            List <StringPosition> expected = new List <StringPosition>()
            {
                new StringPosition {
                    DuplicatedLetter = 't', DuplicatedPosition = 3
                }
            };
            List <StringPosition> actual = builder.DuplicatedCharacters("letter");

            //Assert.IsNotNull(actual[0]);
            CollectionAssert.Equals(expected, actual);
        }
Exemple #10
0
 private int Compare(string keyword, StringPosition pos2)
 {
     return(String.Compare(keyword, 0, this.strings[pos2.ListIndex], pos2.StringIndex, keyword.Length, this.ignoreCase));
 }
Exemple #11
0
            private int Compare(StringPosition pos1, StringPosition pos2)
            {
                int len = Math.Max(this.strings[pos1.ListIndex].Length - pos1.StringIndex, this.strings[pos2.ListIndex].Length - pos2.StringIndex);

                return(String.Compare(strings[pos1.ListIndex], pos1.StringIndex, this.strings[pos2.ListIndex], pos2.StringIndex, len, ignoreCase));
            }
Exemple #12
0
 /// <summary>
 /// Creates a new instance.
 /// </summary>
 /// <param name="type"></param>
 /// <param name="value"></param>
 /// <param name="position"></param>
 public Token(string type, string value, StringPosition position)
 {
     this.Type     = type;
     this.Value    = value;
     this.Position = position;
 }
Exemple #13
0
        static Catalog LoadMO(Stream stream)
        {
            BinaryReader br    = new BinaryReader(stream);
            uint         magic = br.ReadUInt32();

            if (magic != 0x950412de && magic != 0xde120495)
            {
                throw new InvalidDataException("Magic number of .MO data is incorrect");
            }
            int revision = br.ReadInt32();

            if (revision != 0 && revision != 1)
            {
                throw new Exception("Only .mo files revision 0 and 1 supported (This has revision " + revision.ToString() + ")");
            }

            uint numstrings      = br.ReadUInt32();
            uint orgstr_offset   = br.ReadUInt32();
            uint transstr_offset = br.ReadUInt32();

            br.ReadUInt32(); //hash size
            br.ReadUInt32(); //hash offset

            StringPosition[] org_strings = new StringPosition[numstrings];
            StringPosition[] tr_strings  = new StringPosition[numstrings];



            //read in length+offsets of original string
            stream.Seek(orgstr_offset, SeekOrigin.Begin);
            for (int l = 0; l < numstrings; l++)
            {
                org_strings[l] = new StringPosition(br.ReadInt32(), br.ReadInt32());
            }

            //read in length+offsets of translated strings string
            stream.Seek(transstr_offset, SeekOrigin.Begin);
            for (int l = 0; l < numstrings; l++)
            {
                tr_strings[l] = new StringPosition(br.ReadInt32(), br.ReadInt32());
            }


            Catalog c = new Catalog();


            Encoding enc = Encoding.UTF8;

            //read in the actual strings
            for (int l = 0; l < numstrings; l++)
            {
                stream.Seek(org_strings[l].Offset, SeekOrigin.Begin);
                string[] orgstrings = ReadEncodedStrings(br, org_strings[l].Length, enc);
                org_strings[l].Strings = orgstrings;

                stream.Seek(tr_strings[l].Offset, SeekOrigin.Begin);
                string[] transstrs = ReadEncodedStrings(br, tr_strings[l].Length, enc);
                c.Add(orgstrings, transstrs);

                if (orgstrings[0] == "")
                {
                    string encoding, plural;
                    ParseMOHeader(transstrs[0], out encoding, out plural);
                    try
                    {
                        enc = Encoding.GetEncoding(encoding);
                    }
                    catch (Exception) {
                        enc = Encoding.UTF8;  //non supported encoding, go for utf8 and wish the best...
                    }

                    try
                    {
                        c.pluralexpr = new Expression(plural);
                    }
                    catch
                    {
                        c.pluralexpr = null;
                    }
                }
            }

            return(c);
        }
 public void DeleteString(StringPosition stringPosition, DbTransaction dbTran)
 {
     _repository.SetString(stringPosition, isActual: false, dbTran);
     _context.Entry(stringPosition).Reload();
 }