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 }