2010.8.2
从7.26 日一直到今天8.2日,我一直在写一个通过webservice从另一家公司抓取数据的界面,从功能到界面,目前在公司学习到的东西基本都用到了,
比如 界面的布局, 界面的消息机制, 界面的动作机制, 服务的调用, 基础数据模型的使用.
下面做一下总结,其中,
调用webservice 的技术有:
axis的客户端调用:
String strXml="";
Service theWebClientService=new Service();//起服务
Call theCall=(Call)theWebClientService.createCall();//
theCall.setTargetEndpointAddress(ServiceUrl);//参数为连接的webservice的url
theCall.setOperationName(method);//调用的方法的接口的名字
theCall.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);//设置返回结果的类型
strXml=(String)theCall.invoke(args);//调用这个方法
解析xml 的技术有:
插件工程如何导入第三方jar包不会所以就复习了一下用了java 原生的解析xml方法
sax方式:
重写DefaultHandler 里面的相关方法,元素前,元素后,.....
之后
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser saxParser = spf.newSAXParser();
saxParser.parse(new File(filename), 重写的那个defaultHandler的类);
dom方式:
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();//生成一个工厂
DocumentBuilder builder= builderFactory.newDocumentBuilder();
org.w3c.dom.Document document=builder.parse(new InputSource(new ByteArrayInputStream(xmlStr.getBytes())));//处理xml字符串流
最后,别人提醒,公司的bap里面内置了dom4 j这比较爽:一套element 循环遍历就完事了:
Document dom4jDocument = DocumentHelper.parseText(xmlStr);
Element root = dom4jDocument.getRootElement();
提取基础数据的方法有:
List<TableDefine> tableList = getContext().getList(TableDefine.class);
for(int n = 0; n < tableList.size(); n++){
if(tableList.get(n).getCategory() != null
&& tableList.get(n).getCategory().equals("基础数据主体"))
{
ListItem item = new ListItem(this.controls.cbl_1.getList());
item.setData(tableList.get(n).getName());
item.setText(tableList.get(n).getTitle() + "|" + tableList.get(n).getName());
// String field = tableList.get(n).getCategory();
// System.out.println("Tablename:" + field + "||"
// + tableList.get(n).getName());
}
}
获取指定基础数据表的字段:
TableDefine define= context.get(TableDefine.class, tableName);
Iterator<TableFieldDefine> IT=(Iterator<TableFieldDefine>) define.getFields().iterator();
while(IT.hasNext())
{ ....}
用基础数据模型的方法是:
//主表
MasterDataDefine masterDataDefine=context.get(MasterDataDefine.class, tableName);
//基础数据模型指定主表
BaseDataModel model=new BaseDataModel(context, (BusinessModelDefine)masterDataDefine);
//对模型的添加 修改 删除操作..
严重的注意:数据模型的继承有点复杂,要用到它继承的那些方法,在插件工程中要把父类都导齐才能充分发挥
还有在画界面时从全局考虑,总的几行季列要心中有数.尽可能的多准备几行几列
缺乏的技术是Java 的输入输出流生疏了 ,collection 和 map 体系也只记得了 arraylist 和 hashmap