private void writeEqualsMethod(TextWriter writer)
 {
     writer.WriteLine("public override bool Equals( BasicUrlHandler other ) {");
     writer.WriteLine("if( !( other is {0} otherEs ) ) return false;".FormatWith(generalData.ClassName));
     InfoStatics.WriteEqualsParameterComparisons(writer, requiredParameters, optionalParameters, "otherEs");
     writer.WriteLine("}");
 }
Example #2
0
        private void writeGetInfoMethod(TextWriter writer)
        {
            CodeGenerationStatics.AddSummaryDocComment(
                writer,
                "Creates an info object for this page. Use the Info class constructor instead of this method if you want to reuse the entity setup info object.");
            writer.WriteLine(
                "public static Info GetInfo( " +
                StringTools.ConcatenateWithDelimiter(
                    ", ",
                    entitySetup != null ? WebMetaLogicStatics.GetParameterDeclarations(entitySetup.RequiredParameters) : "",
                    WebMetaLogicStatics.GetParameterDeclarations(requiredParameters),
                    entitySetup != null && entitySetup.OptionalParameters.Count > 0 ? "EntitySetup.OptionalParameterPackage entitySetupOptionalParameterPackage = null" : "",
                    optionalParameters.Count > 0 ? "OptionalParameterPackage optionalParameterPackage = null" : "",
                    "string uriFragmentIdentifier = \"\"") + " ) {");
            var entitySetupArgs = entitySetup != null
                                                      ? "new EntitySetup.Info( " +
                                  StringTools.ConcatenateWithDelimiter(
                ", ",
                InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(entitySetup.RequiredParameters, parameter => parameter.Name),
                entitySetup.OptionalParameters.Count > 0 ? "optionalParameterPackage: entitySetupOptionalParameterPackage" : "") + " )"
                                                      : "";

            writer.WriteLine(
                "return new Info( " +
                StringTools.ConcatenateWithDelimiter(
                    ", ",
                    entitySetupArgs,
                    InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(requiredParameters, parameter => parameter.Name),
                    optionalParameters.Count > 0 ? "optionalParameterPackage: optionalParameterPackage" : "",
                    "uriFragmentIdentifier: uriFragmentIdentifier") + " );");
            writer.WriteLine("}");
        }
Example #3
0
 private void writeInfoCloneAndReplaceDefaultsIfPossibleMethod(TextWriter writer)
 {
     writer.WriteLine("protected override ResourceInfo CloneAndReplaceDefaultsIfPossible( bool disableReplacementOfDefaults ) {");
     if (optionalParameters.Any())
     {
         writer.WriteLine("var parametersModification = Instance.ParametersModificationAsBaseType as ParametersModification;");
         writer.WriteLine("if( parametersModification != null && !disableReplacementOfDefaults )");
         writer.WriteLine(
             "return new Info( " +
             StringTools.ConcatenateWithDelimiter(
                 ", ",
                 entitySetup != null ? "esInfo.CloneAndReplaceDefaultsIfPossible( disableReplacementOfDefaults )" : "",
                 InfoStatics.GetInfoConstructorArguments(
                     requiredParameters,
                     optionalParameters,
                     parameter => parameter.FieldName,
                     parameter => InfoStatics.GetWasSpecifiedFieldName(parameter) + " ? " + parameter.FieldName + " : parametersModification." + parameter.PropertyName),
                 "uriFragmentIdentifier: uriFragmentIdentifier") + " );");
     }
     writer.WriteLine(
         "return new Info( " +
         StringTools.ConcatenateWithDelimiter(
             ", ",
             entitySetup != null ? "esInfo.CloneAndReplaceDefaultsIfPossible( disableReplacementOfDefaults )" : "",
             InfoStatics.GetInfoConstructorArguments(requiredParameters, optionalParameters, parameter => parameter.FieldName, parameter => parameter.FieldName),
             "uriFragmentIdentifier: uriFragmentIdentifier") + " );");
     writer.WriteLine("}");
 }
Example #4
0
        private void writeGetInfoMethod(TextWriter writer)
        {
            CodeGenerationStatics.AddSummaryDocComment(
                writer,
                "Creates an object for this page. Use the constructor instead of this method if you want to reuse the entity setup object.");
            writer.WriteLine(
                "public static {0} GetInfo( ".FormatWith(generalData.ClassName) + StringTools.ConcatenateWithDelimiter(
                    ", ",
                    entitySetup != null ? WebFrameworkStatics.GetParameterDeclarations(entitySetup.RequiredParameters) : "",
                    WebFrameworkStatics.GetParameterDeclarations(requiredParameters),
                    entitySetup != null && entitySetup.OptionalParameters.Count > 0
                                                ? "Action<EntitySetup.OptionalParameterSpecifier, EntitySetup.Parameters> entitySetupOptionalParameterSetter = null"
                                                : "",
                    optionalParameters.Count > 0
                                                ? "Action<{0}> optionalParameterSetter = null".FormatWith(
                        StringTools.ConcatenateWithDelimiter(", ", "OptionalParameterSpecifier", entitySetup != null ? "EntitySetup" : "", "Parameters"))
                                                : "",
                    "string uriFragmentIdentifier = \"\"") + " ) {");
            var entitySetupArgs = entitySetup != null
                                                      ? "new EntitySetup( " + StringTools.ConcatenateWithDelimiter(
                ", ",
                InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(entitySetup.RequiredParameters, parameter => parameter.Name),
                entitySetup.OptionalParameters.Count > 0 ? "optionalParameterSetter: entitySetupOptionalParameterSetter" : "") + " )"
                                                      : "";

            writer.WriteLine(
                "return new {0}( ".FormatWith(generalData.ClassName) + StringTools.ConcatenateWithDelimiter(
                    ", ",
                    entitySetupArgs,
                    InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(requiredParameters, parameter => parameter.Name),
                    optionalParameters.Count > 0 ? "optionalParameterSetter: optionalParameterSetter" : "",
                    "uriFragmentIdentifier: uriFragmentIdentifier") + " );");
            writer.WriteLine("}");
        }
Example #5
0
 private void writeInfoClass(TextWriter writer)
 {
     writer.WriteLine(
         "public sealed partial class Info: " + (generalData.PathRelativeToProject.EndsWith(".ascx") ? "EwfUiEntitySetupInfo" : "EntitySetupInfo") + " {");
     InfoStatics.WriteParameterMembers(writer, requiredParameters, optionalParameters);
     InfoStatics.WriteConstructorAndHelperMethods(writer, requiredParameters, optionalParameters, false, true);
     writeInfoIsIdenticalToMethod(writer);
     writeInfoCloneAndReplaceDefaultsIfPossibleMethod(writer);
     writer.WriteLine("}");
 }
 internal void GenerateCode(TextWriter writer)
 {
     writer.WriteLine("namespace " + generalData.Namespace + " {");
     writer.WriteLine("public sealed partial class {0}: EntitySetupBase {{".FormatWith(generalData.ClassName));
     OptionalParameterPackageStatics.WriteClassIfNecessary(writer, requiredParameters, optionalParameters);
     ParametersModificationStatics.WriteClassIfNecessary(writer, requiredParameters.Concat(optionalParameters));
     UrlStatics.GenerateUrlClasses(writer, generalData.ClassName, null, requiredParameters, optionalParameters, false);
     if (optionalParameters.Any())
     {
         InfoStatics.WriteSpecifyParameterDefaultsMethod(writer, false);
     }
     InfoStatics.WriteParameterMembers(writer, requiredParameters, optionalParameters);
     if (requiredParameters.Any() || optionalParameters.Any())
     {
         writer.WriteLine("internal ParametersModification parametersModification;");
     }
     if (optionalParameters.Any())
     {
         writer.WriteLine("private Action<OptionalParameterSpecifier, Parameters> optionalParameterSetter;");
     }
     InfoStatics.WriteConstructorAndHelperMethods(writer, generalData, requiredParameters, optionalParameters, false, true);
     if (requiredParameters.Any() || optionalParameters.Any())
     {
         writer.WriteLine("{0} override void InitParametersModification() {{".FormatWith(projectContainsFramework ? "protected internal" : "protected"));
         writer.WriteLine("parametersModification = new ParametersModification();");
         foreach (var i in requiredParameters.Concat(optionalParameters))
         {
             writer.WriteLine("parametersModification.{0} = {0};".FormatWith(i.PropertyName));
         }
         writer.WriteLine("}");
     }
     else
     {
         writer.WriteLine("{0} override void InitParametersModification() {{}}".FormatWith(projectContainsFramework ? "protected internal" : "protected"));
     }
     UrlStatics.GenerateGetEncoderMethod(writer, "", requiredParameters, optionalParameters, p => "true", false);
     writer.WriteLine(
         "internal {0} ReCreate() => new {0}({1});".FormatWith(
             generalData.ClassName,
             StringTools.ConcatenateWithDelimiter(
                 ", ",
                 InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(requiredParameters, parameter => parameter.PropertyName),
                 optionalParameters.Any() ? "optionalParameterSetter: optionalParameterSetter" : "")
             .Surround(" ", " ")));
     WebFrameworkStatics.WriteReCreateFromNewParameterValuesMethod(
         writer,
         requiredParameters,
         "internal {0} ".FormatWith(generalData.ClassName),
         generalData.ClassName,
         "");
     writeEqualsMethod(writer);
     InfoStatics.WriteGetHashCodeMethod(writer, generalData.PathRelativeToProject, requiredParameters, optionalParameters);
     writer.WriteLine("}");
     writer.WriteLine("}");
 }
Example #7
0
 private void writeInfoIsIdenticalToMethod(TextWriter writer)
 {
     writer.WriteLine("protected override bool isIdenticalTo( ResourceInfo infoAsBaseType ) {");
     writer.WriteLine("if( !( infoAsBaseType is Info ) )");
     writer.WriteLine("return false;");
     writer.WriteLine("var info = infoAsBaseType as Info;");
     if (entitySetup != null)
     {
         writer.WriteLine("if( !esInfo.IsIdenticalTo( info.esInfo ) )");
         writer.WriteLine("return false;");
     }
     InfoStatics.WriteIsIdenticalToParameterComparisons(writer, requiredParameters, optionalParameters);
     writer.WriteLine("}");
 }
Example #8
0
 private void writeInfoClass(TextWriter writer)
 {
     writer.WriteLine("public sealed partial class Info: PageInfo {");
     if (entitySetup != null)
     {
         writer.WriteLine("private EntitySetup.Info esInfo;");
     }
     InfoStatics.WriteParameterMembers(writer, requiredParameters, optionalParameters);
     InfoStatics.WriteConstructorAndHelperMethods(writer, requiredParameters, optionalParameters, entitySetup != null, false);
     writer.WriteLine("public override EntitySetupInfo EsInfoAsBaseType { get { return " + (entitySetup != null ? "esInfo" : "null") + "; } }");
     writeInfoBuildUrlMethod(writer);
     writeInfoIsIdenticalToMethod(writer);
     writeInfoCloneAndReplaceDefaultsIfPossibleMethod(writer);
     writer.WriteLine("}");
 }
Example #9
0
 private void writeInfoCloneAndReplaceDefaultsIfPossibleMethod(TextWriter writer)
 {
     writer.WriteLine("internal Info CloneAndReplaceDefaultsIfPossible( bool disableReplacementOfDefaults ) {");
     if (optionalParameters.Any())
     {
         writer.WriteLine(
             "var parametersModification = ( EwfPage.Instance.EsAsBaseType != null ? EwfPage.Instance.EsAsBaseType.ParametersModificationAsBaseType : null ) as ParametersModification;");
         writer.WriteLine("if( parametersModification != null && !disableReplacementOfDefaults )");
         writer.WriteLine(
             "return new Info( " +
             InfoStatics.GetInfoConstructorArguments(
                 requiredParameters,
                 optionalParameters,
                 parameter => parameter.FieldName,
                 parameter => InfoStatics.GetWasSpecifiedFieldName(parameter) + " ? " + parameter.FieldName + " : parametersModification." + parameter.PropertyName) +
             " );");
     }
     writer.WriteLine(
         "return new Info( " +
         InfoStatics.GetInfoConstructorArguments(requiredParameters, optionalParameters, parameter => parameter.FieldName, parameter => parameter.FieldName) +
         " );");
     writer.WriteLine("}");
 }
Example #10
0
 private void writeInfoIsIdenticalToMethod(TextWriter writer)
 {
     writer.WriteLine("internal bool IsIdenticalTo( Info info ) {");
     InfoStatics.WriteIsIdenticalToParameterComparisons(writer, requiredParameters, optionalParameters);
     writer.WriteLine("}");
 }
Example #11
0
        internal void GenerateCode(TextWriter writer)
        {
            writer.WriteLine("namespace {0} {{".FormatWith(generalData.Namespace));
            writer.WriteLine(
                "public sealed partial class {0}: {1} {{".FormatWith(
                    generalData.ClassName,
                    generalData.IsPage() ? "PageBase" : generalData.IsAutoCompleteService() ? "AutoCompleteService" : "ResourceBase"));

            OptionalParameterPackageStatics.WriteClassIfNecessary(writer, requiredParameters, optionalParameters);
            if (generalData.IsPage())
            {
                ParametersModificationStatics.WriteClassIfNecessary(writer, requiredParameters.Concat(optionalParameters));
            }
            UrlStatics.GenerateUrlClasses(writer, generalData.ClassName, entitySetup, requiredParameters, optionalParameters, false);
            if (optionalParameters.Any())
            {
                generateSegmentParameterSpecifier(writer);
            }
            writeGetInfoMethod(writer);
            if (optionalParameters.Any())
            {
                InfoStatics.WriteSpecifyParameterDefaultsMethod(writer, entitySetup != null);
            }
            if (entitySetup != null)
            {
                writer.WriteLine("public EntitySetup Es;");
            }
            InfoStatics.WriteParameterMembers(writer, requiredParameters, optionalParameters);
            if (generalData.IsPage() && (requiredParameters.Any() || optionalParameters.Any()))
            {
                writer.WriteLine("private ParametersModification parametersModification;");
            }
            if (optionalParameters.Any())
            {
                writer.WriteLine("private readonly Lazy<SegmentParameterSpecifier> segmentParameterSpecifier;");
                writer.WriteLine(
                    "private Action<{0}> optionalParameterSetter;".FormatWith(
                        StringTools.ConcatenateWithDelimiter(", ", "OptionalParameterSpecifier", entitySetup != null ? "EntitySetup" : "", "Parameters")));
            }
            InfoStatics.WriteConstructorAndHelperMethods(writer, generalData, requiredParameters, optionalParameters, entitySetup != null, false);
            writer.WriteLine("public override EntitySetupBase EsAsBaseType => {0};".FormatWith(entitySetup != null ? "Es" : "null"));
            if (generalData.IsPage())
            {
                if (requiredParameters.Any() || optionalParameters.Any())
                {
                    writer.WriteLine("protected override void initParametersModification() {");
                    writer.WriteLine("parametersModification = new ParametersModification();");
                    foreach (var i in requiredParameters.Concat(optionalParameters))
                    {
                        writer.WriteLine("parametersModification.{0} = {0};".FormatWith(i.PropertyName));
                    }
                    writer.WriteLine("}");
                }
                else
                {
                    writer.WriteLine("protected override void initParametersModification() {}");
                }
            }
            UrlStatics.GenerateGetEncoderMethod(
                writer,
                entitySetup != null ? "Es" : "",
                requiredParameters,
                optionalParameters,
                p => "segmentParameterSpecifier.Value.{0}IsSegmentParameter".FormatWith(p.PropertyName),
                false);
            if (optionalParameters.Any())
            {
                writer.WriteLine("partial void specifySegmentParameters( SegmentParameterSpecifier specifier );");
            }
            if (!generalData.IsPage())
            {
                writer.WriteLine("public override bool MatchesCurrent() => base.MatchesCurrent();");
            }
            writer.WriteLine(
                "{0} override ResourceBase ReCreate() => new {1}( {2} );".FormatWith(
                    projectContainsFramework ? "protected internal" : "protected",
                    generalData.ClassName,
                    StringTools.ConcatenateWithDelimiter(
                        ", ",
                        entitySetup != null ? "Es.ReCreate()" : "",
                        InfoStatics.GetInfoConstructorArgumentsForRequiredParameters(requiredParameters, parameter => parameter.PropertyName),
                        optionalParameters.Any() ? "optionalParameterSetter: optionalParameterSetter" : "",
                        "uriFragmentIdentifier: uriFragmentIdentifier")));
            if (generalData.IsPage())
            {
                WebFrameworkStatics.WriteReCreateFromNewParameterValuesMethod(
                    writer,
                    requiredParameters,
                    "protected override PageBase ",
                    generalData.ClassName,
                    entitySetup != null ? "Es.ReCreateFromNewParameterValues()" : "");
            }
            writeEqualsMethod(writer);
            InfoStatics.WriteGetHashCodeMethod(writer, generalData.PathRelativeToProject, requiredParameters, optionalParameters);

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