public void Visit(FloatLiteral op) { WriteEncoded(_context.Format(op.Value)); if (_version.OnlySupportsV2OrV3()) { WriteEncoded("d"); } }
public void ToAml(XmlWriter writer, AmlWriterSettings settings) { writer.WriteStartElement("Item"); writer.WriteAttributeString("type", Type); writer.WriteAttributeString("id", Id); writer.WriteAttributeString("action", "edit"); writer.WriteAttributeString("doGetItem", "0"); writer.WriteElementString("x", _context.Format(Position.X)); writer.WriteElementString("y", _context.Format(Position.Y)); if (Segments.Any()) { writer.WriteElementString("segments", Segments.GroupConcat("|", p => $"{p.X},{p.Y}")); } writer.WriteEndElement(); }
public void Visit(QueryItem query) { var refId = Guid.NewGuid().ToArasId(); _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryDefinition"); _writer.WriteAttributeString("action", "qry_ExecuteQueryDefinition"); _writer.WriteStartElement("Relationships"); _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryItem"); _writer.WriteElementString("alias", query.Alias); _writer.WriteStartElement("item_type"); _writer.WriteAttributeString("keyed_name", query.Type); _writer.WriteEndElement(); _writer.WriteElementString("ref_id", refId); if (!query.Select.All(s => s.Expression is PropertyReference)) { throw new NotSupportedException(); } if (!query.OrderBy.All(s => s.Expression is PropertyReference)) { throw new NotSupportedException(); } _writer.WriteStartElement("Relationships"); foreach (var select in query.Select) { _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryItemSelectProperty"); _writer.WriteElementString("property_name", ((PropertyReference)select.Expression).Name); _writer.WriteEndElement(); // Item } var idx = 10; foreach (var orderBy in query.OrderBy) { _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryItemSortProperty"); _writer.WriteElementString("property_name", ((PropertyReference)orderBy.Expression).Name); _writer.WriteElementString("sort_order_direction", orderBy.Ascending ? "asc" : "desc"); _writer.WriteElementString("sort_order", _context.Format(idx)); _writer.WriteEndElement(); // Item idx += 10; } _writer.WriteEndElement(); // Relationships var where = query.Where; if (query.Version is CurrentVersion) { where = new AndOperator() { Left = where, Right = new EqualsOperator() { Left = new PropertyReference("is_current", query), Right = new BooleanLiteral(true) }.Normalize() }.Normalize(); } if (where != null) { using (var strWriter = new StringWriter()) using (_conditionWriter = XmlWriter.Create(strWriter, new XmlWriterSettings() { OmitXmlDeclaration = true })) { _conditionWriter.WriteStartElement("condition"); query.Where.Visit(this); _conditionWriter.WriteEndElement(); _conditionWriter.Flush(); strWriter.Flush(); _writer.WriteStartElement("filter_xml"); _writer.WriteCData(strWriter.ToString()); _writer.WriteEndElement(); } _conditionWriter = null; } if (query.Offset.HasValue || query.Fetch.HasValue) { using (var strWriter = new StringWriter()) using (_conditionWriter = XmlWriter.Create(strWriter, new XmlWriterSettings() { OmitXmlDeclaration = true })) { _conditionWriter.WriteStartElement("configuration"); _conditionWriter.WriteStartElement("option"); if (query.Offset.HasValue) { _conditionWriter.WriteElementString("offset", _context.Format(query.Offset)); } if (query.Fetch.HasValue) { _conditionWriter.WriteElementString("fetch", _context.Format(query.Fetch)); } _conditionWriter.WriteEndElement(); _conditionWriter.WriteEndElement(); _conditionWriter.Flush(); strWriter.Flush(); _writer.WriteStartElement("offset_fetch_xml"); _writer.WriteCData(strWriter.ToString()); _writer.WriteEndElement(); } _conditionWriter = null; } _writer.WriteEndElement(); // Item foreach (var param in _parameters) { _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryParameter"); _writer.WriteElementString("name", param.Name); _writer.WriteEndElement(); // Item } _writer.WriteStartElement("Item"); _writer.WriteAttributeString("type", "qry_QueryReference"); _writer.WriteElementString("child_ref_id", refId); _writer.WriteEndElement(); // Item _writer.WriteEndElement(); // Relationships _writer.WriteEndElement(); // Item }