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); }
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); }
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); }
private int Compare(string keyword, StringPosition pos2) { return(String.Compare(keyword, 0, this.strings[pos2.ListIndex], pos2.StringIndex, keyword.Length, this.ignoreCase)); }
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)); }
/// <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; }
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(); }