1 package org.contineo.core.transfer; 2 3 import java.io.ByteArrayOutputStream ; 4 import java.io.IOException ; 5 import java.io.PrintStream ; 6 7 import java.util.Collection ; 8 import java.util.Iterator ; 9 10 import org.contineo.admin.Menu; 11 import org.contineo.admin.dao.MenuDAO; 12 13 17 public class FreemindExport implements Export { 18 19 protected final static String START_MAP = "<map version=\"0.7.1\">\n"; 20 protected final static String END_MAP = "</map>"; 21 protected final static String END_NODE = "</node>\n"; 22 protected final static String START_NODE = "<node TEXT="; 23 24 private PrintStream printStream; 25 private String username; 26 private boolean pos; 27 28 31 public FreemindExport() { 32 username = ""; 33 pos = true; 34 } 35 36 39 public ByteArrayOutputStream process(Menu menu, String user) throws IOException { 40 username = user; 41 ByteArrayOutputStream bos = new ByteArrayOutputStream (); 42 printStream = new PrintStream (bos); 43 printStream.append(START_MAP); 44 appendChildren(menu, true); 45 printStream.append(END_MAP); 46 printStream.flush(); 47 printStream.close(); 48 return bos; 49 } 50 51 54 public ByteArrayOutputStream process(int menuId, String user) throws IOException { 55 MenuDAO menuDao = new MenuDAO(); 56 Menu menu = menuDao.findMenuByMenuId(menuId); 57 return process(menu, user); 58 } 59 60 protected void appendNode(String text, String color, String font, boolean bold, int size) { 61 printStream.append(START_NODE); 62 printStream.append("\""); 63 printStream.append(text); 64 printStream.append("\" COLOR=\""); 65 printStream.append(color); 66 printStream.append("\" POSITION=\""); 67 if (pos) 68 printStream.append("right"); 69 else 70 printStream.append("left"); 71 pos = !pos; 72 printStream.append("\">\n"); 73 printStream.append("<font NAME=\""); 74 printStream.append(font); 75 printStream.append("\" BOLD=\""); 76 printStream.append(String.valueOf(bold)); 77 printStream.append("\" SIZE=\""); 78 printStream.append(String.valueOf(size)); 79 printStream.append("\"/>\n"); 80 } 81 82 protected void appendChildren(Menu menu, boolean home) { 83 MenuDAO menuDao = new MenuDAO(); 84 Collection children = menuDao.findByUserName(username, menu.getMenuId()); 85 if (home) 86 appendNode(menu.getMenuText(), "#FF0000", "SansSerif", true, 12); 87 else 88 if (children.size() > 0) 89 appendNode(menu.getMenuText(), "#000000", "SansSerif", true, 12); 90 else 91 appendNode(menu.getMenuText(), "#000000", "SansSerif", false, 12); 92 Iterator iter = children.iterator(); 93 while (iter.hasNext()) { 94 appendChildren((Menu)iter.next(), false); 96 } 97 printStream.append(END_NODE); 98 } 99 } 100 | Popular Tags |