303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			303 lines
		
	
	
		
			9.0 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
##|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
 |