Пример #1
0
        public static void Write(this QueryOrderByLinesProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);

            foreach (var line in property.Value)
            {
                var isLastLine = (line == property.Value.Last());
                writer.WriteLine("{0}={1}{2}", line.Column, line.Direction, isLastLine ? ";" : ",");
            }

            writer.Unindent();
        }
Пример #2
0
        public static void Write(this ColumnFilterProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);

            foreach (var line in property.Value)
            {
                var isLastLine = (line == property.Value.Last());
                writer.WriteLine("{0}={1}({2}){3}", line.FieldName, line.Type.AsString(), line.Value, isLastLine ? ";" : ",");
            }

            writer.Unindent();
        }
Пример #3
0
        public static void Write(this RunObjectProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            switch (isLastProperty)
            {
            case true:
                writer.Write("{0}={1} {2} ", property.Name, FormatRunObjectType(property.Value.Type.Value), property.Value.ID);
                break;

            case false:
                writer.WriteLine("{0}={1} {2};", property.Name, FormatRunObjectType(property.Value.Type.Value), property.Value.ID);
                break;
            }
        }
Пример #4
0
        public static void Write(this PageReferenceProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            switch (isLastProperty)
            {
            case true:
                writer.Write("{0}=Page{1} ", property.Name, property.Value.Value);
                break;

            case false:
                writer.WriteLine("{0}=Page{1};", property.Name, property.Value.Value);
                break;
            }
        }
Пример #5
0
        public static void Write(this NullableBooleanProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            switch (isLastProperty)
            {
            case true:
                writer.Write("{0}={1} ", property.Name, property.Value.Value ? "Yes" : "No");
                break;

            case false:
                writer.WriteLine("{0}={1};", property.Name, property.Value.Value ? "Yes" : "No");
                break;
            }
        }
        public static void WriteSimpleProperty(string propertyName, string propertyValue, bool isLastProperty, CSideWriter writer)
        {
            switch (isLastProperty)
            {
            case true:
                writer.Write("{0}={1} ", propertyName, propertyValue);
                break;

            case false:
                writer.WriteLine("{0}={1};", propertyName, propertyValue);
                break;
            }
        }
Пример #7
0
        public static void Write(this ReportLabel reportLabel, CSideWriter writer)
        {
            var id   = reportLabel.ID.ToString().PadRight(4);
            var debt = id.Length > 4 ? id.Length - 4 : 0;
            var name = reportLabel.Name.PadRight(20 - debt);

            writer.Write("{ ");
            writer.Write(id);
            writer.Write(";");
            writer.Write(name);

            var relevantProperties = reportLabel.Properties.Where(p => p.HasValue);

            switch (relevantProperties.Any())
            {
            case true:
                writer.Write(";");
                break;

            default:
                writer.Write(" ");
                break;
            }

            if (writer.Column > 32)
            {
                writer.Indent(32);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            reportLabel.Properties.Write(PropertiesStyle.Field, writer);

            writer.WriteLine("}");
            writer.Unindent();
        }
Пример #8
0
        public static void Write(this Function function, CSideWriter writer)
        {
            writer.InnerWriter.WriteLine();
#if NAV2016
            WriteSubscriberAttributes(function, writer);
            writer.WriteLineIf(function.TryFunction.GetValueOrDefault(false), "[TryFunction]");
            WritePublisherAttributes(function, writer);
#endif
#if NAV2018
            writer.WriteLineIf(
                function.FunctionVisibility.GetValueOrDefault(Common.FunctionVisibility.Internal) == Common.FunctionVisibility.External &&
                function.ServiceEnabled.GetValueOrDefault(false),
                "[ServiceEnabled]");
#endif
#if NAV2015
            writer.WriteLineIf(function.UpgradeFunctionType.HasValue, "[{0}]", function.UpgradeFunctionType);
#endif
            writer.WriteLineIf(function.TestFunctionType.HasValue, "[{0}]", function.TestFunctionType);
            writer.WriteLineIf(function.HandlerFunctions != null, "[HandlerFunctions({0})]", function.HandlerFunctions);
            writer.WriteLineIf(function.TransactionModel.HasValue, "[TransactionModel({0})]", function.TransactionModel);
#if NAV2017
            writer.WriteLineIf(function.TestPermissions.HasValue, "[TestPermissions({0})]", function.TestPermissions);
#endif
#if NAV2018
            writer.WriteLineIf(function.FunctionVisibility.HasValue, "[{0}]", function.FunctionVisibility);
#endif
            writer.Write("{2}PROCEDURE {0}@{1}(", function.Name, function.ID, function.Local ? "LOCAL " : "");
            function.Parameters.Write(writer);
            writer.Write(")");
            function.ReturnValue.Write(writer);
            writer.WriteLine(";");
            function.Variables.Write(writer);
            writer.WriteLine("BEGIN");
            writer.Indent();
            function.CodeLines.Write(writer);
            writer.Unindent();
            writer.WriteLine("END;");
        }
 public static void Write(this CodeLines codeLines, CSideWriter writer)
 {
     foreach (var codeLine in codeLines)
     {
         if (string.IsNullOrEmpty(codeLine))
         {
             writer.InnerWriter.WriteLine();
         }
         else
         {
             writer.WriteLine(codeLine);
         }
     }
 }
        public static void Write(this DataportField dataportField, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var startPos           = BuildControlPart(dataportField.StartPosition.HasValue? dataportField.StartPosition.Value.ToString() : "", 5, ref debt);
            var width              = BuildControlPart(dataportField.Width.HasValue? dataportField.Width.Value.ToString() : "", 5, ref debt);
            var sourceExp          = BuildControlPart(dataportField.SourceExpr, 20, ref debt);
            var relevantProperties = dataportField.Properties.Where(p => p.HasValue);
            var declaration        = string.Format("{{ {0};{1};{2}", startPos, width, sourceExp);

            writer.Write(declaration);
            writer.Write(relevantProperties.Any() ? ";" : " ");

            if ((writer.Column > propertyIndentation) && (relevantProperties.Any()))
            {
                writer.Indent(propertyIndentation);
                writer.WriteLine("");
            }
            else
            {
                writer.Indent(writer.Column);
            }

            relevantProperties.Write(PropertiesStyle.Field, writer);

            var lastProperty = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        public static void Write(this PageControlGroup groupPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(groupPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(groupPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Group", 10, ref debt);
            var declaration        = string.Format("{{ {0};{1};{2}", controlID, controlIndentation, controlType);

            writer.Write(declaration);

            if (groupPageControl.Properties.Any(p => p.HasValue))
            {
                writer.WriteLine(";");
                writer.Indent(propertyIndentation);
                groupPageControl.Properties.Write(PropertiesStyle.Field, writer);
                writer.Unindent();
            }
            else
            {
                writer.Write(" ");
            }

            //var idLength = Math.Max(groupPageControl.ID.ToString().Length, 4);
            //var id = groupPageControl.ID.ToString().PadRight(idLength);
            //var idAndIndentation = string.Format("{0};{1}", id, groupPageControl.IndentationLevel.ToString()).PadRight(9);
            //var idAndIndentationAndType = string.Format("{0};Group", idAndIndentation);

            //writer.WriteLine("{{ {0};", idAndIndentationAndType.PadRight(20));

            if (groupPageControl.Properties.Where(p => p.HasValue).LastOrDefault() is ActionListProperty)
            {
                writer.Write(new string(' ', 13));
            }

            writer.WriteLine("}");
            writer.InnerWriter.WriteLine();
        }
Пример #12
0
        public static void Write(this OptionStringProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            var value = (property.Value.Trim() != property.Value) ? string.Format("[{0}]", property.Value) : property.Value;

            switch (isLastProperty)
            {
            case true:
                writer.Write("{0}={1} ", property.Name, value);
                break;

            case false:
                writer.WriteLine("{0}={1};", property.Name, value);
                break;
            }
        }
        public static void Write(this PageControlPart partPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(partPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(partPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Part", 10, ref debt);
            var declaration        = string.Format("{{ {0};{1};{2};", controlID, controlIndentation, controlType);

            writer.WriteLine(declaration);


            //var idLength = Math.Max(partPageControl.ID.ToString().Length, 4);
            //var id = partPageControl.ID.ToString().PadRight(idLength);
            //var idAndIndentation = string.Format("{0};{1}", id, partPageControl.IndentationLevel.ToString());
            //var idAndIndentationAndType = string.Format("{{ {0};Part", idAndIndentation.PadRight(9));

            //writer.WriteLine("{0};", idAndIndentationAndType.PadRight(22));

            writer.Indent(propertyIndentation);
            partPageControl.Properties.Write(PropertiesStyle.Field, writer);
            writer.WriteLine("}");
            writer.Unindent();
            writer.InnerWriter.WriteLine();
        }
        public static void Write(this PageControl fieldPageControl, CSideWriter writer, int propertyIndentation)
        {
            var debt               = 0;
            var controlID          = BuildControlPart(fieldPageControl.ID.ToString(), 4, ref debt);
            var controlIndentation = BuildControlPart(fieldPageControl.IndentationLevel.AsString(), 4, ref debt);
            var controlType        = BuildControlPart("Field", 10, ref debt);
            var relevantProperties = fieldPageControl.Properties.Where(p => p.HasValue);

            switch (relevantProperties.Any())
            {
            case false:
                writer.WriteLine("{{ {0};{1};{2} }}", controlID, controlIndentation, controlType);
                break;

            default:
                writer.WriteLine("{{ {0};{1};{2};", controlID, controlIndentation, controlType);

                writer.Indent(propertyIndentation);
                fieldPageControl.Properties.Write(PropertiesStyle.Field, writer);

                var lastProperty = relevantProperties.LastOrDefault();
                if (lastProperty != null)
                {
                    if (lastProperty is TriggerProperty)
                    {
                        writer.Write(new string(' ', lastProperty.Name.Length + 2));
                    }
                }

                writer.WriteLine("}");
                writer.Unindent();
                break;
            }

            writer.InnerWriter.WriteLine();
        }
        public static void WriteIntegrationEventAttributes(Function function, CSideWriter writer)
        {
            var parameters =
                string.Format(
                    "({0},{1})",
                    function.IncludeSender.HasValue ? function.IncludeSender.ToString().ToUpperInvariant() : "DEFAULT",
                    function.GlobalVarAccess.HasValue ? function.GlobalVarAccess.ToString().ToUpperInvariant() : "DEFAULT");

            // Handle exceptional cases
            parameters = parameters == "(DEFAULT,DEFAULT)" ? "" : parameters;
            parameters = parameters == "(FALSE,DEFAULT)" ? "(FALSE)" : parameters;
            parameters = parameters == "(TRUE,DEFAULT)" ? "(TRUE)" : parameters;

            writer.WriteLine("[Integration{0}]", parameters);
        }
        public static void Write(this WordLayout wordLayout, CSideWriter writer)
        {
            if (wordLayout.CodeLines.Any())
            {
                writer.BeginSection("WORDLAYOUT");

                foreach (var line in wordLayout.CodeLines)
                {
                    writer.WriteLine(line);
                }

                writer.InnerWriter.WriteLine("    END_OF_WORDLAYOUT");

                writer.EndSection();
            }
        }
        private static void WriteDeclaration(int id, int?indentation, string type, string name, CSideWriter writer)
        {
            name = name ?? string.Empty;
            var nameLength = Math.Max(name.Length, 20);

            writer.Write("{ ");
            writer.Write(id.ToString().PadRight(4));
            writer.Write(";");
            writer.Write((indentation.HasValue ? indentation.Value.ToString() : string.Empty).PadRight(4));
            writer.Indent(writer.Column);
            writer.Write(";");
            writer.Write(type.PadRight(8));
            writer.Write(";");
            writer.Write(name.PadRight(nameLength));
            writer.WriteLine(";");
        }
        public static void Write(this Variables variables, CSideWriter writer)
        {
            if (!variables.Any())
            {
                return;
            }

            writer.WriteLine("VAR");
            writer.Indent();

            foreach (Variable variable in variables)
            {
                variable.Write(writer);
            }

            writer.Unindent();
        }
Пример #19
0
        public static void Write(this PermissionsProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);

            foreach (var permission in property.Value)
            {
                var isLastValue = (permission == property.Value.Last());
                var terminator  = isLastValue ? ";" : ",";
                var read        = permission.ReadPermission ? "r" : "";
                var insert      = permission.InsertPermission ? "i" : "";
                var modify      = permission.ModifyPermission ? "m" : "";
                var delete      = permission.DeletePermission ? "d" : "";

                writer.WriteLine("TableData {0}={1}{2}{3}{4}{5}", permission.TableID, read, insert, modify, delete, terminator);
            }

            writer.Unindent();
        }
Пример #20
0
        private static void DoWrite(string name, int id, string type, string dimensions, bool temporary, bool includeInDataset, bool withEvents, bool runOnClient, string securityFiltering, CSideWriter writer)
        {
            var stringBuilder = new StringBuilder();

            stringBuilder.AppendFormat("{0}@{1} : ", name, id);

            if (!string.IsNullOrEmpty(dimensions))
            {
                stringBuilder.AppendFormat("ARRAY [{0}] OF ", dimensions.Replace(';', ','));
            }

            if (temporary)
            {
                stringBuilder.Append("TEMPORARY ");
            }

            stringBuilder.Append(type);

            if (withEvents)
            {
                stringBuilder.Append(" WITHEVENTS");
            }

            if (runOnClient)
            {
                stringBuilder.Append(" RUNONCLIENT");
            }

            if (includeInDataset)
            {
                stringBuilder.Append(" INDATASET");
            }

            if (!string.IsNullOrEmpty(securityFiltering))
            {
                stringBuilder.AppendFormat(" SECURITYFILTERING({0})", securityFiltering);
            }

            stringBuilder.Append(";");

            writer.WriteLine(stringBuilder.ToString());
        }
        public static void Write(this WordLayout wordLayout, CSideWriter writer)
        {
            if (writer.CodeStyle.DoNotPrintEmptyWordReportLayout)
            {
                if (!wordLayout.CodeLines.Any())
                {
                    return;
                }
            }
            writer.BeginSection("WORDLAYOUT");

            foreach (var line in wordLayout.CodeLines)
            {
                writer.WriteLine(line);
            }

            writer.InnerWriter.WriteLine("    END_OF_WORDLAYOUT");

            writer.EndSection();
        }
        public static void WriteSubscriberAttributes(Function function, CSideWriter writer)
        {
            if (function.Event.GetValueOrDefault(EventPublisherSubscriber.No) != EventPublisherSubscriber.Subscriber)
            {
                return;
            }

            if (function.EventPublisherObject.Type == null)
            {
                return;
            }
            if (function.EventPublisherObject.ID == null)
            {
                return;
            }
            if (string.IsNullOrEmpty(function.EventFunction))
            {
                return;
            }

            writer.Write(
                "[EventSubscriber({0},{1},{2}",
                function.EventPublisherObject.Type,
                function.EventPublisherObject.ID,
                function.EventFunction);

            var parameters =
                string.Format(
                    ",{0},{1}",
                    function.OnMissingLicense.HasValue ? function.OnMissingLicense.ToString() : "DEFAULT",
                    function.OnMissingPermission.HasValue ? function.OnMissingPermission.ToString() : "DEFAULT");
            var eventPublisherElement = string.IsNullOrEmpty(function.EventPublisherElement) ? ",\"\"" : string.Format(",{0}", function.EventPublisherElement);

            // Handle exceptional cases
            parameters            = parameters == ",DEFAULT,DEFAULT" ? "" : parameters;
            parameters            = parameters == ",Skip,DEFAULT" ? ",Skip" : parameters;
            parameters            = parameters == ",Error,DEFAULT" ? ",Error" : parameters;
            eventPublisherElement = (parameters == "" && eventPublisherElement == ",\"\"" ? "" : eventPublisherElement);

            writer.WriteLine("{0}{1})]", eventPublisherElement, parameters);
        }
Пример #23
0
        public static void WriteLineParts(this CSideWriter writer, params LinePart[] parts)
        {
            var debt = 0;

            foreach (var part in parts)
            {
                var value = part.Elastic ? part.Value.PadRight(Math.Max(0, part.NominalWidth - debt)) : part.Value;
                if (part.NewLine)
                {
                    writer.WriteLine(value);
                }
                else
                {
                    writer.Write(value);
                }
                if (part.SetIndentationAt != 0)
                {
                    writer.Indent(part.SetIndentationAt);
                }
                debt = debt + (value.Length - part.NominalWidth);
            }
        }
Пример #24
0
        public static void Write(this ReportDataItemLinkProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);

            foreach (var line in property.Value)
            {
                var isLastLine = (line == property.Value.Last());

                switch (isLastProperty && isLastLine)
                {
                case true:
                    writer.Write("{0}=FIELD({1}) ", line.FieldName, line.ReferenceFieldName);
                    break;

                case false:
                    writer.WriteLine("{0}=FIELD({1}){2}", line.FieldName, line.ReferenceFieldName, isLastLine ? ";" : ",");
                    break;
                }
            }

            writer.Unindent();
        }
Пример #25
0
        public static void Write(this FormMenuItemBase fieldFormControl, CSideWriter writer)
        {
            var relevantProperties = fieldFormControl.Properties.Where(p => p.HasValue);
            var declaration        = "{ ";

            writer.Write(declaration);
            writer.Indent(writer.Column);

            relevantProperties.Write(PropertiesStyle.Field, writer);

            var lastProperty = relevantProperties.LastOrDefault();

            if (lastProperty != null)
            {
                if (lastProperty is TriggerProperty)
                {
                    writer.Write(new string(' ', lastProperty.Name.Length + 2));
                }
            }

            writer.WriteLine("}");
            writer.Unindent();
        }
        private static void DoWrite(string name, int id, string type, string dimensions, bool temporary, bool includeInDataset, bool withEvents, bool runOnClient, string securityFiltering, bool suppressDispose, CSideWriter writer)
        {
            var stringBuilder = new StringBuilder();

            if (writer.CodeStyle.NoVariableIds)
            {
                stringBuilder.AppendFormat("{0} : ", name);
            }
            else
            {
                stringBuilder.AppendFormat("{0}@{1} : ", name, id);
            }

            if (!string.IsNullOrEmpty(dimensions))
            {
                stringBuilder.AppendFormat("ARRAY [{0}] OF ", dimensions.Replace(';', ','));
            }

            if (temporary)
            {
                stringBuilder.Append("TEMPORARY ");
            }

            stringBuilder.Append(type);
            if (writer.CodeStyle.PlatformVersion.MajorVersion < 13)
            {
                if (suppressDispose)
                {
                    stringBuilder.Append(" SUPPRESSDISPOSE");
                }
            }

            if (withEvents)
            {
                stringBuilder.Append(" WITHEVENTS");
            }

            if (runOnClient)
            {
                stringBuilder.Append(" RUNONCLIENT");
            }

            if (includeInDataset)
            {
                stringBuilder.Append(" INDATASET");
            }

            if (writer.CodeStyle.PlatformVersion.MajorVersion >= 13)
            {
                if (suppressDispose)
                {
                    stringBuilder.Append(" SUPPRESSDISPOSE");
                }
            }

            if (!string.IsNullOrEmpty(securityFiltering))
            {
                stringBuilder.AppendFormat(" SECURITYFILTERING({0})", securityFiltering);
            }

            stringBuilder.Append(";");

            writer.WriteLine(stringBuilder.ToString());
        }
Пример #27
0
        public static void Write(this TableRelationProperty property, bool isLastProperty, PropertiesStyle style, CSideWriter writer)
        {
            var indentations = 0;

            writer.Write("{0}=", property.Name);
            writer.Indent(writer.Column);
            indentations++;

            foreach (var tableRelationLine in property.Value)
            {
                if (tableRelationLine != property.Value.First())
                {
                    writer.Write("ELSE ");
                }

                if (tableRelationLine.Conditions.Any())
                {
                    writer.Write("IF (");

                    // Only indent if multiple conditions exist. Note that C/SIDE doesn't properly unindent.
                    if (tableRelationLine.Conditions.Count() > 1)
                    {
                        writer.Indent(writer.Column); // conditions
                        indentations++;
                    }

                    foreach (var condition in tableRelationLine.Conditions)
                    {
                        writer.Write("{0}={1}({2})", condition.FieldName, condition.Type.ToString().ToUpper(), condition.Value);

                        var isLastCondition = (condition == tableRelationLine.Conditions.Last());

                        switch (isLastCondition)
                        {
                        case false:
                            writer.WriteLine(",");
                            break;
                        }
                    }

                    writer.Write(") ");
                }

                writer.Write(tableRelationLine.TableName.QuotedExcept('/', '.', '-'));

                if (!string.IsNullOrEmpty(tableRelationLine.FieldName))
                {
                    writer.Write(".{0}", tableRelationLine.FieldName.QuotedExcept('/', '.', '-'));
                }

                if (tableRelationLine.TableFilter.Any())
                {
                    writer.Write(" WHERE (");

                    if (tableRelationLine.TableFilter.Count() > 1)
                    {
                        writer.Indent(writer.Column); // filters
                        indentations++;
                    }

                    foreach (var tableFilterLine in tableRelationLine.TableFilter)
                    {
                        writer.Write("{0}={1}({2})", tableFilterLine.FieldName, tableFilterLine.Type.AsString(), tableFilterLine.Value);

                        switch (tableFilterLine == tableRelationLine.TableFilter.Last())
                        {
                        case true:
                            writer.Write(")");
                            break;

                        default:
                            writer.WriteLine(",");
                            break;
                        }
                    }
                }

                var isLastLine = (tableRelationLine == property.Value.Last());

                if (!isLastLine)
                {
                    writer.WriteLine("");
                }
                else
                if (isLastProperty)
                {
                    writer.Write(" ");
                }
                else
                {
                    writer.WriteLine(";");
                }

                //switch (tableRelationLine == property.Value.Last() && !isLastProperty)
                //{
                //    case true:
                //        writer.WriteLine(";");
                //        break;
                //    default:
                //        writer.Write(" ");
                //        break;
                //}
            }

            for (var i = 0; i < indentations; i++)
            {
                writer.Unindent();
            }
        }