public TopicMap saveOrUpdateTopicMap(final TopicMap topicMap) {
Map<String, Object> params = new HashMap<>();
params.put("Name", topicMap.getName());
params.put("Url", topicMap.getUrl());
params.put("IsEditable", topicMap.isEditable() ? 1 : 0);
params.put("WSOperation", topicMap.getWSOperation());
params.put("WSSoapAction", topicMap.getWSSoapAction());
params.put("WSEndPoint", topicMap.getWSEndPoint());
if(topicMap.isNew()){
SimpleJdbcInsert insert = new SimpleJdbcInsert(getJdbcTemplate());
insert.setTableName("tmmaps");
insert.setGeneratedKeyName("ID");
KeyHolder keyHolder = insert.executeAndReturnKeyHolder(params);
Number number = keyHolder.getKey();
topicMap.setId(number.intValue());
} else{
params.put("id", topicMap.getId());
String sql = "UPDATE tmmaps SET Name=:Name, Url=:Url, IsEditable=:IsEditable, WSOperation=:WSOperation, WSSoapAction=:WSSoapAction, WSEndPoint=:WSEndPoint WHERE id=:id";
getNamedParameterJdbcTemplate().update(sql, params);
}
return topicMap;
}