`

Dorado 动态创建Dataset实例

    博客分类:
  • java
Web 
阅读更多
Dorado 动态创建Dataset实例来自“dorado 5原理、特性与高级用法 V1.0.doc”.


package sample.skills.createDatasetTest;

import com.bstek.dorado.data.Dataset;
import com.bstek.dorado.data.DatasetListener;
import com.bstek.dorado.data.Field;
import com.bstek.dorado.data.ParameterSet;
import com.bstek.dorado.data.db.AutoDBField;
import com.bstek.dorado.data.db.AutoSqlDataset;
import com.bstek.dorado.data.db.BaseMatchRule;
import com.bstek.dorado.utils.collection.ObjectCollection;
import com.bstek.dorado.utils.variant.DataType;
import com.bstek.dorado.utils.variant.Variant;
import com.bstek.dorado.view.DefaultViewModel;
import com.bstek.dorado.view.EventHandler;
import com.bstek.dorado.view.ViewModel;
import com.bstek.dorado.view.control.Button;
import com.bstek.dorado.view.control.Control;
import com.bstek.dorado.view.control.DataPilot;
import com.bstek.dorado.view.control.PagePilot;
import com.bstek.dorado.view.control.autoform.AutoForm;
import com.bstek.dorado.view.control.autoform.CustomFormElement;
import com.bstek.dorado.view.control.autoform.FormGroup;
import com.bstek.dorado.view.control.command.Command;
import com.bstek.dorado.view.control.command.QueryCommand;
import com.bstek.dorado.view.control.command.UpdateCommand;
import com.bstek.dorado.view.control.dropdown.DatasetDropDown;
import com.bstek.dorado.view.control.dropdown.DropDown;
import com.bstek.dorado.view.control.dropdown.ListDropDown;
import com.bstek.dorado.view.control.table.DataTable;
import com.bstek.dorado.view.data.DatasetWrapper;
import com.bstek.dorado.view.data.FormDataset;
import com.bstek.dorado.view.data.ViewDataset;
import com.bstek.dorado.view.data.ViewField;
import com.bstek.dorado.view.data.validate.Validator;
import com.bstek.dorado.view.data.validate.impl.RequiredValidator;

public class Sample_4_1_All_ViewModel extends DefaultViewModel {

	public void init(int state) throws Exception {
		
		this.createDataset("Form", "datasetForm");
		this.createDataset("Wrapper", "datasetEmployee");
		this.createDataset("Wrapper", "datasetDept");

		super.init(state);

		if (state == ViewModel.STATE_VIEW) {
			this.createControl("ListDropDown", "dropdownSex");
			this.createControl("DatasetDropDown", "dropdownDept");
			this.createControl("QueryCommand", "commandQuery");
			this.createControl("Button", "buttonQuery");
			this.createControl("AutoForm", "formForm");
			this.createControl("PagePilot", "pagepilotEmployee");
			this.createControl("DataPilot", "datapilotEmployee");
			this.createControl("DataTable", "tableEmployee");
			this.createControl("UpdateCommand", "commandUpdate");
			this.createControl("Button", "buttonSave");

			EventHandler event = new EventHandler("onDatasetsPrepared");

			StringBuffer script = new StringBuffer();
			script.append("var record = datasetForm.getCurrent();");
			script.append("record.setValue(\"EMPLOYEE_ID\",\"ANLIN\");");
			event.setScript(script.toString());
			this.addEventHandler(event);
		}
	}

	protected void initDataset(ViewDataset dataset) throws Exception {
		super.initDataset(dataset);
		if (dataset instanceof FormDataset) {
			if ("datasetForm".equals(dataset.getId())) {
				if (this.getState() == ViewModel.STATE_VIEW) {
					dataset.setAutoLoadData(false);
					dataset.setInsertOnEmpty(true);
				}
				Field fieldEMPLOYEE_ID = dataset.addField("EMPLOYEE_ID");
				fieldEMPLOYEE_ID.setLabel("员工编号");
				Field fieldEMPLOYEE_NAME = dataset.addField("EMPLOYEE_NAME");
				fieldEMPLOYEE_NAME.setLabel("员工姓名");
				Field fieldDEPT_ID = dataset.addField("DEPT_ID");
				fieldDEPT_ID.setLabel("部门");
				if (this.getState() == ViewModel.STATE_VIEW) {
					((ViewField) fieldDEPT_ID).setDropDown("dropdownDept");
				}
				Field fieldSEX = dataset.addField("SEX");
				fieldSEX.setLabel("性别");
			}
		} else if (dataset instanceof DatasetWrapper) {
			if ("datasetEmployee".equals(dataset.getId())) {
				dataset.setPageSize(10);
				DatasetListener datasetListener = new CreateDSHand_datasetEmployeeListener();
				dataset.addDatasetListener(datasetListener);

				Variant v = new Variant(DataType.STRING);
				dataset.parameters().setVariant("EMPLOYEE_ID", v);

				DatasetWrapper datasetEmployeeDW = (DatasetWrapper) dataset;
				datasetEmployeeDW.setWrappedType("AutoSql");

				AutoSqlDataset datasetEmployee = (AutoSqlDataset) ((DatasetWrapper) dataset)
						.getWrappedDataset();
				datasetEmployee.setOriginTable("EMPLOYEE");
				datasetEmployee.setKeyFields("EMPLOYEE_ID");

				datasetEmployee.addDummyField("select");

				AutoDBField field = (AutoDBField) datasetEmployee
						.addField("EMPLOYEE_ID");
				field.setTable("EMPLOYEE");
				field.setOriginField("EMPLOYEE_ID");
				field.setLabel("员工编号");
				if (field instanceof ViewField) {
					Validator validator = new RequiredValidator();
					((ViewField) field).addValidator(validator);
				}

				field = (AutoDBField) datasetEmployee.addField("DEPT_ID");
				field.setTable("EMPLOYEE");
				field.setOriginField("DEPT_ID");
				field.setLabel("部门");

				field = (AutoDBField) datasetEmployee.addField("EMPLOYEE_NAME");
				field.setTable("EMPLOYEE");
				field.setOriginField("EMPLOYEE_NAME");
				field.setLabel("员工姓名");

				field = (AutoDBField) datasetEmployee.addField("SEX");
				field.setTable("EMPLOYEE");
				field.setOriginField("SEX");
				field.setLabel("性别");
				if (field instanceof ViewField) {
					((ViewField) field).setDropDown("dropdownSex");
				}

				field = (AutoDBField) datasetEmployee.addField("BIRTHDAY");
				field.setTable("EMPLOYEE");
				field.setOriginField("BIRTHDAY");
				field.setLabel("出生日期");
				field.setDataType(DataType.DATETIME);

				field = (AutoDBField) datasetEmployee.addField("MARRIED");
				field.setTable("EMPLOYEE");
				field.setOriginField("MARRIED");
				field.setDataType(DataType.BOOLEAN);

				field = (AutoDBField) datasetEmployee.addField("SALARY");
				field.setTable("EMPLOYEE");
				field.setOriginField("SALARY");
				field.setDataType(DataType.DOUBLE);

				field = (AutoDBField) datasetEmployee.addField("DEGREE");
				field.setTable("EMPLOYEE");
				field.setOriginField("DEGREE");

				field = (AutoDBField) datasetEmployee.addField("EMAIL");
				field.setTable("EMPLOYEE");
				field.setOriginField("EMAIL");

				field = (AutoDBField) datasetEmployee.addField("WEB");
				field.setTable("EMPLOYEE");
				field.setOriginField("WEB");

				field = (AutoDBField) datasetEmployee.addField("CMNT");
				field.setTable("EMPLOYEE");
				field.setOriginField("CMNT");

				BaseMatchRule baseMatchRule = datasetEmployee.addBaseMatchRule(
						"EMPLOYEE_ID", "=", ":EMPLOYEE_ID");
				baseMatchRule.setEscapeEnabled(true);
				baseMatchRule.setLevel(1);
				baseMatchRule.setTable("EMPLOYEE");

				baseMatchRule = datasetEmployee.addBaseMatchRule(
						"EMPLOYEE_NAME", "like", ":EMPLOYEE_NAME");
				baseMatchRule.setEscapeEnabled(true);
				baseMatchRule.setLevel(1);
				baseMatchRule.setTable("EMPLOYEE");

				baseMatchRule = datasetEmployee.addBaseMatchRule("DEPT_ID",
						"=", ":DEPT_ID");
				baseMatchRule.setEscapeEnabled(true);
				baseMatchRule.setLevel(1);
				baseMatchRule.setTable("EMPLOYEE");

				baseMatchRule = datasetEmployee.addBaseMatchRule("SEX", "=",
						":SEX");
				baseMatchRule.setEscapeEnabled(true);
				baseMatchRule.setLevel(1);
				baseMatchRule.setTable("EMPLOYEE");
				baseMatchRule.setDataType(DataType.BOOLEAN);

			} else if ("datasetDept".equals(dataset.getId())) {
				DatasetWrapper datasetDeptDW = (DatasetWrapper) dataset;
				datasetDeptDW.setWrappedType("AutoSql");

				AutoSqlDataset datasetDept = (AutoSqlDataset) ((DatasetWrapper) dataset)
						.getWrappedDataset();
				datasetDept.setOriginTable("DEPT");

				AutoDBField field = (AutoDBField) datasetDept
						.addField("DEPT_ID");
				field.setTable("DEPT");
				field.setOriginField("DEPT_ID");
				field.setLabel("部门");

				field = (AutoDBField) datasetDept.addField("BRANCH_ID");
				field.setTable("DEPT");
				field.setOriginField("BRANCH_ID");

				field = (AutoDBField) datasetDept.addField("DEPT_NAME");
				field.setTable("DEPT");
				field.setOriginField("DEPT_NAME");

			}
		}
	}

	protected void initControl(Control control) throws Exception {
		System.out.println(5);
		super.initControl(control);
		if (control instanceof DataTable) {
			if ("tableEmployee".equals(control.getId())) {
				DataTable tableEmployee = (DataTable) control;
				DatasetWrapper datasetEmployeeDW = (DatasetWrapper) this
						.getDataset("datasetEmployee");
				Dataset datasetEmployee = datasetEmployeeDW.getWrappedDataset();

				tableEmployee.setDataset(datasetEmployee.getId());
				tableEmployee.setHeight("100%");
				tableEmployee.setShowFilterBar(true);
				tableEmployee.setShowHScrollBar(false);
				tableEmployee.setWidth("100%");

				Field selectField = datasetEmployee.getField("select");
				tableEmployee.addColumnByField(selectField);
				Field EMPLOYEE_IDField = datasetEmployee
						.getField("EMPLOYEE_ID");
				tableEmployee.addColumnByField(EMPLOYEE_IDField);
				Field DEPT_IDField = datasetEmployee.getField("DEPT_ID");
				tableEmployee.addColumnByField(DEPT_IDField);
				Field EMPLOYEE_NAMEField = datasetEmployee
						.getField("EMPLOYEE_NAME");
				tableEmployee.addColumnByField(EMPLOYEE_NAMEField);
				Field SEXField = datasetEmployee.getField("SEX");
				tableEmployee.addColumnByField(SEXField);
				Field BIRTHDAYField = datasetEmployee.getField("BIRTHDAY");
				tableEmployee.addColumnByField(BIRTHDAYField);
			}
		} else if (control instanceof AutoForm) {
			if ("formForm".equals(control.getId())) {
				AutoForm formForm = (AutoForm) control;
				formForm.setDataset("datasetForm");
				formForm.generateDefaultElements();
				ObjectCollection groups = formForm.getGroups();
				if (groups.size() > 0) {
					FormGroup groupDefault = (FormGroup) groups.get(0);
					groupDefault.setTitle("员工查询");
					CustomFormElement customFormElement = (CustomFormElement) groupDefault
							.addElement("Custom", "buttonQuery");
					customFormElement.setControlId("buttonQuery");
					customFormElement.setColSpan(2);
					customFormElement.setShowLabel(false);
					customFormElement.setControlAlign("right");
				}

			}
		} else if (control instanceof Command) {
			if (control instanceof QueryCommand) {
				if ("commandQuery".equals(control.getId())) {
					QueryCommand commandQuery = (QueryCommand) control;
					commandQuery.setConditionDataset("datasetForm");
					commandQuery.setQueryDataset("datasetEmployee");
					EventHandler event = new EventHandler("beforeExecute");

					StringBuffer script = new StringBuffer();
					script.append("var record = datasetForm.getCurrent();");
					script.append("if(record){");
					script.append("	var EMPLOYEE_NAME = record.getValue(\"EMPLOYEE_NAME\");");
					script.append("	if(EMPLOYEE_NAME){");
					script.append("		EMPLOYEE_NAME = \"%\" + EMPLOYEE_NAME + \"%\";");
					script.append("		command.parameters().setValue(\"EMPLOYEE_NAME\",EMPLOYEE_NAME);");
					script.append("	}else{");
					script.append("		command.parameters().removeParameter(\"EMPLOYEE_NAME\");");
					script.append("	}");
					script.append("}");
					event.setScript(script.toString());
					commandQuery.addEventHandler(event);
				}
			} else if (control instanceof UpdateCommand) {
				if ("commandUpdate".equals(control.getId())) {
					UpdateCommand commandUpdate = (UpdateCommand) control;
					commandUpdate.addDatasetInfo("datasetEmployee");
				}
			}
		} else if (control instanceof Button) {
			if ("buttonQuery".equals(control.getId())) {
				Button buttonQuery = (Button) control;
				buttonQuery.setValue("查询");
				buttonQuery.setWidth("80");
				buttonQuery.setCommand("commandQuery");
			} else if ("buttonSave".equals(control.getId())) {
				Button buttonSave = (Button) control;
				buttonSave.setValue("保存");
				buttonSave.setWidth("80");
				buttonSave.setCommand("commandUpdate");
			}
		} else if (control instanceof PagePilot) {
			if ("pagepilotEmployee".equals(control.getId())) {
				PagePilot pagepilotEmployee = (PagePilot) control;
				pagepilotEmployee.setDataset("datasetEmployee");
			}
		} else if (control instanceof DropDown) {
			if (control instanceof ListDropDown) {
				if ("dropdownSex".equals(control.getId())) {
					ListDropDown dropdownSex = (ListDropDown) control;
					dropdownSex.setMapValue(true);
					dropdownSex.addItem(null, "<空>");
					dropdownSex.addItem("true", "男");
					dropdownSex.addItem("false", "女");
				}
			} else if (control instanceof DatasetDropDown) {
				if ("dropdownDept".equals(control.getId())) {
					DatasetDropDown dropdownDept = (DatasetDropDown) control;
					dropdownDept.setDataset("datasetDept");
					dropdownDept.setStartWithEmptyRecord(true);
					dropdownDept.setMapValue(true);
					dropdownDept.setLabelField("DEPT_NAME");
					dropdownDept.setValueField("DEPT_ID");
				}
			}
		} else if (control instanceof DataPilot) {
			if ("datapilotEmployee".equals(control.getId())) {
				DataPilot datapilotEmployee = (DataPilot) control;
				datapilotEmployee.setDataset("datasetEmployee");
			}
		}
	}

	protected void initDatasets() throws Exception {
		super.initDatasets();
	}

	protected void initControls() throws Exception {
		super.initControls();
	}

	protected void doLoadData(ViewDataset dataset) throws Exception {
		super.doLoadData(dataset);
	}

	protected void doLoadData() throws Exception {
		super.doLoadData();
	}

	protected void doUpdateData(ParameterSet parameters,
			ParameterSet outParameters) throws Exception {
		super.doUpdateData(parameters, outParameters);
	}

}
分享到:
评论
1 楼 zhameng 2010-10-27  
兄弟,拜托加点注释行不?

相关推荐

    dorado5的Dataset说明.doc

    ### dorado5的Dataset核心知识点解析 #### 一、Dataset在Dorado开发中的角色与重要性 Dataset在Dorado框架中扮演着至关重要的角色,它相当于Model-View-Controller(MVC)架构中的模型(Model),主要负责存储和...

    dorado 7 前端页面js动态创建控件 demo代码

    在Dorado 7中,前端页面的开发常常涉及到JavaScript动态创建控件的场景。Dorado是一个功能强大的企业级UI框架,它提供了丰富的组件库和强大的数据绑定能力,使得开发者能够构建出交互性强、用户体验良好的Web应用。...

    Dorado软件dataset字段EL判断表达式

    ### Dorado软件Dataset字段EL判断表达式详解 在日常工作中,我们经常需要用到Dorado软件中的Dataset字段EL(Expression Language)判断表达式来进行数据的有效性验证。这些表达式可以帮助我们在前端直接进行格式...

    dorado实例

    Dataset在运行时会有Server端和Client端两种实例。 Dataset不可以直接显示,一般须通过数据控件来展示其中的数据。  Control: 各种可视化的控件。 包含数据控件和非数据控件。 其中非数据控件一般与数据操作...

    dorado新手快速入门

    3. **创建Dorado工程** - **创建工程**:在IDE中新建一个Dorado项目,指定项目名称和位置。 - **配置数据源**:配置项目的数据源,例如通过修改`datasource.xml`来设置数据库连接信息,拷贝`hsql.jar`到相应目录,...

    Dorado7/9开发环境 (解压即用Eclipse+dorado插件)支持dorado7和dorado9

    标题中的"Dorado7/9开发环境 (解压即用Eclipse+dorado插件)支持dorado7和dorado9"表明这是一个专为Dorado7和Dorado9开发设计的集成开发环境(IDE)。这个环境基于Eclipse,一个广泛使用的开源Java IDE,它已经被扩展...

    dorado4实例参考指南(pdf)

    ### Dorado4实例参考指南知识点概述 #### 一、前期准备 **1.1 如何设定与MySQL的数据连接** 为了确保应用程序能够顺利地与MySQL数据库进行交互,正确配置数据源是非常重要的一步。以下是对如何在Dorado环境中设置与...

    dorado5高级用法,原理,特性完整教程

    - **通过Dataset驱动的动态Control**:根据Dataset中的数据动态生成Control。 - **封装Controls**:将多个Control组合成一个复合Control。 #### 六、总结 通过本书的学习,读者不仅能够深入理解Dorado5的工作原理...

    dorado4数据库开发指南(pdf)

    - **简单应用范例**:这部分内容详细介绍了如何使用Dorado创建一个基本的应用程序,涵盖了从数据源配置到数据操作的全过程。 - **计算字段**:展示了如何在Dorado中使用计算字段来动态生成数据。 - **SQL动态参数**...

    Dorado Marmot使用简介

    Dorado Marmot作为一款与Spring框架无缝集成的开源组件,在Dorado平台内被设计为一种新型的Dataset类型。其核心价值在于提供数据加载与数据提交接口,使得开发者能够轻松实现业务逻辑,并通过Spring管理这些组件的...

    Dorado5自定义组件开发指南

    在Dorado5的工作流程中,首先ViewModel根据用户配置创建,包含了各种Control和Dataset,并建立它们之间的绑定关系。外部数据(如数据库或业务逻辑层的数据)被填充到Dataset中。然后,JSP用于控制界面布局,定义各种...

    dorado client-api

    - **初始化客户端**:首先,需要创建并配置Dorado客户端实例,设置服务发现策略和连接参数。 - **获取服务代理**:通过客户端实例获取服务代理,指定服务ID或服务接口类。 - **调用服务**:使用服务代理执行业务...

    dorado7离线中文文档.7z

    2. **快速入门**:提供快速上手的教程,指导如何创建第一个 Dorado 应用。 3. **API 参考**:详尽列出 Dorado7.5 的所有类、接口、方法和属性,包括它们的用途、参数和返回值。 4. **组件库**:介绍 Dorado 提供的...

    dorado7-eclipse研发工具

    【 dorado7-eclipse研发工具 】是一款专为 dorado7 前端框架开发设计的集成环境,尤其适用于那些需要进行国有企业和银行等传统项目的后期维护工作。Dorado7 是一个基于Java的企业级Web应用开发框架,它提供了一整套...

    dorado下载Jar包

    Dorado 4是该框架的一个版本,包含了众多用于创建动态Web应用的组件和功能。这个jar包是开发Dorado应用的基础,它集成了大量的UI控件、数据绑定机制和事件处理模型,使得开发者能够快速地构建出响应式且交互性强的...

    dorado5学习资料

    锐道DORADO5是一款强大的展现中间件软件,专为企业级应用设计,提供高效的数据展现和交互能力。本文将深入探讨DORADO5的核心特性、功能、安装部署以及技术手册中的关键知识点。 一、DORADO5核心特性 1. 高性能:...

    dorado入门指南经典教程

    * 创建工程:使用Dorado开发工具创建一个新的工程,了解工程结构和文件组织方式。 * 配置数据源:配置数据源,包括创建datasource.xml文件、copy hsql.jar文件等。 * 连接测试:测试数据源连接,确保数据源配置正确...

    dorado-hibernate和dorado-core的jar包

    1. **组件模型**:Dorado的核心组件模型支持面向服务的架构(SOA),使得开发者可以轻松创建和管理服务以及服务之间的依赖关系。 2. **事件驱动**:基于事件的编程模型使得Dorado能够实现松耦合,使得组件之间的...

    dorado7-ide-0.7.2.zip

    《Dorado7 IDE 0.7.2:前端开发的新选择》 在当前的软件开发领域,前端框架的发展日新月异,其中Dorado7以其独特的特性和强大的功能,逐渐吸引了众多开发者的关注。而“dorado7-ide-0.7.2.zip”这个压缩包,正是为...

    dorado dorado7 实战 标准课程 初级中级 示例代码

    本实战课程旨在帮助初学者和有一定基础的开发者深入理解Dorado7的核心概念和技术,通过实例代码的学习,提升在实际项目中的应用能力。以下是针对"初级"和"中级"阶段的关键知识点详解: ### 初级阶段 1. **Dorado7...

Global site tag (gtag.js) - Google Analytics