Search in sources :

Example 1 with DocInfo

use of com.revolsys.ui.model.DocInfo in project com.revolsys.open by revolsys.

the class PageInfoHttpMessageConverter method writeHtml.

@SuppressWarnings("unchecked")
private void writeHtml(final OutputStream out, final String url, final PageInfo pageInfo, final boolean showTitle) {
    final XmlWriter writer = new XmlWriter(out);
    writer.startTag(HtmlElem.DIV);
    if (showTitle) {
        writer.element(HtmlElem.H1, pageInfo.getTitle());
        final DocInfo docInfo = pageInfo.getDefaultDocumentation();
        if (docInfo != null) {
            writer.startTag(HtmlElem.DIV);
            writer.attribute(HtmlAttr.STYLE, "margin-bottom: 1em");
            final String description = docInfo.getDescription();
            if (description != null) {
                if (docInfo.isHtml()) {
                    writer.write(description);
                } else {
                    writer.element(HtmlElem.P, description);
                }
            }
            writer.endTag(HtmlElem.DIV);
        }
    }
    final HttpServletRequest request = HttpServletUtils.getRequest();
    for (final String method : pageInfo.getMethods()) {
        @SuppressWarnings("rawtypes") final Map parameterMap = request.getParameterMap();
        writeMethod(writer, url, pageInfo, method, parameterMap);
    }
    final Map<String, PageInfo> pages = pageInfo.getPages();
    final Element pagesElement = pageInfo.getPagesElement();
    if (pagesElement != null) {
        pagesElement.serialize(writer);
    } else if (!pages.isEmpty()) {
        writer.startTag(HtmlElem.DIV);
        writer.attribute(HtmlAttr.CLASS, "resources");
        writer.startTag(HtmlElem.DL);
        for (final Entry<String, PageInfo> childPage : pages.entrySet()) {
            final String childPath = childPage.getKey();
            final PageInfo childPageInfo = childPage.getValue();
            String childUri;
            if (childPath.startsWith("/") || childPath.startsWith("http")) {
                childUri = childPath;
            } else if (url.charAt(url.length() - 1) != '/') {
                childUri = url + "/" + childPath;
            } else {
                childUri = url + childPath;
            }
            writer.startTag(HtmlElem.DT);
            final String childTitle = childPageInfo.getTitle();
            HtmlUtil.serializeA(writer, null, childUri, childTitle);
            writer.endTag(HtmlElem.DT);
            final boolean isTemplate = childPath.matches(".*(\\{[^\\}]+\\}.*)+");
            final String childDescription = childPageInfo.getDescription();
            if (childDescription != null || isTemplate) {
                writer.startTag(HtmlElem.DD);
                if (childDescription != null) {
                    writer.element(HtmlElem.P, childDescription);
                }
                if (isTemplate) {
                    writer.startTag(HtmlElem.FORM);
                    writer.attribute(HtmlAttr.ACTION, childUri);
                    writer.attribute(HtmlAttr.METHOD, "get");
                    for (final String pathElement : childPath.split("/")) {
                        if (pathElement.matches("\\{[^\\}]+\\}")) {
                            final String name = pathElement.substring(1, pathElement.length() - 1);
                            HtmlUtil.serializeTextInput(writer, name, name, 20, 255);
                        }
                    }
                    HtmlUtil.serializeButtonInput(writer, "go", "doGet(this.form)");
                    writer.endTag(HtmlElem.FORM);
                }
                writer.endTag(HtmlElem.DD);
            }
        }
        writer.endTag(HtmlElem.DL);
        writer.endTag(HtmlElem.DIV);
    }
    writer.endTag(HtmlElem.DIV);
    writer.endDocument();
    writer.close();
}
Also used : HttpServletRequest(javax.servlet.http.HttpServletRequest) DocInfo(com.revolsys.ui.model.DocInfo) PageInfo(com.revolsys.ui.model.PageInfo) Entry(java.util.Map.Entry) Element(com.revolsys.ui.html.view.Element) HashMap(java.util.HashMap) Map(java.util.Map) XmlWriter(com.revolsys.record.io.format.xml.XmlWriter)

Example 2 with DocInfo

use of com.revolsys.ui.model.DocInfo in project com.revolsys.open by revolsys.

the class PageInfoHttpMessageConverter method writeWadlDoc.

private void writeWadlDoc(final XmlWriter writer, final PageInfo pageInfo) {
    for (final DocInfo documentation : pageInfo.getDocumentation()) {
        final String title = documentation.getTitle();
        final String description = documentation.getDescription();
        if (title != null && description != null) {
            writer.startTag(DOC);
            final Locale locale = documentation.getLocale();
            if (locale != null) {
                writer.attribute(XmlConstants.XML_LANG, locale);
            }
            writer.attribute(TITLE, title);
            writer.text(description);
            writer.endTag(DOC);
        }
    }
}
Also used : Locale(java.util.Locale) DocInfo(com.revolsys.ui.model.DocInfo)

Aggregations

DocInfo (com.revolsys.ui.model.DocInfo)2 XmlWriter (com.revolsys.record.io.format.xml.XmlWriter)1 Element (com.revolsys.ui.html.view.Element)1 PageInfo (com.revolsys.ui.model.PageInfo)1 HashMap (java.util.HashMap)1 Locale (java.util.Locale)1 Map (java.util.Map)1 Entry (java.util.Map.Entry)1 HttpServletRequest (javax.servlet.http.HttpServletRequest)1