private JSONValue toJson() { final JSONObject data = null == restoreddata ? new JSONObject() : restoreddata; try { data.put("historyversion", new JSONString(SearchPanelModel.historyversion)); data.put("selectedtype", new JSONString(selectedCriterion.displaytype)); final Iterator<String> iter = criteria.keySet().iterator(); while (iter.hasNext()) { final String searchTypeKey = iter.next(); if (!selectedCriterionHistory.containsKey(searchTypeKey)) { continue; } final JSONObject searchdata = new JSONObject(); final JSONObject userdata = new JSONObject(); searchdata.put(Context.get().getChallengeLogin().toLowerCase(), userdata); userdata.put( "selectedcriterion", new JSONString(selectedCriterionHistory.get(searchTypeKey).getName())); final JSONObject criteriadata = new JSONObject(); for (final Criterion criterion : criteria.get(searchTypeKey).values()) { final String s = CriterionHistory.Writer.toJson(criterion.getHistory()); criteriadata.put(criterion.getName(), JSONParser.parseStrict(s)); } userdata.put("criteria", criteriadata); if (searchhistory.containsKey(searchTypeKey)) { userdata.put( "searchhistory", JSONParser.parseStrict( SearchHistory.Writer.toJson(searchhistory.get(searchTypeKey)))); } if (accesshistory.containsKey(searchTypeKey)) { userdata.put( "accesshistory", JSONParser.parseStrict( AccessHistory.Writer.toJson(accesshistory.get(searchTypeKey)))); } data.put(selectedCriterionHistory.get(searchTypeKey).getType().toLowerCase(), searchdata); } } catch (final Exception e) { getLogger().severe("SearchModel.toJson() : " + e); } return data; }