Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (C) 2014 Philip Helger (www.helger.com) philip[at]helger[dot]com Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
 package com.helger.appbasics.exchange.bulkexport.format;
 
 import java.io.Writer;
 
 
 
Implementation of com.helger.appbasics.exchange.bulkexport.IExporterFile for JSON files

Author(s):
Philip Helger
 
 public final class ExporterJSON implements IExporterFile
 {
   public static final boolean DEFAULT_EMIT_TYPE = true;
   private static final String ELEMENT_HEADER = "header";
   private static final String ELEMENT_BODY = "body";
   private static final String ELEMENT_FOOTER = "footer";
   private static final String ATTR_TYPE = "type";
   private static final String ATTR_VALUE = "value";
 
   private static final Logger s_aLogger = LoggerFactory.getLogger (ExporterJSON.class);
 
   private final JsonWriterSettings m_aJWS = new JsonWriterSettings ();
   private boolean m_bEmitType = ;
 
   public ExporterJSON ()
   {}
 
   @Nonnull
   public ExporterJSON setCharset (@Nonnull final Charset aCharset)
   {
      = ValueEnforcer.notNull (aCharset"Charset");
     return this;
   }
 
   @Nonnull
   public Charset getCharset ()
   {
     return ;
   }
 
   @Nonnull
   @ReturnsMutableObject (reason = "Design")
   {
     return ;
   }
 
   public boolean isEmitType ()
   {
     return ;
   }
 
   @Nonnull
   public ExporterJSON setEmitType (final boolean bEmitType)
  {
     = bEmitType;
    return this;
  }
  private IJsonArray _emitRecord (@Nonnull final IExportRecord aRecord)
  {
    final IJsonArray ret = new JsonArray ();
    for (final IExportRecordField aField : aRecord.getAllFields ())
    {
      final Object aFieldValue = aField.getFieldValue ();
      final IJsonObject aObject = new JsonObject ();
      if ()
        aObject.add (aField.getFieldType ().getID ());
      if (aFieldValue != null)
        aObject.add (aFieldValue);
      ret.add (aObject);
    }
    return ret;
  }
  public IJsonObject convertRecords (@Nonnull final IExportRecordProvider aProvider)
  {
    ValueEnforcer.notNull (aProvider"Provider");
    final IJsonObject aDoc = new JsonObject ();
    // Header
    for (final IExportRecord aHeaderRecord : aProvider.getHeaderRecords ())
      aDoc.add (_emitRecord (aHeaderRecord));
    // Body
    for (final IExportRecord aBodyRecord : IterableIterator.create (aProvider.getBodyRecords ()))
      aDoc.add (_emitRecord (aBodyRecord));
    // Footer
    for (final IExportRecord aFooterRecord : aProvider.getFooterRecords ())
      aDoc.add (_emitRecord (aFooterRecord));
    if (aDoc.isEmpty ())
      return null;
    return aDoc;
  }
  public ESuccess exportRecords (@Nonnull final IExportRecordProvider aProvider,
                                 @Nonnull @WillClose final OutputStream aOS)
  {
    try
    {
      ValueEnforcer.notNull (aProvider"Provider");
      ValueEnforcer.notNull (aOS"OutputStream");
      final IJsonObject aDoc = convertRecords (aProvider);
      if (aDoc == null)
        return .;
      final Writer aWriter = StreamUtils.createWriter (aOS);
      try
      {
        new JsonWriter ().writeNodeToWriter (aDocaWriter);
      }
      finally
      {
        // Important to close writer so that the content gets flushed!
        StreamUtils.close (aWriter);
      }
      return .;
    }
    catch (final IOException ex)
    {
      if (!StreamUtils.isKnownEOFException (ex))
        .error ("Failed to write JSON to output stream " + aOSex);
      return .;
    }
    finally
    {
      StreamUtils.close (aOS);
    }
  }
  {
    return .;
  }
New to GrepCode? Check out our FAQ X