// Generates the get request for items that the config 'page' section // requests to be shown given a certain param public String genGetByPageParam( PageObj pageObj, Section section, HashMap<String, DataObj> dataObjsMap) { StringBuilder s = new StringBuilder(1024); List<String> showObjs = section.getShow(); List<String> pageParams = section.getParams(); StringBuilder paramQuery = new StringBuilder(256); // create the end of the url for (String param : pageParams) { paramQuery.append("/find/" + param + "/:" + param); } for (String tableName : showObjs) { DataObj dataObj = dataObjsMap.get(tableName); String whereParams = parsePageParam(dataObj, pageParams); String reqParams = makeReqParams(dataObj, pageParams); s.append("app.get('/" + tableName + paramQuery.toString() + "', function(req,res) {\n"); // know when to return response s.append(returnTab(1) + "totalCount = 0;\n"); s.append(returnTab(1) + "count = 0;\n"); // generates the BASIC select * from table where id = ? s.append( returnTab(1) + "var query = \"" + selectProperties(dataObj) + " from " + tableName + " as " + tableName + " where " + whereParams + "\";\n"); s.append(returnTab(1) + "con.query(query," + reqParams + ", function(err, rows0,fields) {\n"); s.append(returnTab(2) + "if(err) throw err;\n"); // once the BASIC info is returned, each foreign key needs to be // expanded. this is done recursively with evaluateFK() tabDepth = 0; queryNo = 0; queryNoNext = 1; String fks = evaluateFK(dataObj, 0, "", "", "row.ID"); s.append(fks); if (fks.length() > 0) { s.append(returnTab(tabDepth + 2) + "count += 1;\n"); } s.append(returnTab(tabDepth + 2) + "if (count == totalCount) {\n"); s.append(returnTab(tabDepth + 3) + "res.jsonp(rows0);\n"); s.append(returnTab(tabDepth + 2) + "}\n"); // adds all of the closing brackets while (tabDepth + 2 > 0) { s.append(returnTab(1 + tabDepth) + "});\n"); if (tabDepth == 1) { s.append(returnTab(1 + tabDepth) + "if (rows0.length == 0) {\n"); s.append(returnTab(2 + tabDepth) + "res.jsonp([])\n"); s.append(returnTab(1 + tabDepth) + "}\n"); } tabDepth -= 1; } s.append("\n"); } return s.toString(); }