public override bool Execute() { if (!File.Exists(this.Source.ItemSpec)) { Log.LogError(null, null, null, Source, 0, 0, 0, 0, $"file {this.Source} not found"); return(false); } try { this.ReadConfig(); Log.LogMessage($"Loading xml : {this.Source.ItemSpec}"); var mapper = new TypeMapper(this.configuration.Mapping); var rootGen = new LayoutRootGenerator(Namespace); var layoutGen = new LayoutHolderGenerator(mapper, Namespace); rootGen.Generate(this.OutputFile); var result = layoutGen.Generate(this.Source.ItemSpec, this.OutputFile); if (!result) { File.SetLastWriteTime(OutputFile, DateTime.Now); Log.LogMessage($"Skipping generation of {OutputFile} because there is not relevant change in {Source.ItemSpec}."); } return(true); } catch (XmlException xe) { Log.LogMessage("Error (xml): {0}", xe.Message); Log.LogError(null, null, null, Source, xe.LineNumber, xe.LinePosition, 0, 0, $"{xe.Message}"); return(false); } catch (Exception e) { Log.LogMessage("Error: {0}", e.Message); Log.LogError(null, null, null, Source, 0, 0, 0, 0, $"{e.Message}"); return(false); } }
public override bool Execute() { if (!File.Exists(this.Source.ItemSpec)) { Log.LogError(null, null, null, Source, 0, 0, 0, 0, $"file {this.Source} not found"); return(false); } try { this.ReadConfig(); Log.LogMessage($"Loading xml : {this.Source.ItemSpec}"); var mapper = new TypeMapper(this.configuration.Mapping); var rootGen = new LayoutRootGenerator(Namespace); var layoutGen = new LayoutHolderGenerator(mapper, Namespace); rootGen.Generate(this.OutputFile); layoutGen.Generate(this.Source.ItemSpec, this.OutputFile); return(true); } catch (XmlException xe) { Log.LogMessage("Error (xml): {0}", xe.Message); Log.LogError(null, null, null, Source, xe.LineNumber, xe.LinePosition, 0, 0, $"{xe.Message}"); return(false); } catch (Exception e) { Log.LogMessage("Error: {0}", e.Message); Log.LogError(null, null, null, Source, 0, 0, 0, 0, $"{e.Message}"); return(false); } }
/// <summary> /// Searches for all identifier declarations into the given axml. /// </summary> /// <returns>The declarations.</returns> /// <param name="element">Element.</param> public static ViewPropertyDeclaration[] ParseDeclarations(XElement element, ITypeMapper mapper) { var result = new List <ViewPropertyDeclaration>(); var idatt = element.Attribute(AndroidNamespace + "id"); if (idatt != null && idatt.Value.StartsWith(IdPrefix, StringComparison.Ordinal)) { var isInclude = element.Name.LocalName == "include"; var id = idatt.Value.Substring(IdPrefix.Length); string type = null; if (isInclude) { var layoutatt = element.Attribute("layout"); type = LayoutHolderGenerator.CreateClassName(layoutatt.Value.Replace("@layout/", "")); } else { type = mapper.Get(element); } var source = idatt.Value; var lineinfo = element as IXmlLineInfo; var line = lineinfo?.LineNumber.ToString() ?? "?"; result.Add(new ViewPropertyDeclaration(type, id, source, line, isInclude)); } foreach (var child in element.Elements()) { var childDeclarations = ParseDeclarations(child, mapper); result.AddRange(childDeclarations); } return(result.ToArray()); }