public String encode(String type, Class<?> limit) { if (type.equals(Encodable.DATATABLES)) return encodeDataTables(limit); // templates String templateXML = "<Manga><Title>%s</Title><Description>%s</Description><Author>%s</Author><ReleaseYear>%d</ReleaseYear><Mature>%b</Mature><Cover>%s</Cover><Address>%s</Address><Chapters>%s</Chapters></Manga>"; String templateJSON = "{title: '%s', description: '%s', author: '%s', releaseYear: %d, mature: %b, cover: '%s', address: '%s', chapters: [%s]}"; // check for limit StringBuilder sbchapters = new StringBuilder(); if (limit != Manga.class) { Iterator<Chapter> i = chapters.iterator(); while (i.hasNext()) { Chapter c = i.next(); if (type.equals(Encodable.XML)) sbchapters.append(c.encode(type, limit)); if (type.equals(Encodable.JSON)) { sbchapters.append(c.encode(type, limit)); if (i.hasNext()) sbchapters.append(","); } } } // select format (default XML) String format = templateXML; if (type.equals(Encodable.XML)) { format = templateXML; } else if (type.equals(Encodable.JSON)) { format = templateJSON; } // build! return String.format( format, getTitle(), getDescription(), getAuthor(), getReleaseYear(), isMature(), getCover(), getAddress(), sbchapters); }
private String encodeDataTables(Class<?> limit) { String templateDATATABLES = "['%s', '%s', %d, %d]"; if (limit == Manga.class) { return String.format( templateDATATABLES, getTitle(), getAuthor(), getReleaseYear(), getChapterCount()); } else if (limit == Chapter.class) { StringBuilder sb = new StringBuilder().append("["); Iterator<Chapter> i = chapters.iterator(); while (i.hasNext()) { Chapter m = i.next(); sb.append(m.encode(Encodable.DATATABLES, limit)); if (i.hasNext()) sb.append(","); } sb.append("]"); return sb.toString(); } return null; }