View Javadoc
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  }