package com.tenwa.reckon.product; import java.util.Hashtable; import java.util.Vector; import com.amarsoft.are.jbo.BizObject; import com.amarsoft.are.lang.StringX; import com.amarsoft.awe.dw.ASDataObject; import com.amarsoft.awe.dw.ASDataWindow; import com.amarsoft.awe.dw.handler.BusinessProcessData; import com.amarsoft.awe.dw.ui.htmlfactory.BaseInfoGenerator; import com.amarsoft.awe.dw.ui.htmlfactory.InfoHtmlGenerator; import com.amarsoft.awe.dw.ui.htmlfactory.InfoHtmlWithASDataObjectGenerator; import com.amarsoft.awe.dw.ui.htmlfactory.imp.DefaultInfoHtmlGenerator; import com.amarsoft.awe.dw.ui.invoke.GenHtmlInvoker; import com.amarsoft.awe.dw.ui.invoke.GenHtmlInvokerFilter; import com.amarsoft.awe.dw.ui.keyfilter.jsgenerate.IKeyFilterBuilder; import com.amarsoft.awe.dw.ui.keyfilter.jsgenerate.KeyFilterBuilder; import com.amarsoft.awe.dw.ui.util.Const; import com.amarsoft.awe.dw.ui.validator.client.IVaildateJSCode; import com.amarsoft.awe.dw.ui.validator.client.JQueryForm; import com.amarsoft.awe.util.ObjectConverts; public class ASDataWindowSeUtil { public static Vector genHTMLDataWindow(ASObjectWindowCalc datawindow,String sArgsValue, BusinessProcessData bpData, int iMyMaxRows) throws Exception { ASDataObject asObj = datawindow.getDataObject(); asObj.setInitParameters(datawindow.getParameters()); asObj.setParameters(datawindow.getParameters()); String dataQueryClass = asObj.getDataQueryClass(); if (datawindow.Style.equals("2")) { asObj.setHtmlEvent("", "onfocus", "showItemTips", "this"); asObj.setHtmlEvent("", "onblur", "hideItemTips", "this"); if (datawindow.ReadOnly.equals("-1")) datawindow.ReadOnly = "0"; else if (datawindow.ReadOnly.equals("2")) datawindow.ReadOnly = "-2"; if (!StringX.isSpace(sArgsValue)&& (!sArgsValue.startsWith("{") || !sArgsValue.endsWith("}"))) sArgsValue = ASDataWindow.getTrueParams(asObj.getJboWhere(),sArgsValue); InfoHtmlGenerator generator = null; if (StringX.isEmpty(dataQueryClass)) { generator = new DefaultInfoHtmlGenerator(asObj, sArgsValue,datawindow.getWebRootPath(), datawindow.getRequest()); } else { InfoHtmlWithASDataObjectGenerator generator2 = (InfoHtmlWithASDataObjectGenerator) Class.forName(dataQueryClass).newInstance(); generator2.initBasicParams(asObj, sArgsValue,datawindow.getWebRootPath(), datawindow.getRequest()); generator = generator2; } if (datawindow.ReadOnly.equals("1")) generator.setInputStatus(2); else if (datawindow.ReadOnly.equals("-2")) generator.setInputStatus(-2); generator.run(bpData); Vector vTemp = new Vector(); if (StringX.isEmpty(dataQueryClass)) { vTemp.add(getHtmlResult(datawindow,asObj,(DefaultInfoHtmlGenerator)generator,asObj.getStyleId())); }else{ vTemp.add(getHtmlResult(datawindow,asObj,(InfoHtmlWithASDataObjectGenerator)generator,asObj.getStyleId())); } datawindow.CurPage.getCurComp().saveDataObject(asObj); return vTemp; } return null; } public static String getHtmlResult(ASObjectWindowCalc datawindow,ASDataObject asObj,BaseInfoGenerator generator,String styleId) throws Exception{ BizObject bizObj=generator.getBizObj(); Hashtable virtualFieldValues=generator.getVirtualFieldValues(); datawindow.setData(virtualFieldValues); int inputStatus=generator.getInputStatus(); String webRootPath=generator.getWebRootPath(); String formName="myiframe0"; Vector rules=generator.getRules(); String serializedJBO=ObjectConverts.getString(bizObj); String serializedASD=asObj.getSerializableName(); //租金测算 GenHtmlInvoker invoker = new GenHtmlInvokerCalc(datawindow); asObj.setNeedFillDefaultValue(bizObj.getState() == 2); //生成表格 String sResult = invoker.generate(asObj, styleId, bizObj,virtualFieldValues, inputStatus, false, webRootPath); if (bizObj.getState() != 2) sResult = sResult.replaceAll("\\{dwrowcount\\}", "1"); else sResult = sResult.replaceAll("\\{dwrowcount\\}", "0"); IVaildateJSCode validCode = new JQueryForm(asObj,asObj.getValidateTagList()); //生成验证规则 sResult = (new StringBuilder()).append(sResult).append("").toString(); sResult = sResult.replaceAll("\\{SERIALIZED_JBO\\}", serializedJBO); sResult = sResult.replaceAll("\\{SERIALIZED_ASD\\}", serializedASD); String[] displayFields = invoker.getDisplayFields(); StringBuffer sCode = new StringBuffer(); if (displayFields != null) { for (int i = 0; i < displayFields.length; i++) { sCode.append((new StringBuilder()).append(",'").append(displayFields[i]).append("'").toString()); } } sResult = (new StringBuilder()).append(sResult).append("\n").toString(); return sResult; } public static String getHtmlResult(ASObjectWindowCalc datawindow,ASDataObject asObj,InfoHtmlWithASDataObjectGenerator generator,String styleId) throws Exception{ GenHtmlInvoker invoker = new GenHtmlInvokerCalc(datawindow); Hashtable data=generator.getData(); datawindow.setData(data); int inputStatus=-2; String sResult = invoker.generate(asObj, styleId, data, inputStatus,false, datawindow.getWebRootPath()); sResult = sResult.replaceAll("\\{dwrowcount\\}", "0"); String displayFields[] = invoker.getDisplayFields(); StringBuffer sCode = new StringBuffer(); if (displayFields != null) { for (int i = 0; i < displayFields.length; i++) { sCode.append((new StringBuilder()).append(",'").append(displayFields[i]).append("'").toString()); } } sResult = (new StringBuilder()).append(sResult).append("\n").toString(); return sResult; } }