public static Note decodeToNote(Map m) throws GeneralException { String chid = TypeEncoder.getString(MessageFieldNames.chapterid, m); String chver = TypeEncoder.getString(MessageFieldNames.chapterversion, m); String cname = TypeEncoder.getString(MessageFieldNames.chaptername, m, false); // Create a fake chapter to hold the id/version. Chapter c = new Chapter(); c.setId(chid); c.setVersion(chver); c.setName(cname); String cid = TypeEncoder.getString(MessageFieldNames.commentid, m); String text = TypeEncoder.getString(MessageFieldNames.text, m); Note n = new Note(); n.setChapter(c); n.setDescription(text); // Need to also setup the summary. n.setSummaryFromDescription(); n.setId(cid); n.setDealtWith(TypeEncoder.getDate(MessageFieldNames.date, m, false)); n.setPosition(TypeEncoder.getInt(MessageFieldNames.start, m)); int end = TypeEncoder.getInt(MessageFieldNames.end, m, false); if (end > -1) { n.setEndPosition(end); } return n; }
public static Map encode(Note n) { if (n.getChapter() == null) { throw new IllegalArgumentException("No chapter for note: " + n); } if ((n.getDescription() == null) || (n.getDescription().trim().length() == 0)) { throw new IllegalArgumentException("No text for note: " + n); } Map cdata = new HashMap(); cdata.put(MessageFieldNames.commentid, n.getId()); cdata.put(MessageFieldNames.chapterid, n.getChapter().getId()); cdata.put(MessageFieldNames.chapterversion, n.getChapter().getVersion()); cdata.put(MessageFieldNames.chaptername, n.getChapter().getName()); cdata.put(MessageFieldNames.text, n.getDescription()); cdata.put(MessageFieldNames.start, n.getStartPosition()); if (n.getDealtWith() != null) { cdata.put(MessageFieldNames.date, n.getDealtWith().getTime()); } if ((n.getEndPosition() > 0) && (n.getEndPosition() > n.getStartPosition())) { cdata.put(MessageFieldNames.end, n.getEndPosition()); } return cdata; }