internal Page(WebItemGeneralData generalData, EntitySetup entitySetup) { this.generalData = generalData; requiredParameters = generalData.ReadParametersFromCode(false); optionalParameters = generalData.ReadParametersFromCode(true); this.entitySetup = entitySetup; // NOTE: Blow up if there is a name collision between parameters and entitySetup.Parameters. }
internal Page( WebItemGeneralData generalData, EntitySetup entitySetup ) { this.generalData = generalData; requiredParameters = generalData.ReadParametersFromCode( false ); optionalParameters = generalData.ReadParametersFromCode( true ); this.entitySetup = entitySetup; // NOTE: Blow up if there is a name collision between parameters and entitySetup.Parameters. }
private static void generateCodeForWebItemsInFolder( TextWriter writer, string webProjectPath, string folderPathRelativeToProject, WebProject webProjectConfiguration) { var folderPath = EwlStatics.CombinePaths( webProjectPath, folderPathRelativeToProject ); // Generate code for the entity setup if one exists in this folder. var entitySetupFileName = ""; foreach( var fileName in new[] { "EntitySetup.ascx", "EntitySetup.cs" } ) { if( File.Exists( EwlStatics.CombinePaths( folderPath, fileName ) ) ) { entitySetupFileName = fileName; break; } } EntitySetup entitySetup = null; if( entitySetupFileName.Length > 0 ) { var filePathRelativeToProject = Path.Combine( folderPathRelativeToProject, entitySetupFileName ); entitySetup = new EntitySetup( new WebItemGeneralData( webProjectPath, filePathRelativeToProject, false, webProjectConfiguration ) ); entitySetup.GenerateCode( writer ); } // Generate code for files in the current folder. foreach( var fileName in IoMethods.GetFileNamesInFolder( folderPath ) ) { if( !folderPathRelativeToProject.Any() && ( fileName.Contains( ".csproj" ) || fileName == AppStatics.StandardLibraryFilesFileName ) ) continue; var fileExtension = Path.GetExtension( fileName ).ToLowerInvariant(); if( new[] { ".cs", ".asax", ".master", ".config", ".svc" }.Contains( fileExtension ) ) continue; var filePathRelativeToProject = Path.Combine( folderPathRelativeToProject, fileName ); if( fileExtension == ".aspx" ) new Page( new WebItemGeneralData( webProjectPath, filePathRelativeToProject, false, webProjectConfiguration ), entitySetup ).GenerateCode( writer ); else if( fileExtension == ".ascx" ) { if( fileName != entitySetupFileName ) new UserControl( new WebItemGeneralData( webProjectPath, filePathRelativeToProject, false, webProjectConfiguration ) ).GenerateCode( writer ); } else new StaticFile( new WebItemGeneralData( webProjectPath, filePathRelativeToProject, true, webProjectConfiguration ) ).GenerateCode( writer ); } // Delve into sub folders. foreach( var subFolderName in IoMethods.GetFolderNamesInFolder( folderPath ) ) { var subFolderPath = Path.Combine( folderPathRelativeToProject, subFolderName ); if( subFolderPath == "bin" || subFolderPath == "obj" ) continue; generateCodeForWebItemsInFolder( writer, webProjectPath, subFolderPath, webProjectConfiguration ); } }