public void startResponseReqBody() { ParameterParser parameter = getParameterParser(); String command = parameter.getParameter("command"); if (command != null) { doCommand(command, parameter); return; } JSONObject json = (JSONObject) parameter.getJsonObject(); if (json != null) { command = json.optString("command"); Object paramObj = json.opt("param"); doObjCommand(command, paramObj); return; } completeResponse("404"); }
void doCommand(String command, ParameterParser parameter) { if ("listCategory".equals(command)) { Collection<FilterCategory> categorys = FilterCategory.query(null, -1, 0, null); JSON categorysJson = FilterCategory.collectionToJson(categorys); responseJson(categorysJson); return; } else if ("addEntry".equals(command)) { String categoryId = parameter.getParameter("categoryId"); PersistenceManager pm = JdoUtil.getPersistenceManager(); try { pm.currentTransaction().begin(); FilterCategory filterCategory = FilterCategory.getById(Long.parseLong(categoryId)); String filter = parameter.getParameter("filter"); FilterEntry f = new FilterEntry(filterCategory, filter); f.save(); pm.currentTransaction().commit(); } finally { if (pm.currentTransaction().isActive()) { pm.currentTransaction().rollback(); } } responseJson(categoryId); return; } else if ("getRoleList".equals(command)) { // roleに対するblackList,whilteListを取得する String role = parameter.getParameter("role"); boolean isBlack = "true".equalsIgnoreCase(parameter.getParameter("isBlacklist")); Collection<FilterRole> roles = FilterRole.getByKey(role, isBlack); JSONArray catagoryIds = new JSONArray(); for (FilterRole filterRole : roles) { catagoryIds.add(filterRole.getCategory().getId()); } responseJson(catagoryIds); return; } else if ("setRoleList".equals(command)) { // roleに対するblackList,whilteListを設定する String role = parameter.getParameter("role"); boolean isBlack = "true".equalsIgnoreCase(parameter.getParameter("isBlacklist")); Collection<FilterRole> roles = FilterRole.getByKey(role, isBlack); String[] categoryIds = parameter.getParameter("categoryIds").split(","); Set<Long> idsSet = new HashSet<Long>(); for (String categoryId : categoryIds) { idsSet.add(Long.parseLong(categoryId)); } Iterator<FilterRole> itr = roles.iterator(); while (itr.hasNext()) { FilterRole filterRole = itr.next(); if (idsSet.remove(filterRole.getId())) { itr.remove(); } } PersistenceManager pm = JdoUtil.getPersistenceManager(); try { pm.currentTransaction().begin(); itr = roles.iterator(); while (itr.hasNext()) { FilterRole filterRole = itr.next(); filterRole.delete(); } for (Long id : idsSet) { FilterCategory filterCategory = FilterCategory.getById(id); if (filterCategory == null) { logger.error("not found id." + id); continue; } FilterRole filterRole = new FilterRole(role, isBlack, filterCategory); filterRole.save(); } pm.currentTransaction().commit(); } finally { if (pm.currentTransaction().isActive()) { pm.currentTransaction().rollback(); } } responseJson(categoryIds); return; } else if ("listUpdate".equals(command)) { // categoryListをnetから取得する // String chId=queueManger.createQueue(); String chId = null; String source = parameter.getParameter("source"); try { ListGetter listGetter = new ListGetter(); listGetter.start(source, chId); responseJson(chId); return; } catch (MalformedURLException e) { logger.error("source error.source:" + source, e); } catch (IOException e) { logger.error("fail to listGetter.source:" + source, e); } // queueManger.complete(chId, "fail to listGetter"); return; } completeResponse("404"); }