1 package xuml.tools.diagram; 2 3 import java.io.IOException; 4 5 import javax.servlet.ServletException; 6 import javax.servlet.http.HttpServlet; 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.apache.commons.io.IOUtils; 11 12 import xuml.tools.miuml.metamodel.jaxb.Domains; 13 import xuml.tools.miuml.metamodel.jaxb.Marshaller; 14 15 import com.google.common.base.Optional; 16 17 public class ClassDiagramServlet extends HttpServlet { 18 19 private static final long serialVersionUID = 2511746331522695068L; 20 21 @Override 22 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 23 throws ServletException, IOException { 24 doPost(req, resp); 25 } 26 27 @Override 28 protected void doPost(HttpServletRequest req, HttpServletResponse resp) 29 throws ServletException, IOException { 30 Optional<String> xml = Optional.fromNullable(req.getParameter("xml")); 31 if (!xml.isPresent()) 32 xml = Optional.of("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" 33 + "<Domains xmlns=\"http://www.miuml.org/metamodel\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" 34 + " xsi:schemaLocation=\"http://www.miuml.org/metamodel https://raw.github.com/davidmoten/xuml-tools/master/miuml-jaxb/src/main/resources/miuml-metamodel.xsd http://org.github/xuml-tools/miuml-metamodel-extensions https://raw.github.com/davidmoten/xuml-tools/master/miuml-jaxb/src/main/resources/xuml-tools-miuml-metamodel-extensions.xsd\"\n" 35 + " xmlns:xt=\"http://org.github/xuml-tools/miuml-metamodel-extensions\">\n</Domains>"); 36 Optional<String> viewJson = Optional.fromNullable(req.getParameter("view")); 37 System.out.println(xml); 38 System.out.println(viewJson); 39 createClassDiagram(req, resp, xml.get(), viewJson); 40 } 41 42 private void createClassDiagram(HttpServletRequest req, HttpServletResponse resp, String xml, 43 Optional<String> viewJson) throws IOException { 44 Domains domains = new Marshaller().unmarshal(IOUtils.toInputStream(xml)); 45 String domainString = req.getParameter("domain"); 46 if (domainString == null) 47 domainString = "1"; 48 int domain = Integer.parseInt(domainString) - 1; 49 String ssString = req.getParameter("ss"); 50 if (ssString == null) 51 ssString = "1"; 52 int ss = Integer.parseInt(ssString) - 1; 53 String html = new ClassDiagramGenerator().generate(domains, domain, ss, viewJson); 54 resp.setContentType("text/html"); 55 IOUtils.copy(IOUtils.toInputStream(html), resp.getOutputStream()); 56 } 57 58 }