@RequestMapping("/console/app/(*:appId)/(~:version)/datalist/builder/(*:id)") public String builder( ModelMap map, @RequestParam("appId") String appId, @RequestParam(value = "version", required = false) String version, @RequestParam("id") String id, @RequestParam(required = false) String json) throws Exception { AppDefinition appDef = appService.getAppDefinition(appId, version); map.addAttribute("appId", appId); map.addAttribute("appVersion", appDef.getVersion()); map.addAttribute("appDefinition", appDef); DatalistDefinition datalist = datalistDefinitionDao.loadById(id, appDef); String listJson = null; if (json != null && !json.trim().isEmpty()) { // read custom JSON from request listJson = json; } else { // get JSON from form definition listJson = datalist.getJson(); } map.addAttribute("id", id); map.addAttribute("datalist", datalist); map.addAttribute("json", PropertyUtil.propertiesJsonLoadProcessing(listJson)); return "dbuilder/builder"; }
protected DataList getDataList() throws BeansException { if (cacheDataList == null) { // get datalist ApplicationContext ac = AppUtil.getApplicationContext(); AppService appService = (AppService) ac.getBean("appService"); DataListService dataListService = (DataListService) ac.getBean("dataListService"); DatalistDefinitionDao datalistDefinitionDao = (DatalistDefinitionDao) ac.getBean("datalistDefinitionDao"); String id = getPropertyString("datalistId"); AppDefinition appDef = appService.getAppDefinition( getRequestParameterString("appId"), getRequestParameterString("appVersion")); DatalistDefinition datalistDefinition = datalistDefinitionDao.loadById(id, appDef); if (datalistDefinition != null) { cacheDataList = dataListService.fromJson(datalistDefinition.getJson()); if (getPropertyString(Userview.USERVIEW_KEY_NAME) != null && getPropertyString(Userview.USERVIEW_KEY_NAME).trim().length() > 0) { cacheDataList.addBinderProperty( Userview.USERVIEW_KEY_NAME, getPropertyString(Userview.USERVIEW_KEY_NAME)); } if (getKey() != null && getKey().trim().length() > 0) { cacheDataList.addBinderProperty(Userview.USERVIEW_KEY_VALUE, getKey()); } cacheDataList.setActionPosition(getPropertyString("buttonPosition")); cacheDataList.setSelectionType(getPropertyString("selectionType")); cacheDataList.setCheckboxPosition(getPropertyString("checkboxPosition")); } } return cacheDataList; }
@RequestMapping("/app/(*:appId)/(~:appVersion)/datalist/embed") public String embedDatalist( ModelMap model, @RequestParam("appId") String appId, @RequestParam(value = "version", required = false) String version, HttpServletRequest request, @RequestParam("_submitButtonLabel") String buttonLabel, @RequestParam("_callback") String callback, @RequestParam("_setting") String callbackSetting, @RequestParam(required = false) String id, @RequestParam(value = "_listId", required = false) String listId, @RequestParam(value = "_type", required = false) String selectionType) throws JSONException { AppDefinition appDef = appService.getAppDefinition(appId, version); DatalistDefinition datalistDefinition = datalistDefinitionDao.loadById(listId, appDef); String json = datalistDefinition.getJson(); DataList dataList = dataListService.fromJson(json); dataList.setSelectionType(selectionType); model.addAttribute("id", id); model.addAttribute("json", json); model.addAttribute("buttonLabel", buttonLabel); model.addAttribute("dataList", dataList); model.addAttribute("setting", callbackSetting); model.addAttribute("callback", callback); return "dbuilder/embedDatalist"; }
protected DataListBinder createDataListBinderFromRequestInternal( AppDefinition appDef, String datalistId, String binderId, HttpServletRequest request) { DataListBinder binder = null; if (binderId != null && binderId.trim().length() > 0) { // create binder binder = dataListService.getBinder(binderId); if (request != null) { // get request params Enumeration e = request.getParameterNames(); while (e.hasMoreElements()) { String paramName = (String) e.nextElement(); if (paramName.startsWith(PREFIX_BINDER_PROPERTY)) { String[] paramValue = (String[]) request.getParameterValues(paramName); String propName = paramName.substring(PREFIX_BINDER_PROPERTY.length()); String value = CsvUtil.getDeliminatedString(paramValue); if (value.contains(SecurityUtil.ENVELOPE) || value.contains(PropertyUtil.PASSWORD_PROTECTED_VALUE)) { DatalistDefinition datalist = datalistDefinitionDao.loadById(datalistId, appDef); if (datalist != null) { value = PropertyUtil.propertiesJsonStoreProcessing(datalist.getJson(), value); } } binder.setProperty(propName, AppUtil.processHashVariable(value, null, null, null)); } } } } return binder; }
@RequestMapping( value = { "/console/app/(*:appId)/(~:appVersion)/datalist/builderPreview/(*:id)", "/client/app/(*:appId)/(*:appVersion)/datalist/(*:id)" }) public String preview( ModelMap map, HttpServletRequest request, @RequestParam("appId") String appId, @RequestParam(value = "appVersion", required = false) String appVersion, @RequestParam("id") String id, @RequestParam(required = false) String json) throws Exception { String view = "dbuilder/view"; // get current app to set into thread AppDefinition appDef = appService.getAppDefinition(appId, appVersion); try { // get data list DataList dataList = new DataList(); if (json != null && !json.trim().isEmpty()) { String tempJson = json; if (tempJson.contains(SecurityUtil.ENVELOPE) || tempJson.contains(PropertyUtil.PASSWORD_PROTECTED_VALUE)) { DatalistDefinition datalistDef = datalistDefinitionDao.loadById(id, appDef); if (datalistDef != null) { tempJson = PropertyUtil.propertiesJsonStoreProcessing(datalistDef.getJson(), tempJson); } } dataList = dataListService.fromJson(AppUtil.processHashVariable(tempJson, null, null, null)); map.addAttribute("json", json); } else { dataList = parseFromJsonParameter(map, dataList, id, request); } map.addAttribute("dataList", dataList); } catch (Exception ex) { StringWriter out = new StringWriter(); ex.printStackTrace(new PrintWriter(out)); String message = ex.toString(); message += "\r\n<pre class=\"stacktrace\">" + out.getBuffer() + "</pre>"; map.addAttribute("error", message); } // set map into model to be used in the JSP template map.addAttribute("properties", new HashMap(map)); return view; }
protected DataList parseFromJsonParameter( ModelMap map, DataList dataList, String id, HttpServletRequest request) { // get parameters String jsonParam = new ParamEncoder(id).encodeParameterName("json"); String json = request.getParameter(jsonParam); // use preview json if available if (json != null && json.trim().length() > 0) { try { String tempJson = json; if (tempJson.contains(SecurityUtil.ENVELOPE) || tempJson.contains(PropertyUtil.PASSWORD_PROTECTED_VALUE)) { AppDefinition appDef = AppUtil.getCurrentAppDefinition(); DatalistDefinition datalist = datalistDefinitionDao.loadById(id, appDef); if (datalist != null) { tempJson = PropertyUtil.propertiesJsonStoreProcessing(datalist.getJson(), tempJson); } } dataList = dataListService.fromJson(AppUtil.processHashVariable(tempJson, null, null, null)); dataList.setId(id); } catch (Exception ex) { map.addAttribute("dataListError", ex.toString()); } } /* else { json = dataListService.toJson(dataList); }*/ String jsonEncoded = null; try { if (json != null) { jsonEncoded = URLEncoder.encode(json, "UTF-8"); } } catch (Exception ex) { LogUtil.error(this.getClass().getName(), ex, "parseFromJsonParameter Error!"); } // set for view map.addAttribute("json", json); map.addAttribute("jsonEncoded", jsonEncoded); map.addAttribute("jsonParam", jsonParam); return dataList; }
@RequestMapping( value = "/console/app/(*:appId)/(~:version)/datalist/builderSave/(*:id)", method = RequestMethod.POST) public void save( Writer writer, @RequestParam("appId") String appId, @RequestParam(value = "version", required = false) String version, @RequestParam("id") String id, @RequestParam("json") String json) throws Exception { AppDefinition appDef = appService.getAppDefinition(appId, version); DatalistDefinition datalist = datalistDefinitionDao.loadById(id, appDef); DataList dlist = dataListService.fromJson(json); datalist.setName(dlist.getName()); datalist.setDescription(dlist.getName()); datalist.setJson(PropertyUtil.propertiesJsonStoreProcessing(datalist.getJson(), json)); boolean success = datalistDefinitionDao.update(datalist); JSONObject jsonObject = new JSONObject(); jsonObject.accumulate("success", success); jsonObject.write(writer); }