This commit is contained in:
302
PROMS/MyGeneration/csla_21/Learning.csgen
Normal file
302
PROMS/MyGeneration/csla_21/Learning.csgen
Normal file
@@ -0,0 +1,302 @@
|
||||
##|TYPE Template
|
||||
##|UNIQUEID 9fcabf5d-31fd-4546-8750-b6c1f7b89087
|
||||
##|TITLE Learning Example
|
||||
##|NAMESPACE
|
||||
##|SOURCE_TYPE Source
|
||||
##|OUTPUT_LANGUAGE C#
|
||||
##|GUI_ENGINE .Net Script
|
||||
##|GUI_LANGUAGE C#
|
||||
##|GUI_BEGIN
|
||||
|
||||
public class GeneratedGui : DotNetScriptGui
|
||||
{
|
||||
public GeneratedGui(ZeusContext context) : base(context) {}
|
||||
|
||||
//-----------------------------------------
|
||||
// The User Interface Entry Point
|
||||
//-----------------------------------------
|
||||
public override void Setup()
|
||||
{
|
||||
if ( !input.Contains( "chooseTables" ) || !input.Contains( "txtPath" ) ||
|
||||
( !input.Contains( "chkClass" ) && !input.Contains( "chkNaming" ) ) )
|
||||
{
|
||||
if(context.Objects.ContainsKey("DnpUtils"))DnpUtils.ReadInputFromCache(context);
|
||||
// UI Form Layout
|
||||
ui.Title = "CSLA Object Mapping";
|
||||
ui.Width = 600;
|
||||
ui.Height = 450;
|
||||
// Output Path Label, TextBox and Button
|
||||
GuiLabel label1 = ui.AddLabel( "label1", "Select the output path:", "Select the output path in the field below." );
|
||||
// label1.Width = 200;
|
||||
GuiTextBox outputPath = ui.AddTextBox( "outputPath", GetDefault("defaultOutputPath"), "Select the Output Path." );
|
||||
outputPath.Width = 450;
|
||||
GuiFilePicker selectPath = ui.AddFilePicker( "selectPath", "Select Path", "Select the Output Path.", "outputPath", true );
|
||||
selectPath.Top = outputPath.Top;
|
||||
selectPath.Width = 100;
|
||||
selectPath.Left = outputPath.Left + outputPath.Width + 20;
|
||||
// Namespace Label and TextBox
|
||||
GuiLabel label2 = ui.AddLabel( "label2", "Namespace: ", "Provide your objects namespace." );
|
||||
label2.Width = 280;
|
||||
GuiTextBox classNamespace = ui.AddTextBox( "classNamespace", "Volian.Object.Library", "Provide your objects namespace." );
|
||||
classNamespace.Width = 280;
|
||||
// Member Prefix Label and TextBox
|
||||
GuiLabel label3 = ui.AddLabel( "label3", "Member prefix: ", "Provide your member prefix." );
|
||||
label3.Width = 100;
|
||||
label3.Top = label2.Top;
|
||||
label3.Left = label2.Width + 20;
|
||||
GuiTextBox memberPrefix = ui.AddTextBox( "memberPrefix", "_", "Provide your member prefix." );
|
||||
memberPrefix.Width = 100;
|
||||
memberPrefix.Top = classNamespace.Top;
|
||||
memberPrefix.Left = classNamespace.Width + 20;
|
||||
// Database Connection Name Label and TextBox
|
||||
GuiLabel label3A = ui.AddLabel( "label3A", "dbConnection: ", "Provide a Connection Name." );
|
||||
label3A.Width = 150;
|
||||
label3A.Top = label3.Top;
|
||||
label3A.Left = label3.Left+label3.Width + 10;
|
||||
GuiTextBox dbConnection = ui.AddTextBox( "dbConnection", "VEPROMS", "Provide a Connection Name." );
|
||||
dbConnection.Width = 150;
|
||||
dbConnection.Top = memberPrefix.Top;
|
||||
dbConnection.Left = memberPrefix.Left + memberPrefix.Width + 10;
|
||||
|
||||
// Setup Database selection combobox.
|
||||
GuiLabel label4 = ui.AddLabel( "label4", "Select a database:", "Select a database in the dropdown below." );
|
||||
label4.Width = 280;
|
||||
GuiComboBox chooseDatabase = ui.AddComboBox( "chooseDatabase", "Select a database." );
|
||||
chooseDatabase.Width = 280;
|
||||
|
||||
GuiCheckBox chkPrimary = MakeGuiCheckBox( "chkPrimary", "Primary Keys", true, "Show Primary Keys",100 );
|
||||
chkPrimary.Checked = false;
|
||||
GuiCheckBox chkColumns = MakeGuiCheckBox( "chkColumns", "Columns", true, "Show Columns" ,150,chkPrimary,200,0);
|
||||
chkColumns.Checked = false;
|
||||
GuiCheckBox chkFK = MakeGuiCheckBox( "chkFK", "Foreign Keys", true, "Show Foreign Keys" ,150,chkPrimary,400,0);
|
||||
chkFK.Checked = false;
|
||||
// Setup Tables selection multi-select listbox.
|
||||
GuiLabel label7 = ui.AddLabel( "label7", "Select tables:", "Select tables from the listbox below." );
|
||||
//label7.Top = chkInternal.Top + 20;
|
||||
GuiListBox chooseTables = ui.AddListBox( "chooseTables", "Select tables." );
|
||||
chooseTables.Height = 120;
|
||||
|
||||
// Setup Views selection multi-select listbox.
|
||||
//GuiLabel label8 = ui.AddLabel( "label8", "Select views:", "Select views from the listbox below." );
|
||||
//GuiListBox chooseViews = ui.AddListBox( "chooseViews", "Select views." );
|
||||
//chooseViews.Height = 80;
|
||||
|
||||
// Attach the onchange event to the cmbDatabases control.
|
||||
setupDatabaseDropdown( chooseDatabase );
|
||||
GuiLabel labelTest = ui.AddLabel( "labelTest", "Status: Select CheckBox to Run", "Checkbox must be selected first" );
|
||||
chooseDatabase.AttachEvent( "onchange", "chooseDatabase_onchange" );
|
||||
chkPrimary.AttachEvent( "onclick", "checkbox_onclick" );
|
||||
chkColumns.AttachEvent( "onclick", "checkbox_onclick" );
|
||||
chkFK.AttachEvent( "onclick", "checkbox_onclick" );
|
||||
chooseTables.AttachEvent( "onchange", "chooseTable_onclick" );
|
||||
ui.ShowGui = true;
|
||||
GuiButton btnOK = ui.AddButton( "OK", "OK", "Generate Code" );
|
||||
btnOK.ClosesForm = true;
|
||||
btnOK.Enabled = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
ui.ShowGui = false;
|
||||
}
|
||||
}
|
||||
public void setupDatabaseDropdown( GuiComboBox Databases )
|
||||
{
|
||||
try
|
||||
{
|
||||
if( MyMeta.IsConnected )
|
||||
{
|
||||
Databases.BindData( MyMeta.Databases );
|
||||
if( MyMeta.DefaultDatabase != null )
|
||||
{
|
||||
Databases.SelectedValue = MyMeta.DefaultDatabase.Alias;
|
||||
bindTables( Databases.SelectedValue );
|
||||
bindViews( Databases.SelectedValue );
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void bindTables( string sDatabase )
|
||||
{
|
||||
//int count = 0;
|
||||
|
||||
GuiListBox lstTables = ui["chooseTables"] as GuiListBox;
|
||||
|
||||
try
|
||||
{
|
||||
IDatabase db = MyMeta.Databases[sDatabase];
|
||||
lstTables.BindData(db.Tables);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void bindViews( string sDatabase )
|
||||
{
|
||||
//int count = 0;
|
||||
|
||||
GuiListBox lstViews = ui["chooseViews"] as GuiListBox;
|
||||
|
||||
try
|
||||
{
|
||||
IDatabase db = MyMeta.Databases[sDatabase];
|
||||
lstViews.BindData( db.Views );
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void chooseDatabase_onchange( GuiComboBox control )
|
||||
{
|
||||
//int count = 0;
|
||||
|
||||
GuiComboBox cmbDatabases = ui["chooseDatabase"] as GuiComboBox;
|
||||
|
||||
bindTables( cmbDatabases.SelectedText );
|
||||
bindViews( cmbDatabases.SelectedText );
|
||||
GuiTextBox dbConnection = ui["dbConnection"] as GuiTextBox;
|
||||
dbConnection.Text=cmbDatabases.SelectedText;
|
||||
GuiTextBox classNamespace = ui["classNamespace"] as GuiTextBox;
|
||||
classNamespace.Text=cmbDatabases.SelectedText + ".Object.Library";
|
||||
Status = string.Format("chooseDatabase_onchange");
|
||||
}
|
||||
private string Status
|
||||
{
|
||||
set
|
||||
{
|
||||
GuiLabel labelTest = ui["labelTest"] as GuiLabel;
|
||||
labelTest.Text = value;
|
||||
}
|
||||
}
|
||||
private GuiButton btnOK
|
||||
{
|
||||
get
|
||||
{
|
||||
foreach(IGuiControl ctrl in ui)
|
||||
{
|
||||
if(ctrl.GetType().Name == "GuiButton"){
|
||||
return ctrl as GuiButton;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
public void SetupOkButton()
|
||||
{
|
||||
Status = string.Format("checkBox_onchange");
|
||||
GuiCheckBox chkPrimary= ui["chkPrimary"] as GuiCheckBox;
|
||||
GuiCheckBox chkColumns= ui["chkColumns"] as GuiCheckBox;
|
||||
GuiCheckBox chkFK= ui["chkFK"] as GuiCheckBox;
|
||||
GuiLabel labelTest = ui["labelTest"] as GuiLabel;
|
||||
string status = "";
|
||||
if(chkPrimary.Checked)status+=", " + chkPrimary.Text;
|
||||
if(chkColumns.Checked)status+=", " + chkColumns.Text;
|
||||
if(chkFK.Checked)status+=", " + chkFK.Text;
|
||||
if(status == "")
|
||||
{
|
||||
btnOK.Enabled = false;
|
||||
Status="Status: Select CheckBox to Run";
|
||||
}
|
||||
else
|
||||
{
|
||||
GuiListBox lb = ui["chooseTables"] as GuiListBox;
|
||||
if(lb.SelectedItems.Count > 0)
|
||||
{
|
||||
btnOK.Enabled = true;
|
||||
Status = string.Format("Will process: {0} {1}",status.Substring(2),lb.SelectedItems.Count);
|
||||
}
|
||||
else
|
||||
{
|
||||
Status = "Select one or more tables to process.";
|
||||
btnOK.Enabled = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void checkbox_onclick( GuiCheckBox control )
|
||||
{
|
||||
SetupOkButton();
|
||||
}
|
||||
public void chooseTable_onclick( GuiListBox control )
|
||||
{
|
||||
SetupOkButton();
|
||||
}
|
||||
private string GetDefault(string sName)
|
||||
{
|
||||
if( input.Contains( sName ) )
|
||||
{
|
||||
return input[sName].ToString();
|
||||
}
|
||||
return "";
|
||||
}
|
||||
<%#FILE MakeGuiCheckBox.cs %>
|
||||
|
||||
}
|
||||
##|GUI_END
|
||||
##|BODY_MODE Markup
|
||||
##|BODY_ENGINE .Net Script
|
||||
##|BODY_LANGUAGE C#
|
||||
##|BODY_TAG_START <%
|
||||
##|BODY_TAG_END %>
|
||||
##|BODY_BEGIN
|
||||
<%
|
||||
public class GeneratedTemplate : DotNetScriptTemplate
|
||||
{
|
||||
public GeneratedTemplate(ZeusContext context) : base(context) {}
|
||||
//---------------------------------------------------
|
||||
// Render() is where you want to write your logic
|
||||
//---------------------------------------------------
|
||||
public override void Render()
|
||||
{
|
||||
string dbName = input["chooseDatabase"].ToString();
|
||||
ArrayList selectedTables = input["chooseTables"] as ArrayList;
|
||||
foreach(string tblName in selectedTables)
|
||||
{
|
||||
ITable tbl = MyMeta.Databases[dbName].Tables[tblName];
|
||||
if((bool)input["chkPrimary"])PrimaryKeys(tbl);
|
||||
if((bool)input["chkColumns"])Details(tbl);
|
||||
if((bool)input["chkFK"])ForeignKeys(tbl);
|
||||
}
|
||||
}
|
||||
private void PrimaryKeys(ITable tbl)
|
||||
{
|
||||
output.writeln("Table - " + tbl.Name);
|
||||
foreach(IColumn col in tbl.PrimaryKeys)
|
||||
{
|
||||
output.writeln(" Column - " + col.Name);
|
||||
}
|
||||
}
|
||||
private void Details(ITable tbl)
|
||||
{
|
||||
Details(tbl,0);
|
||||
}
|
||||
private void Details(ITable tbl, int indent)
|
||||
{
|
||||
string sPad = "".PadRight(indent * 2);
|
||||
%> <%=sPad%> Table - <%=tbl.Name%><%
|
||||
foreach(IColumn col in tbl.Columns)
|
||||
{
|
||||
%>
|
||||
<%=sPad%> Column - <%=col.Name%> <%=col.DataTypeNameComplete%><%
|
||||
}
|
||||
}
|
||||
private void ForeignKeys(ITable tbl)
|
||||
{
|
||||
output.writeln("Table - " + tbl.Name);
|
||||
foreach(IForeignKey fk in tbl.ForeignKeys)
|
||||
{
|
||||
%>
|
||||
ForeignKey - <%=fk.Name%>
|
||||
Primary
|
||||
<%Details(fk.PrimaryTable,6);%>
|
||||
Foreign
|
||||
<%Details(fk.ForeignTable,6);%><%
|
||||
}
|
||||
}
|
||||
}
|
||||
%>
|
||||
##|BODY_END
|
Reference in New Issue
Block a user