From: Eric C. <ecr...@us...> - 2006-09-17 17:30:54
|
User: ecrutchfield Date: 06/09/17 10:30:52 Added: andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005 table.ascx.vsl inputWebform.aspx.vsl webform.aspx.cs.vsl global.asax.vsl menu.ascx.vsl Default.aspx.vsl Default.master.cs.vsl Default.master.vsl webformBase.cs.vsl inputWebform.aspx.cs.vsl webform.aspx.vsl inputWebformBase.cs.vsl menu.ascx.cs.vsl Default.aspx.cs.vsl web.config.vsl resources.resx.vsl andromda-aspdotnet/src/main/resources/META-INF/andromda namespace.xml metafacades.xml cartridge.xml profile.xml andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2003 inputWebform.aspx.vsl inputWebform.aspx.cs.vsl renderFormInput.vm default.aspx.cs.vsl menu.ascx.vsl web.config.vsl assemblyInfo.cs.vsl webform.aspx.cs.vsl global.asax.cs.vsl error.aspx.cs.vsl menu.ascx.cs.vsl default.aspx.vsl inputWebformBase.aspx.cs.vsl resources.resx.vsl global.asax.vsl webform.aspx.vsl renderActionFormInput.vm webformBase.aspx.cs.vsl error.aspx.vsl andromda-aspdotnet/src/main/resources/templates/aspdotnet pageBase.cs.vsl sessionObject.cs.vsl project.csproj.vsl andromda-aspdotnet/src/main/resources/templates/aspdotnet/uicontrollers formMacros.vm formImpl.cs.vsl UIPControllerImpl.cs.vsl Form.cs.vsl UIPController.cs.vsl Controller.cs.vm formImplMacros.vm andromda-aspdotnet/src/main/resources/layout default.JPG button.JPG default.css banner.JPG andromda-aspdotnet/src/main/resources/calendar oboutCalendar.js style.css calendar.gif andromda-aspdotnet/src/main/resources/resources FormPopulator.cs StringUtils.cs Log: initial version Revision Changes Path 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/table.ascx.vsl Index: table.ascx.vsl =================================================================== <asp:DataGrid id="tableGrid" runat="server"></asp:DataGrid> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/inputWebform.aspx.vsl Index: inputWebform.aspx.vsl =================================================================== #set($generatedFile = "${usecase.fullyQualifiedPath}/${usecase.normalizedName}UC.aspx") <%@ Page language="c#" CodeFile="~/src/main/${usecase.fullyQualifiedPath}/${usecase.normalizedName}UC.cs" CodeFileBaseClass="${usecase.packageName}.${usecase.normalizedName}UCBase" AutoEventWireup="true" Inherits="${usecase.packageName}.${usecase.normalizedName}UC" MasterPageFile="~/Default.master" Title="${usecase.name}"%> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/webform.aspx.cs.vsl Index: webform.aspx.cs.vsl =================================================================== #set($generatedFile = "${webform.fullyQualifiedPath}/${webform.normalizedName}.cs") using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace ${webform.packageName} { /// <summary> /// This is the code-behind for the ${webform.normalizedName} view. /// </summary> public partial class ${webform.getNormalizedName()} : ${webform.getNormalizedName()}Base { protected override void PageLoad() { //${toDoTag} put your implementation here #if ($dummyData) #foreach($action in $webform.outgoing) #foreach($parameter in $action.parameters) #if ($parameter.isSelectable()) base.Controller.${action.formImplementationPropertyName}.Set$stringUtils.capitalise(${parameter.labelListName})(new string[]{"Dummy Item 1", "Dummy Item 2", "Dummy Item 3"}); base.Controller.${action.formImplementationPropertyName}.Set$stringUtils.capitalise(${parameter.valueListName})(new string[]{"1", "2", "3"}); #end #end #end #end } #foreach($action in ${webform.outgoing}) protected override void ${action.actionMethodName}() { ##todo create Form instance and populate with data from form?? //The base method will call the appropriate method on the controller then redirect to //the page specified by the controller. //You can perform actions prior to the controller call by adding code before this line //add code to the appropriate method of the ControllerImpl class. base.${action.actionMethodName}(); } #end #foreach($parameter in $webform.tables) protected override void $stringUtils.capitalise(${parameter.name})DG_SortCommand(object source, GridViewSortEventArgs e) { //${toDoTag} put your implementation here to sort the datagrid } #end } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/global.asax.vsl Index: global.asax.vsl =================================================================== <%@ Application Language="C#" %> <script runat="server"> void Application_Start(object sender, EventArgs e) { // Code that runs on application startup } void Application_End(object sender, EventArgs e) { // Code that runs on application shutdown } void Application_Error(object sender, EventArgs e) { // Code that runs when an unhandled error occurs } void Session_Start(object sender, EventArgs e) { // Code that runs when a new session is started } void Session_End(object sender, EventArgs e) { // Code that runs when a session ends. // Note: The Session_End event is raised only when the sessionstate mode // is set to InProc in the Web.config file. If session mode is set to StateServer // or SQLServer, the event is not raised. } void Authenticate_Request(object sender, EventArgs e) { #if($security.equals('true')) AssignRoles(); #end } #if($security.equals('true')) private void AssignRoles() { bool cookieFound = false; HttpCookie cookie = null; for(int i=0; i < Request.Cookies.Count; i++) { cookie = Request.Cookies[i]; if (cookie.Name.Equals("Roles")) { cookieFound = true; break; } } if (cookieFound) { // Extract the roles from the DB, and assign to our current principal, which is attached to the // HttpContext. FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookie.Value); string[] roles = ticket.UserData.Split(';'); GenericPrincipal princ = new GenericPrincipal(Thread.CurrentPrincipal.Identity,roles); HttpContext.Current.User = princ; } } #end </script> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/menu.ascx.vsl Index: menu.ascx.vsl =================================================================== #if (${dotNetVersion}=="2.0") <%@ Control CodeFile="Menu.ascx.cs" Language="c#" AutoEventWireup="false" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" Inherits="${webAssemblyName}.Menu"%> <script type="text/javascript"> <!-- <!--StartFragment --> window.onload=montre; function montre(id) { var d = document.getElementById(id); for (var i = 1; i<=10; i++) { if (document.getElementById('smenu'+i)) {document.getElementById('smenu'+i).style.display='none';} } if (d) {d.style.display='block';} } //--> </script> <style type="text/css"> BODY { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; BACKGROUND: white; PADDING-BOTTOM: 0px; MARGIN: 0px; FONT: 80% verdana, arial, sans-serif; PADDING-TOP: 0px } DL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } DT { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } DD { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } UL { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } LI { PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; LIST-STYLE-TYPE: none } DL#menuVertical { WIDTH: 15em } DL#menuVertical DT { BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; FONT-WEIGHT: bold; BACKGROUND: #e6e6fa; MARGIN: 2px 0px; BORDER-LEFT: gray 1px solid; CURSOR: pointer; LINE-HEIGHT: 20px; BORDER-BOTTOM: gray 1px solid; HEIGHT: 20px; TEXT-ALIGN: center } DL#menuVertical DD { BORDER-RIGHT: gray 1px solid; BORDER-TOP: gray 1px solid; BORDER-LEFT: gray 1px solid; BORDER-BOTTOM: gray 1px solid } DL#menuVertical LI { BACKGROUND: #fff; TEXT-ALIGN: center } DL#menuVertical LI A { BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; BORDER-LEFT: 0px; COLOR: #000; BORDER-BOTTOM: 0px; HEIGHT: 100%; TEXT-DECORATION: none } DL#menuVertical DT A { BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: block; BORDER-LEFT: 0px; COLOR: #000; BORDER-BOTTOM: 0px; HEIGHT: 100%; TEXT-DECORATION: none } DL#menuVertical LI A:hover { BACKGROUND: #eee } DL#menuVertical DT A:hover { BACKGROUND: #eee } #mentions { LEFT: 10px; COLOR: #000; BOTTOM: 200px; FONT-FAMILY: verdana, arial, sans-serif; POSITION: absolute; BACKGROUND-COLOR: #ddd } #mentions A { COLOR: #222; TEXT-DECORATION: none } #mentions A:hover { TEXT-DECORATION: underline } </style> <div class="box1"> <dl id="menuVertical"> #foreach($usecase in $usecases) #if($usecase.isFrontEndApplication()) #foreach($group in ${usecase.getMenuGroups()}) <dt onclick="javascript:montre('smenu$velocityCount');"> <asp:Literal ID="${group.getName()}Literal" Text="<%$ Resources:GeneratedResources, menu_${group.getName()}Literal%>" Runat="server">${group.getName()}</asp:Literal> <dd id="smenu$velocityCount"> <ul> #foreach($smenu in ${group.getUseCases()}) <li> <asp:LinkButton id="${smenu.getNormalizedName()}LinkButton" Text="<%$ Resources:GeneratedResources, menu_${smenu.getNormalizedName()}LinkButton%>" runat="server" CausesValidation="False" OnClick="${smenu.getNormalizedName()}LinkButton_Click" ></asp:LinkButton> #end </ul> </dd> #end #end #end </dl> </div> #end 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/Default.aspx.vsl Index: Default.aspx.vsl =================================================================== <%@ Page language="c#" CodeFile="Default.aspx.cs" AutoEventWireup="true" Inherits="${webAssemblyName}._Default" MasterPageFile="~/Default.master" Title="Default"%> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/Default.master.cs.vsl Index: Default.master.cs.vsl =================================================================== using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class _Default : System.Web.UI.MasterPage { protected void Page_Load(object sender, EventArgs e) { } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/Default.master.vsl Index: Default.master.vsl =================================================================== <%@ Register TagPrefix="menuUserControl" TagName="menu" Src="~/target/src/Common/menu.ascx" %> <%@ Master Language="C#" AutoEventWireup="true" CodeFile="Default.master.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <link href="~/layout/default.css" rel="stylesheet" type="text/css" /> </head> <body > <form id="form1" runat="server"> <div id="menu"> <asp:contentplaceholder id="MenuPlaceHolder" runat="server"> <menuUserControl:menu id="menu1" runat="server"></menuUserControl:menu> </asp:contentplaceholder> </div> <div id="caption" align="left"> <asp:contentplaceholder id="CaptionPlaceHolder" runat="server"> Page Caption Goes Here </asp:contentplaceholder> </div> <div id="content"> <asp:contentplaceholder id="ContentPlaceHolder" runat="server"> Content Goes Here </asp:contentplaceholder> </div> </form> </body> </html> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/webformBase.cs.vsl Index: webformBase.cs.vsl =================================================================== ## ## This macro renders the line that sets the property ## on the controllers form using the value of the input field defined on the page ## #macro( populateFormProperties ) #if(!$action.tableAction && !$action.tableLink) #foreach($parameter in ${action.parameters}) #if(!${parameter.hidden} && !${parameter.inputTable}) #set($viewType = ${parameter.viewType}) #set($fieldName = "this.$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}$viewType") ## if we can't get the value from the field (e.g. Label) then we need to get it from it's Hidden counterpart. #if($viewType.equalsIgnoreCase("HyperLink") || $viewType.equalsIgnoreCase("Label")) #set($fieldName = "this.$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}Hidden") #end #set($formProperty = "$parameter.capitalisedName") org.andromda.cartridges.aspdotnet.FormPopulator.PopulateForm(${fieldName}, base.Controller.${action.formImplementationPropertyName}, "${formProperty}"); #end #end #end #end #set($generatedFile = "${webform.fullyQualifiedPath}/${webform.normalizedName}Base.cs") #set($key = "@${webform.useCase.normalizedName}.${webform.normalizedName}") using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Resources; using System.Reflection; using System.Globalization; namespace ${webform.packageName} { /// <summary> /// Summary description for ${webform.normalizedName}Base. /// </summary> public abstract class ${webform.normalizedName}Base : ${webform.useCase.normalizedName}PageBase { protected System.Web.UI.WebControls.Literal ${webform.normalizedName}Page; #foreach($action in ${webform.actions}) #foreach($parameter in ${action.parameters}) #set($aspType = "${parameter.getViewType()}") #if(!${parameter.hidden}) protected System.Web.UI.WebControls.Label $stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}lbl; #end #if($aspType.equals('file')) protected System.Web.UI.WebControls.FileUpload ${parameter.name}FileSelector; #else protected System.Web.UI.WebControls.${parameter.getViewType()} $stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}$aspType; #if(${aspType.equalsIgnoreCase('hyperlink')}||${aspType.equalsIgnoreCase('label')}) protected System.Web.UI.HtmlControls.HtmlInputHidden $stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}Hidden; #end #end #end protected System.Web.UI.WebControls.Button ${action.actionMethodName}Button; #end ##Now deal with tables #foreach($parameter in $webform.tables) protected System.Web.UI.WebControls.GridView ${parameter.name}DG; protected System.Web.UI.WebControls.Label ${parameter.name}Count; #end protected void Page_Load(object sender, System.EventArgs e) { if (!this.IsPostBack) { PageLoad(); ## this will load any fields with backingList data if it's appropriate #foreach($action in ${webform.outgoing}) #if(!$action.hyperlink) #foreach($parameter in ${action.parameters}) #if($parameter.inputSelect) this.$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}${parameter.viewType}.DataSource = base.Controller.${action.formImplementationPropertyName}.Get$stringUtils.capitalize(${parameter.backingListName})(); this.$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}${parameter.viewType}.DataBind(); #end #end #end #end #foreach($parameter in $webform.tables) if(!(this.${parameter.name}DG.PageCount > 1)) ${parameter.name}DG.AllowPaging = false; if(this.${parameter.name}DG.Rows.Count < 1) ${parameter.name}DG.Visible = false; ${parameter.name}Count.Text = "Number Of result: "+this.${parameter.name}DG.Rows.Count; #end } } #foreach($action in ${webform.outgoing}) #if(!$action.hyperlink) protected void ${action.actionMethodName}Button_Click(object sender, System.EventArgs e) { ${action.actionMethodName}(); } #end #end #foreach($parameter in $webform.tables) protected void $stringUtils.capitalize(${parameter.name})DG_SelectedIndexChanged(object sender, System.EventArgs e) { //${toDoTag} Not really sure what to do here. //${action.getNavigation()} } protected void $stringUtils.capitalize(${parameter.name})DG_Page(Object sender, GridViewPageEventArgs e) { ${parameter.name}DG.PageIndex = e.NewPageIndex; ${parameter.name}DG.DataBind(); } #end #foreach($action in ${webform.outgoing}) protected virtual void ${action.actionMethodName}() { //we need to take the parameters for the given action and persist them across views #populateFormProperties() Response.Redirect(this.Controller.${webform.normalizedName}$stringUtils.capitalize(${action.actionMethodName})()); } #end #foreach($parameter in $webform.tables) protected abstract void $stringUtils.capitalise(${parameter.name})DG_SortCommand(object source, System.Web.UI.WebControls.GridViewSortEventArgs e); #end /// <summary> /// This method is called part way through processing the Load event for the page. Before this /// method is called, all the names and tooltips have been set from the appropriate resource. /// After this call, any "DropDownList" fields will be populated. /// </summary> protected abstract void PageLoad(); #foreach($table in $webform.tables) protected void ${table.name}DG_ItemCommand(object source, DataGridCommandEventArgs e) { System.Collections.Specialized.StringDictionary nameValuePairs = org.andromda.cartridges.aspdotnet.StringUtils.ParseCommandArgument(e.CommandArgument); switch (e.CommandName) { #foreach ($action in $table.tableHyperlinkActions) case "${action.triggerName}": #foreach ($parameter in $action.parameters) base.Controller.${action.formImplementationPropertyName}.${parameter.capitalisedName} = nameValuePairs["${parameter.name}"]; #end this.${action.actionMethodName}(); break; #end #foreach ($action in $table.tableFormActions) case "${action.triggerName}": #foreach ($parameter in $action.parameters) base.Controller.${action.formImplementationPropertyName}.${parameter.capitalisedName} = nameValuePairs["${parameter.name}"]; #end this.${action.actionMethodName}(); break; #end } } #end } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/inputWebform.aspx.cs.vsl Index: inputWebform.aspx.cs.vsl =================================================================== #set($generatedFile = "${usecase.fullyQualifiedPath}/${usecase.normalizedName}UC.cs") using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace ${usecase.packageName} { /// <summary> /// <see cref="${usecase.normalizedName}UCBase"/> /// </summary> public partial class ${usecase.normalizedName}UC : ${usecase.normalizedName}UCBase { //Override OnLoad to perform actions prior to entering this use case. } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/webform.aspx.vsl Index: webform.aspx.vsl =================================================================== ## ## This macro renders the CommandArgument parameter for a command link ## #macro ( renderTableCommandArgumentParameters ) #foreach( $parameter in $action.parameters )#if($velocityCount>1) + #end DataBinder.Eval("DataItem.${parameter.name}","#if($velocityCount>1),#end${parameter.name}={0}")#end #end ## ## #set($generatedFile = "${webform.fullyQualifiedPath}/${webform.normalizedName}.aspx") #set($key = "${webform.useCase.normalizedName}_${webform.normalizedName}") <%@ Page Language="C#" AutoEventWireup="true" CodeFile="~/src/main/${webform.fullyQualifiedPath}/${webform.normalizedName}.cs" CodeFileBaseClass="${webform.packageName}.${webform.normalizedName}Base" Inherits="${webform.packageName}.${webform.normalizedName}" MasterPageFile="~/Default.master" Title="${webform.name}"%> <asp:Content ID="CPHTitle" ContentPlaceHolderID="CaptionPlaceHolder" Runat="Server"> <h4> <asp:Literal ID="${webform.normalizedName}Page" runat="server" Text="<%$ Resources:GeneratedResources, ${key}Page %>"></asp:Literal> </h4> </asp:Content> <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder" Runat="Server"> <div id="content"> #foreach($action in ${webform.outgoing}) #if(!$action.hyperlink) <div class="action"> <table id="${action.name}Table" cellspacing="0" cellpadding="1" width="100%" border="0"> #foreach($parameter in ${action.parameters}) #if(!${parameter.isHidden()}) #set($type = ${parameter.getViewType()}) <tr> <td> <asp:label id="$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}lbl" runat="server" Text="<%$ Resources:GeneratedResources, ${key}_${parameter.name}lbl %>"></asp:label></td> <td> #if($type.equals('file')) <asp:FileUpload ID="${parameter.name}FileSelector" runat="server" /></td> #else <asp:$type id="$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}$type" ToolTip="<%$ Resources:GeneratedResources, ${key}_${parameter.name}_${parameter.getViewType()}_Help %>" #if(${parameter.isCalendar()})ReadOnly="True" #end#if(${parameter.isReadOnly()})ReadOnly="True" #end #if(${parameter.isTextarea()})TextMode="MultiLine" #end #if(${parameter.isPassword()})TextMode="Password" #end #if($type.equalsIgnoreCase('ListBox'))SelectionMode=Multiple #end#if($type.equals('RadioButton')) GroupName="${parameter.getRadioButtonGroup()}" #end runat="server"></asp:$type> #if(${parameter.isMandatoryField()}) #if(!$type.equalsIgnoreCase("checkbox")) <asp:RequiredFieldValidator id="${parameter.name}RF" runat="server" ErrorMessage="*" ControlToValidate="$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}TextBox"></asp:RequiredFieldValidator> #end #end #if(${parameter.isCalendar()}) <asp:Calendar ID="${parameter.name}Calendar" runat="server" ></asp:Calendar> #end </td> #if($type.equals('TextBox')) #if(!${parameter.isCalendar()}) #if(${parameter.isValidator()}) <asp:RegularExpressionValidator id="${parameter.name}REV" runat="server" ErrorMessage="Warning: type of the field ''${parameter.name}'' is not ${parameter.getComparatorType()}!" ValidationExpression="${parameter.getValidator()}"></asp:RegularExpressionValidator> #else <asp:CompareValidator id="${parameter.name}CV" runat="server" ErrorMessage="Warning: type of the field ''${parameter.name}'' is not ${parameter.getComparatorType()}!" Operator="DataTypeCheck" Type="${parameter.getComparatorType()}" Display="Dynamic" ControlToValidate="$stringUtils.lowerCamelCaseName(${action.name})_${parameter.name}TextBox"></asp:CompareValidator> #end #end #end #end </tr> #end #end <tr> <td> ##@todo Add resource assignment to this button <asp:button CssClass="body1" OnClick="${action.actionMethodName}Button_Click" id="${action.actionMethodName}Button" runat="server" Text="<%$ Resources:GeneratedResources, ${key}_${action.actionMethodName}Button%>" #if(${action.parameters.empty}) CausesValidation="False"#end ForeColor=MidnightBlue Style="background: url(${webform.getLayoutPath()}button.JPG) repeat;"></asp:button></td> <td></td> </tr> </table> </div> #end #end #foreach($table in $webform.tables) <div class="action1"> <table cellspacing="10" cellpadding="1" width="100%" border="0"> <tr> <td> <asp:GridView id="${table.name}DG" runat="server" AutoGenerateColumns="False" AllowPaging="True" AllowSorting="True" OnPageIndexChanging="$stringUtils.capitalize(${table.name})DG_Page" OnSelectedIndexChanged="$stringUtils.capitalize(${table.name})DG_SelectedIndexChanged" OnSorting="$stringUtils.capitalize(${table.name})DG_SortCommand"> <AlternatingRowStyle BackColor="Lavender"></AlternatingRowStyle> <HeaderStyle Font-Bold="True" HorizontalAlign="Center" VerticalAlign="Middle" BackColor="#e8e2b6"></HeaderStyle> <Columns> #if (!$table.tableColumns.empty) #foreach ($column in $table.tableColumns) #if($column.name) #set($columnName = $column.name) #else #set($columnName = $column) #end #set ($tableColumnActions = $table.getTableColumnActions($columnName)) #if ($tableColumnActions.empty) <asp:BoundField DataField="$columnName" HeaderText="<%$ Resources:GeneratedResources, ${key}_${table.name}DG_$columnName %>" SortExpression="${stringUtils.capitalise($columnName)}" /> #else #set ($action = $tableColumnActions.iterator().next()) <asp:TemplateField> <HeaderTemplate><asp:Literal runat="server" Text="<%$ Resources:GeneratedResources, ${key}_${table.name}DG_$columnName %>"></asp:Literal></HeaderTemplate> <ItemTemplate> <asp:LinkButton ID="${action.tableLinkColumnName}Link" Runat="server" CommandArgument='<%# #renderTableCommandArgumentParameters() %>' CommandName="${action.triggerName}" Text='<%# Eval("DataItem.${action.tableLinkColumnName}")%>'></asp:LinkButton></ItemTemplate> </asp:TemplateField> #end #end #end #foreach ($action in $table.tableFormActions) <asp:ButtonField ButtonType=Link Text="<%$ Resources:GeneratedResources, ${key}_${table.name}DG_$columnName %>" SortExpression="${stringUtils.capitalise($action.triggerName)}" /> #end </Columns> <PagerSettings Mode=NumericFirstLast /> </asp:GridView> </td> </tr> <tr> <td align=center> <asp:Label ID="${table.name}Count" Runat=server ForeColor=DarkGreen></asp:Label> </td> </tr> </table> </div> #end </div> </asp:Content> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/inputWebformBase.cs.vsl Index: inputWebformBase.cs.vsl =================================================================== #set($generatedFile = "${usecase.fullyQualifiedPath}/${usecase.normalizedName}UCBase.cs") using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; namespace ${usecase.packageName} { /// <summary> $usecase.getDocumentation(" /// ") /// </summary> /// <remarks>This is the entry page for the ${usecase.name} use case. There will be one /// of these classes for each of the use cases defined in your model. To start a use /// case, you can simply redirect the user to the ${usecase.normalizedName}UC.aspx page. /// </remarks> public abstract class ${usecase.normalizedName}UCBase : ${usecase.normalizedName}PageBase { protected override void OnLoad(System.EventArgs e) { if (!this.IsPostBack) { base.Controller.StartUseCase(); } } } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/menu.ascx.cs.vsl Index: menu.ascx.cs.vsl =================================================================== #if (${dotNetVersion}=="2.0") namespace ${webAssemblyName} { using System; using System.Data; using System.Drawing; using System.Web; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Security.Principal; using System.Resources; using System.Reflection; using System.Threading; using System.Globalization; /// <summary> /// Summary description for menu. /// </summary> public partial class Menu : System.Web.UI.UserControl { private void Page_Load(object sender, System.EventArgs e) { if (!this.IsPostBack) { string culturePref = ""; if (Request.Cookies["CulturePref"] != null) { culturePref = Request.Cookies["CulturePref"].Value; } Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture (culturePref); Thread.CurrentThread.CurrentUICulture = Thread.CurrentThread.CurrentCulture; ResourceManager resourceManager = new ResourceManager("${webAssemblyName}.Resources.AppResources",Assembly.GetExecutingAssembly()); #foreach($usecase in $usecases) #if($usecase.isFrontEndApplication()) #foreach($group in ${usecase.getMenuGroups()}) this.${group.getName()}Literal.Text = resourceManager.GetString("@menu.${group.getName()}"); #foreach($smenu in ${group.getUseCases()}) #if($security) ${smenu.getRolesConditions()} this.${smenu.getNormalizedName()}LinkButton.Enabled = false; #end this.${smenu.getNormalizedName()}LinkButton.Text = resourceManager.GetString("@menu.${smenu.getNormalizedName()}"); #end #end #end #end } } #foreach($usecase in $usecases) protected void ${usecase.getNormalizedName()}LinkButton_Click(object sender, System.EventArgs e) { Response.Redirect("~/target/src/${usecase.getFullyQualifiedPath()}/${usecase.getNormalizedName()}UC.aspx"); } #end } } #end 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/Default.aspx.cs.vsl Index: Default.aspx.cs.vsl =================================================================== using System; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.Web.Security; namespace ${webAssemblyName} { /// <summary> /// Summary description for _default. /// </summary> public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, System.EventArgs e) { #if(${usecase.secured}) // Assigning roles string roleData = "Admin;User";//${toDoTag} assign roles FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1,"Roles",DateTime.Now,DateTime.Now.AddMinutes(30),false,roleData,"/"); string encTicket = FormsAuthentication.Encrypt(ticket); Response.Cookies.Add(new HttpCookie("Roles",encTicket)); #end //Pass control to the use case marked with the FrontEndApplication stereotype. Response.Redirect("~/target/src/${usecase.fullyQualifiedPath}/${usecase.normalizedName}UC.aspx"); } } } 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/web.config.vsl Index: web.config.vsl =================================================================== <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.web> <!-- DYNAMIC DEBUG COMPILATION Set compilation debug="true" to enable ASPX debugging. Otherwise, setting this value to false will improve runtime performance of this application. Set compilation debug="true" to insert debugging symbols (.pdb information) into the compiled page. Because this creates a larger file that executes more slowly, you should set this value to true only when debugging and to false at all other times. For more information, refer to the documentation about debugging ASP.NET files. --> <compilation defaultLanguage="c#" debug="true" /> <!-- CUSTOM ERROR MESSAGES Set customErrors mode="On" or "RemoteOnly" to enable custom error messages, "Off" to disable. Add <error> tags for each of the errors you want to handle. "On" Always display custom (friendly) messages. "Off" Always display detailed ASP.NET error information. "RemoteOnly" Display custom (friendly) messages only to users not running on the local Web server. This setting is recommended for security purposes, so that you do not display application detail information to remote clients. --> <customErrors defaultRedirect="error.aspx" mode="On" /> <!-- AUTHENTICATION This section sets the authentication policies of the application. Possible modes are "Windows", "Forms", "Passport" and "None" "None" No authentication is performed. "Windows" IIS performs authentication (Basic, Digest, or Integrated Windows) according to its settings for the application. Anonymous access must be disabled in IIS. "Forms" You provide a custom form (Web page) for users to enter their credentials, and then you authenticate them in your application. A user credential token is stored in a cookie. "Passport" Authentication is performed via a centralized authentication service provided by Microsoft that offers a single logon and core profile services for member sites. --> <authentication mode="Windows" /> <!-- AUTHORIZATION This section sets the authorization policies of the application. You can allow or deny access to application resources by user or role. Wildcards: "*" mean everyone, "?" means anonymous (unauthenticated) users. --> <authorization> <deny users="?" /> <allow users="*" /> <!-- <allow users="[comma separated list of users]" roles="[comma separated list of roles]"/> <deny users="[comma separated list of users]" roles="[comma separated list of roles]"/> --> </authorization> <!-- APPLICATION-LEVEL TRACE LOGGING Application-level tracing enables trace log output for every page within an application. Set trace enabled="true" to enable application trace logging. If pageOutput="true", the trace information will be displayed at the bottom of each page. Otherwise, you can view the application trace log by browsing the "trace.axd" page from your web application root. --> <trace enabled="false" requestLimit="10" pageOutput="false" traceMode="SortByTime" localOnly="true" /> <!-- SESSION STATE SETTINGS By default ASP.NET uses cookies to identify which requests belong to a particular session. If cookies are not available, a session can be tracked by adding a session identifier to the URL. To disable cookies, set sessionState cookieless="true". --> <sessionState mode="InProc" cookieless="false" timeout="720" /> <!-- GLOBALIZATION This section sets the globalization settings of the application. --> <globalization requestEncoding="utf-8" responseEncoding="utf-8" /> </system.web> #if($security.equals('true')) #foreach($usecase in $usecases) #foreach($webform in ${usecase.getWebForms()}) <location path="target/${webform.getFullyQualifiedPath()}/${webform.getNormalizedName()}.aspx"> <system.web> <authorization> <allow roles="${usecase.getRolesAsString()}"/> <deny users="?,*" /> </authorization> </system.web> </location> #end #end #end </configuration> 1.1 cartridges/andromda-aspdotnet/src/main/resources/templates/aspdotnet/web2005/resources.resx.vsl Index: resources.resx.vsl =================================================================== <?xml version="1.0" encoding="utf-8"?> <root> <!-- Microsoft ResX Schema Version 2.0 The primary goals of this format is to allow a simple XML format that is mostly human readable. The generation and parsing of the various data types are done through the TypeConverter classes associated with the data types. Example: ... ado.net/XML headers & schema ... <resheader name="resmimetype">text/microsoft-resx</resheader> <resheader name="version">2.0</resheader> <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader> <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader> <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data> <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data> <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64"> <value>[base64 mime encoded serialized .NET Framework object]</value> </data> <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64"> <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value> <comment>This is a comment</comment> </data> There are any number of "resheader" rows that contain simple name/value pairs. Each data row contains a name, and value. The row also contains a type or mimetype. Type corresponds to a .NET class that support text/value conversion through the TypeConverter architecture. Classes that don't support this are serialized and stored with the mimetype set. The mimetype is used for serialized objects, and tells the ResXResourceReader how to depersist the object. This is currently not extensible. For a given mimetype the value must be set accordingly: Note - application/x-microsoft.net.object.binary.base64 is the format that the ResXResourceWriter will generate, however the reader can read any of the formats listed below. mimetype: application/x-microsoft.net.object.binary.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.soap.base64 value : The object must be serialized with : System.Runtime.Serialization.Formatters.Soap.SoapFormatter : and then encoded with base64 encoding. mimetype: application/x-microsoft.net.object.bytearray.base64 value : The object must be serialized into a byte array : using a System.ComponentModel.TypeConverter : and then encoded with base64 encoding. --> <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"> <xsd:import namespace="http://www.w3.org/XML/1998/namespace" /> <xsd:element name="root" msdata:IsDataSet="true"> <xsd:complexType> <xsd:choice maxOccurs="unbounded"> <xsd:element name="metadata"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" /> </xsd:sequence> <xsd:attribute name="name" use="required" type="xsd:string" /> <xsd:attribute name="type" type="xsd:string" /> <xsd:attribute name="mimetype" type="xsd:string" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="assembly"> <xsd:complexType> <xsd:attribute name="alias" type="xsd:string" /> <xsd:attribute name="name" type="xsd:string" /> </xsd:complexType> </xsd:element> <xsd:element name="data"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" /> <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" /> <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" /> <xsd:attribute ref="xml:space" /> </xsd:complexType> </xsd:element> <xsd:element name="resheader"> <xsd:complexType> <xsd:sequence> <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" /> </xsd:sequence> <xsd:attribute name="name" type="xsd:string" use="required" /> </xsd:complexType> </xsd:element> </xsd:choice> </xsd:complexType> </xsd:element> </xsd:schema> <resheader name="resmimetype"> <value>text/microsoft-resx</value> </resheader> <resheader name="version"> <value>2.0</value> </resheader> <resheader name="reader"> <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> <resheader name="writer"> <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value> </resheader> #foreach($usecase in $usecases) #foreach($webform in ${usecase.getWebForms()}) #set($key = "${usecase.normalizedName}_${webform.normalizedName}") <!-- *************************************************************************--> <!-- ${webform.normalizedName} webform in ${usecase.normalizedName} usecase--> <!-- *************************************************************************--> <data name="${key}Page" xml:space="preserve"> <value><![CDATA[${webform.getDocumentation("")}]]></value> </data> #foreach($action in ${webform.outgoing}) #if(!$action.isHyperlink()) #foreach($parameter in ${action.parameters}) #if(!${parameter.hidden}) <data name="${key}_${parameter.name}lbl" xml:space="preserve"> <value><![CDATA[$stringUtils.toPhrase(${parameter.name})]]></value> </data> #if(!${parameter.getViewType().equals('file')}) <data name="${key}_${parameter.name}_${parameter.getViewType()}_Help" xml:space="preserve"> <value><![CDATA[${parameter.getDocumentation("")}]]></value> </data> #end #end #end <data name="${key}_${action.actionMethodName}Button"> <value><![CDATA[$stringUtils.toPhrase(${action.name})]]></value> </data> #end #end <!-- Table actions for the ${webform.normalizedName} webform in ${usecase.normalizedName} usecase--> <!-- TODO: Still need to add resources for table actions --> <!-- Tables for the ${webform.normalizedName} webform in ${usecase.normalizedName} usecase--> #foreach($table in $webform.tables) #foreach ($column in $table.tableColumns) <data name="${key}_${table.name}DG_${column.name}"> <value><![CDATA[$stringUtils.toPhrase(${column.name})]]></value> </data> #end #end #end #end <!-- *************************************************************************--> <!-- Menu --> <!-- *************************************************************************--> #foreach($usecase in $usecases) #if($usecase.isFrontEndApplication()) #foreach($group in ${usecase.getMenuGroups()}) <data name="menu_${group.name}Literal"> <value>${group.name}</value> </data> #foreach($smenu in ${group.getUseCases()}) <data name="menu_${smenu.normalizedName}LinkButton"> <value>$stringUtils.toPhrase(${smenu.name})</value> </data> #end #end #end #end <!-- *************************************************************************--> <!-- Error page --> <!-- *************************************************************************--> <data name="error_errorMessage"> <value>An exception occured, if the problem persists contact your system administrator.</value> </data> </root> 1.1 cartridges/andromda-aspdotnet/src/main/resources/META-INF/andromda/namespace.xml Index: namespace.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1" ?> <namespace name="aspdotnet"> <components> <component name="cartridge"> <path>META-INF/andromda/cartridge.xml</path> </component> <component name="metafacades"> <path>META-INF/andromda/metafacades.xml</path> </component> <component name="profile"> <path>META-INF/andromda/profile.xml</path> </component> </components> <properties> <!-- namespace-propertyGroup merge-point --> <propertyGroup name="Outlets"> <documentation> Defines the locations to which output is generated. </documentation> <property name="web"> <documentation> </documentation> </property> <property name="web_generated"> <documentation> </documentation> </property> <property name="web_manual"> <documentation> </documentation> </property> </propertyGroup> <propertyGroup name="Environment"> <documentation> The properties related to the target IDE and .NET framework versions. </documentation> <property name="dotNetVersion"> <default>1.1</default> <documentation> The target version for the .NET framework. Supports either Microsoft .NET 1.1 or 2.0. </documentation> </property> <property name="visualStudioVersion"> <default>2003</default> <documentation> The target version of the IDE. Currently supports Microsoft Visual Studio .NET 2003 and 2005. </documentation> </property> </propertyGroup> <propertyGroup name="AssemblyNames"> <documentation> The properties that provide names of all dependent assemblies. </documentation> <property name="webAssemblyName"> <documentation> </documentation> </property> <property name="coreAssemblyName"> <documentation> </documentation> </property> <property name="commonAssemblyName"> <documentation> </documentation> </property> </propertyGroup> <propertyGroup name="AssemblyConfiguration"> <documentation> The properties that provide configuration of the assembly. </documentation> <property name="AssemblyTitle"> <documentation> </documentation> </property> <property name="AssemblyDescription"> <documentation> </documentation> </property> <property name="AssemblyConfiguration"> <documentation> </documentation> </property> <property name="AssemblyCompany"> <documentation> </documentation> </property> <property name="AssemblyProduct"> <documentation> </documentation> </property> <property name="AssemblyCopyright"> <documentation> </documentation> </property> <property name="AssemblyTrademark"> <documentation> </documentation> </property> <property name="AssemblyCulture"> <documentation> </documentation> </property> <property name="AssemblyVersion"> <documentation> </documentation> </property> <property name="AssemblyDelaySign"> <documentation> </documentation> </property> <property name="AssemblyKeyFile"> <documentation> </documentation> </property> <property name="AssemblyKeyName"> <documentation> </documentation> </property> <property name="security"> <default>false</default> <documentation> To enable role based security set security property to true </documentation> </property> </propertyGroup> <propertyGroup name="Other"> <property name="backingListPattern"> <default>{0}BackingList</default> <documentation> The pattern used for constructing a parameter's backing list name. A backing list is used when you want to select the value of the parameter from a list (typically used for drop-down select input types). </documentation> </property> <property name="backingValuePattern"> <default>{0}BackingValue</default> <documentation> The pattern used for constructing a parameter's backing value name. A backing value is used with an input table type (when you want to submit values from a table of complex objects). </documentation> </property> <property name="labelListPattern"> <default>{0}LabelList</default> <documentation> The pattern used for constructing the label list name (stores the list of possible parameter value labels). </documentation> </property> <property name="valueListPattern"> <default>{0}ValueList</default> <documentation> The pattern used for constructing the values list name (stores the list of possible parameter values when selecting from a list). </documentation> </property> <property name="dummyData"> <default>false</default> <documentation> Denotes whether or not to render dummy data in places like controllers. </documentation> </property> <property name="toDoTag"> <default>TODO:</default> <documentation> The text to render for 'todo' items in source code. </documentation> </property> </propertyGroup> </properties> </namespace> 1.1 cartridges/andromda-aspdotnet/src/main/resources/META-INF/andromda/metafacades.xml Index: metafacades.xml =================================================================== <?xml version="1.0" encoding="ISO-8859-1" ?> <metafacades> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspWebFormLogicImpl"> <mapping> <property name="frontEndView"/> <property name="containedInFrontEndUseCase"/> </mapping> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspControllerOperationLogicImpl"> <mapping> <property name="ownerIsController"/> </mapping> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspControllerLogicImpl"> <mapping> <property name="useCase"/> </mapping> <!-- property reference="controllerImplementationPattern"/ --> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspSessionObjectLogicImpl"> <mapping> <stereotype>FRONT_END_SESSION_OBJECT</stereotype> </mapping> </metafacade> <!-- mapping rule for uml14 support --> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspEventLogicImpl"> <mapping class="org.omg.uml.behavioralelements.statemachines.SignalEvent$Impl"> <property name="containedInFrontEndUseCase"/> </mapping> </metafacade> <!-- mapping rule for uml14 support --> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspEventLogicImpl"> <mapping class="org.omg.uml.behavioralelements.statemachines.CallEvent$Impl"> <property name="containedInFrontEndUseCase"/> </mapping> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspParameterLogicImpl"> <mapping> <property name="containedInFrontEndUseCase"/> </mapping> <property reference="backingListPattern"/> <property reference="backingValuePattern"/> <property reference="labelListPattern"/> <property reference="valueListPattern"/> </metafacade> <!-- metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspTransitionLogicImpl"> <mapping class="org.omg.uml.behavioralelements.statemachines.Transition$Impl"/> </metafacade --> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspActionLogicImpl"> <mapping> <property name="exitingInitialState"/> <property name="containedInFrontEndUseCase"/> </mapping> <!-- property reference="formImplementationPattern"/> <property reference="formBeanPattern"/> <property reference="formScope"/> <property reference="actionFormKey"/ --> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspActionLogicImpl"> <mapping> <property name="exitingView"/> </mapping> <!-- property reference="formImplementationPattern"/> <property reference="formBeanPattern"/> <property reference="formScope"/> <property reference="actionFormKey"/ --> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspForwardLogicImpl"> <mapping> <property name="containedInFrontEndUseCase"/> </mapping> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspActivityGraphLogicImpl"> <mapping class="org.omg.uml.behavioralelements.activitygraphs.ActivityGraph$Impl"/> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspFinalStateLogicImpl"> <mapping class="org.omg.uml.behavioralelements.statemachines.FinalState$Impl"/> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspUseCaseLogicImpl"> <mapping> <stereotype>FRONT_END_USE_CASE</stereotype> </mapping> </metafacade> <metafacade class="org.andromda.cartridges.aspdotnet.metafacades.AspUseCaseLogicImpl"> <mapping> <stereotype>FRONT_END_APPLICATION</stereotype> </mapping> <!-- property reference="actionFormKey"/ --> </metafacade> </metafacades> 1.1 cartridges/andromda-aspdotnet/src/main/resources/META-INF/andromda/cartridge.xml Index: cartridge.xml =================================================================== <cartridge> <templateEngine className="org.andromda.templateengines.velocity.VelocityTemplateEngine"> <macrolibrary name="templates/aspdotnet/web2003/renderFormInput.vm"/> <macrolibrary name="templates/aspdotnet/uicontrollers/formImplMacros.vm"/> <macrolibrary name="templates/aspdotnet/uicontrollers/formMacros.vm"/> <macrolibrary name="templates/aspdotnet/uicontrollers/Controller.cs.vm"/> <!--macrolibrary name="templates/aspdotnet/web2005/renderActionCommandLinkParameter.vm"/--> <!-- cartridge-macrolibrary merge-point--> </templateEngine> <!-- define the template objects that are made available to the template --> <templateObject name="dateUtils" className="org.andromda.utils.DateUtilsHelper"/> <templateObject name="stringUtils" className="org.andromda.utils.StringUtilsHelper"/> <!-- cartridge-templateObject merge-point--> <property reference="dotNetVersion"/> <property reference="AssemblyTitle"/> <property reference="AssemblyDescription"/> <property reference="AssemblyConfiguration"/> <property reference="AssemblyCompany"/> <property reference="AssemblyProduct"/> <property reference="AssemblyCopyright"/> <property reference="AssemblyTrademark"/> <property reference="AssemblyCulture"/> <property reference="AssemblyVersion"/> <property reference="AssemblyDelaySign"/> <property reference="AssemblyKeyFile"/> <property reference="AssemblyKeyName"/> <property reference="web"/> <property reference="... [truncated message content] |