ParseDocumentAndGetCharacteristics(HtmlDocument doc) { HtmlElementCollection tables = doc.GetElementsByTagName("table"); if (tables.Count < 4) { throw new OldVehicleNotSupportedException(vin); } HtmlElement table4 = tables[4]; HtmlElement table6 = tables[6]; VehicleCharacteristicsItemsGroup basicCharacteristicsGroup = ParseBasicCharacteristics(table4); VehicleCharacteristicsItemsGroup extendedCharacteristicsGroup = ParseExtendedCharacteristicsGroup(table6); if (basicCharacteristicsGroup.Items.Count == 1 || extendedCharacteristicsGroup.Items.Count == 1) { throw new VinDecodeException("No data for this vin"); } VehicleCharacteristics chars = new VehicleCharacteristics(vin); chars.Language = "ru_RU"; chars.GeneralVehicleInfo = String.Format("OPEL {0}, Engine {1}", basicCharacteristicsGroup.Items[0].Value, basicCharacteristicsGroup.Items[3].Value); chars.ItemsGroups.Add(basicCharacteristicsGroup); chars.ItemsGroups.Add(extendedCharacteristicsGroup); return(chars); }
public static string GetValueByKey( this VehicleCharacteristicsItemsGroup group, string key) { VehicleCharacteristicsItem item = group.Items.FirstOrDefault(i => i.Name.ToUpper() == key.ToUpper()); if (item == null) { return(String.Empty); } return(item.Value); }
private void ParseGeneralInfoItemItemNode(HtmlNode node, VehicleCharacteristicsItemsGroup itemsGroup) { VehicleCharacteristicsItem item = new VehicleCharacteristicsItem(); HtmlNode name = node.SelectSingleNode(@"./td[1]"); HtmlNode value = node.SelectSingleNode(@"./td[2]"); item.Name = Strip(name.InnerText); item.Value = Strip(value.InnerText); itemsGroup.Items.Add(item); }
private void ParseUsualItemNode(HtmlNode trNode, VehicleCharacteristicsItemsGroup group) { VehicleCharacteristicsItem item = new VehicleCharacteristicsItem(); item.Name = Strip(trNode.SelectSingleNode("./td[1]").InnerText); item.Value = Strip(trNode.SelectSingleNode("./td[2]").InnerText); // TODO : Parse Code //item.Code = group.Items.Add(item); }
public VehicleCharacteristicsItemsGroupViewModel( VehicleCharacteristicsItemsGroup model) { if (model == null) { throw new ArgumentNullException(); } this.model = model; foreach (VehicleCharacteristicsItem item in model.Items) { items.Add(new VehicleCharacteristicsItemViewModel(item)); } }
public static VehicleCharacteristicsItemsGroup Assemble( VehicleCharacteristicsItemsGroupDto dto) { VehicleCharacteristicsItemsGroup result = new VehicleCharacteristicsItemsGroup(); result.Name = dto.Name; foreach (VehicleCharacteristicsItemDto item in dto.Items) { result.Items.Add(VehicleCharacteristicsItemDtoAssembler. Assemble(item)); } return(result); }
public static string GetVehicleModelString( this VehicleCharacteristics chars) { string key = LocalizedCharacteristicsStrings. ResolveVehicleModelKey(chars); /*string groupKey = LocalizedCharacteristicsStrings. * ResolveVehicleModelGroupKey(chars.Language);*/ string groupKey = chars.GeneralVehicleInfo; VehicleCharacteristicsItemsGroup characteristicsGroup = chars. ItemsGroups.FirstOrDefault(g => g.Name.ToUpper().Contains(groupKey.ToUpper())); return(characteristicsGroup.GetValueByKey(key)); }
public static VehicleCharacteristicsItemsGroupDto FromDomainObjectToDto(VehicleCharacteristicsItemsGroup source) { VehicleCharacteristicsItemsGroupDto target = new VehicleCharacteristicsItemsGroupDto(); target.Id = source.Id; target.CharacteristicsId = source.CharacteristicsId; target.Name = source.Name; foreach (VehicleCharacteristicsItem item in source.Items) { target.Items.Add(VehicleCharacteristicsItemAssembler. FromDomainObjectToDto(item)); } return(target); }
private void ParseGeneralInfoTable(HtmlNode tableNode, VehicleCharacteristics result) { //HtmlNode tbody = tableNode.SelectSingleNode("./tbody"); VehicleCharacteristicsItemsGroup itemsGroup = new VehicleCharacteristicsItemsGroup(); itemsGroup.Name = result.GeneralVehicleInfo; // TODO : Get translation for "general info" foreach (HtmlNode node in tableNode.SelectNodes("./tr")) { ParseGeneralInfoItemItemNode(node, itemsGroup); } result.ItemsGroups.Add(itemsGroup); }
public static VehicleCharacteristicsItemsGroupEntity FromDomainObjectToEntity( VehicleCharacteristicsItemsGroup source) { VehicleCharacteristicsItemsGroupEntity target = new VehicleCharacteristicsItemsGroupEntity(); target.Id = source.Id; target.VehicleCharacteristicsEntityId = source.CharacteristicsId; target.Name = source.Name; foreach (VehicleCharacteristicsItem item in source.Items) { target.VehicleCharacteristicsItem.Add(VehicleCharacteristicsItemAssembler. FromDomainObjectToEntity(item)); } return(target); }
public static VehicleCharacteristicsItemsGroup FromEntityToDomainObject( VehicleCharacteristicsItemsGroupEntity source) { VehicleCharacteristicsItemsGroup target = new VehicleCharacteristicsItemsGroup(); target.Id = source.Id; target.CharacteristicsId = source.VehicleCharacteristicsEntityId; target.Name = source.Name; foreach (VehicleCharacteristicsItemEntity item in source.VehicleCharacteristicsItem) { target.Items.Add(VehicleCharacteristicsItemAssembler. FromEntityToDomainObject(item)); } return(target); }
ParseExtendedCharacteristicsGroup(HtmlElement table6) { HtmlElementCollection rows = table6.GetElementsByTagName("tr"); VehicleCharacteristicsItemsGroup result = new VehicleCharacteristicsItemsGroup(); result.Name = "Extended characteristics"; foreach (HtmlElement row in rows) { VehicleCharacteristicsItem item = new VehicleCharacteristicsItem(); HtmlElement td1 = row.GetElementsByTagName("td")[0]; item.Name = td1.InnerText; HtmlElement td2 = row.GetElementsByTagName("td")[1]; item.Value = td2.InnerText; result.Items.Add(item); } return(result); }
private void ParseUsualTable(HtmlNode tableNode, VehicleCharacteristics result) { VehicleCharacteristicsItemsGroup group = new VehicleCharacteristicsItemsGroup(); HtmlNodeCollection trNodes = tableNode.SelectNodes("./tr"); HtmlNodeCollection tds = trNodes[0].SelectNodes("./td"); group.Name = Strip(tds[0].InnerText); HtmlNode subTable = trNodes[1].SelectSingleNode("./td/table"); HtmlNodeCollection itemTrNodes = subTable.SelectNodes("./tr"); for (int i = 1; i < itemTrNodes.Count; i++) { ParseUsualItemNode(itemTrNodes[i], group); } result.ItemsGroups.Add(group); }
public int Recognize(VehicleCharacteristics characteristics) { string itemName = LocalizedCharacteristicsStrings.ResolveProductionDateKey(characteristics.Language); VehicleCharacteristicsItemsGroup group = characteristics.ItemsGroups.FirstOrDefault(ig => ig.Name.Equals(characteristics.GeneralVehicleInfo, StringComparison.InvariantCultureIgnoreCase)); VehicleCharacteristicsItem item = group.Items.FirstOrDefault(i => i.Name.Equals(itemName, StringComparison.InvariantCultureIgnoreCase)); string date = DateTime.Today.ToShortDateString(); if (item != null) { date = item.Value; } string[] split = date.Split('/'); return(Int32.Parse(split[2])); }
public static string GetEngineFamilyString( this VehicleCharacteristics chars) { string generalInformationGroupName = LocalizedCharacteristicsStrings. ResolveGeneralInformationGroupName(chars.Language); VehicleCharacteristicsItemsGroup generalInformationGroup = chars.ItemsGroups.FirstOrDefault( g => g.Name.Contains(generalInformationGroupName)); if (generalInformationGroup == null) { throw new NoInfoForVinException("Insufficient characteristics data"); } string engineFamilyString = generalInformationGroup.GetValueByKey( LocalizedCharacteristicsStrings. ResolveEngineFamilyKey(chars.Language)); return(engineFamilyString); }
ParseBasicCharacteristics(HtmlElement table4) { HtmlElementCollection rows = table4.GetElementsByTagName("tr"); VehicleCharacteristicsItemsGroup result = new VehicleCharacteristicsItemsGroup(); result.Name = "Basic characteristics"; int detailedDataRowsCount = rows[0].GetElementsByTagName("tr").Count; VehicleCharacteristicsItem firstItem = new VehicleCharacteristicsItem(); firstItem.Name = rows[0].GetElementsByTagName("td")[0].InnerText; firstItem.Value = rows[0].GetElementsByTagName("td")[2].InnerText; result.Items.Add(firstItem); for (int i = detailedDataRowsCount + 1; i < rows.Count; i++) { HtmlElement row = rows[i]; VehicleCharacteristicsItem item = new VehicleCharacteristicsItem(); item.Name = row.GetElementsByTagName("td")[0].InnerText; item.Value = row.GetElementsByTagName("td")[2].InnerText; result.Items.Add(item); } return(result); }