Package com.mgreau.wwsmad.websocket.encoders

Source Code of com.mgreau.wwsmad.websocket.encoders.OutputMessageEncoder

package com.mgreau.wwsmad.websocket.encoders;

import java.io.StringWriter;
import java.util.logging.Logger;

import javax.json.Json;
import javax.json.JsonObjectBuilder;
import javax.json.JsonWriter;
import javax.websocket.Encoder;
import javax.websocket.EndpointConfig;

import com.mgreau.wwsmad.websocket.messages.OutputMessage;

public class OutputMessageEncoder implements Encoder.Text<OutputMessage> {

  private static final Logger logger = Logger
      .getLogger("OutputMessageEncoder");

  @Override
  public void init(EndpointConfig ec) {
  }

  @Override
  public void destroy() {
  }

  @Override
  public String encode(OutputMessage m) {
    StringWriter swriter = new StringWriter();
    try {
      try (JsonWriter jsonWrite = Json.createWriter(swriter)) {
        JsonObjectBuilder builder = Json.createObjectBuilder();
       
        JsonObjectBuilder dataBuilder = Json.createObjectBuilder();
        dataBuilder.add("format", m.getFormat().toString()).add("currentWriter",
            m.getCurrentWriter()).add("source", m.getAdocSource()).add("timeToRender",
            m.getTimeToRender()).add("output", m.getContent());
        //addHeader
        if (m.getDocHeader() != null && m.getDocHeader()
            .getDocumentTitle() != null && m.getDocHeader().getAuthor() != null
            && m.getDocHeader().getRevisionInfo().getNumber() != null){
          dataBuilder.add("docHeader",
              Json.createObjectBuilder()
                  .add("title",
                      m.getDocHeader()
                          .getDocumentTitle())
                  .add("author", m.getDocHeader().getAuthor().getFullName())
                  .add("revisioninfo",
                      m.getDocHeader()
                          .getRevisionInfo()
                          .getNumber()));
        }
       
        builder.add("type", m.getType().toString())
            .add("adocId", m.getAdocId())
            .add("data", dataBuilder.build());
       
        jsonWrite.writeObject(builder.build());
      }
    } catch (Exception e) {
      logger.severe("Output message decode error.");
      Json.createWriter(swriter).writeObject(getDefault(m).build());
    }
    return swriter.toString();
  }

  private JsonObjectBuilder getDefault(OutputMessage m) {

    JsonObjectBuilder builder = Json.createObjectBuilder();
    builder.add("type", m.getType().toString())
        .add("adocId", m.getAdocId())
        .add("data",
            Json.createObjectBuilder()
                .add("format", "")
                .add("currentWriter", "")
                .add("docHeader", Json.createObjectBuilder())
                .add("source", m.getAdocSource())
                .add("timeToRender", "-1")
                .add("output",
                    "<b>Error in Asciidoc source !</b> <br/>Check the following and re-try : "
                        + "<ul><li>Headers informations are mandatory (title, author name, revision, date)</li></lu>"));
    return builder;

  }
}
TOP

Related Classes of com.mgreau.wwsmad.websocket.encoders.OutputMessageEncoder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.