public void removeParameter(int id, Session session) { Parameter parameter = findParameter(id, true); // if parameter == null, it maybe response parameter if (parameter == null) { parameter = findParameter(id, false); // if parameter == null still, it must be child parameter of a complex parameter if (parameter == null) { parameter = findChildParameter(id); if (parameter != null && parameter.getComplexParameterList() != null) { for (Parameter pComplex : parameter.getComplexParameterList()) { pComplex.getParameterList().remove(parameter); session.delete(parameter); } } return; } Iterator<Action> iterator = parameter.getActionResponseList().iterator(); while (iterator.hasNext()) { iterator.next().getResponseParameterList().remove(parameter); session.delete(parameter); } } else { Iterator<Action> iterator = parameter.getActionRequestList().iterator(); while (iterator.hasNext()) { iterator.next().getRequestParameterList().remove(parameter); session.delete(parameter); } } }
/** * find parameter recursively recursive: p.parameterList[0].parameterList[0]..... * * @param p * @param id * @return return the object found, other wise return null */ private Parameter findParameterRecursively(Parameter p, int id) { Iterator<Parameter> iterator = p.getParameterList().iterator(); while (iterator.hasNext()) { Parameter parameter = iterator.next(); if (parameter.getId() == id) { return parameter; } parameter = findParameterRecursively(parameter, id); if (parameter != null) { return parameter; } } return null; }