@Override public void declareOutputFields(OutputFieldsDeclarer outputFieldsDeclarer) { GenericBoltUtils genericBoltUtils = new GenericBoltUtils(); outputFieldsDeclarer.declareStream( streamId, genericBoltUtils.getDeclareOutputFields(previousEmitFileds, statement.getColumns())); }
private void preparedRest() throws Exception { Pattern pattern = Pattern.compile("values(\\s*)\\((.+?)\\)"); Matcher matcher = pattern.matcher(statement.getQuery()); String[] columnsArrys = null; while (matcher.find()) { String columnsStr = matcher.group(2).replace(" ", ""); columnsArrys = columnsStr.split(",(?=([^\']*\'[^\']*\')*[^\']*$)", -1); } for (int i = 0; i < columnsArrys.length; i++) { columnsArrys[i] = columnsArrys[i].substring(1, columnsArrys[i].length() - 1); } if (columnsArrys.length < 3 && columnsArrys.length % 3 != 0) { throw new Exception("invalid rest format"); } Pattern p = Pattern.compile("\\[\\:(.+?)\\]"); for (int i = 0; i < columnsArrys.length / 3; i++) { RestInfo restInfo = new RestInfo(); restInfo.setCmd(RestCmd.valueOf(columnsArrys[i * 3])); restInfo.setUrl(columnsArrys[i * 3 + 1]); restInfo.setBody("".equals(columnsArrys[i * 3 + 2]) ? null : columnsArrys[i * 3 + 2]); List<BaseBindColumnDef> columns = new ArrayList<BaseBindColumnDef>(); String valQuery = columnsArrys[i * 3 + 1]; Matcher m = p.matcher(valQuery); while (m.find()) { String bindName = m.group(1); BaseBindColumnDef bindColumn = new BaseBindColumnDef(); bindColumn.setName(bindName); columns.add(bindColumn); } restInfo.setColumns(columns); restInfos.add(restInfo); } }