Package org.apache.abdera.ext.json

Source Code of org.apache.abdera.ext.json.JSONWriter

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  The ASF licenses this file to You
* 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.  For additional information regarding
* copyright in this work, please see the NOTICE file in the top level
* directory of this distribution.
*/

package org.apache.abdera.ext.json;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import org.apache.abdera.model.Base;
import org.apache.abdera.model.Category;
import org.apache.abdera.model.Collection;
import org.apache.abdera.model.Content;
import org.apache.abdera.model.Document;
import org.apache.abdera.model.Entry;
import org.apache.abdera.model.Feed;
import org.apache.abdera.model.Generator;
import org.apache.abdera.model.Link;
import org.apache.abdera.model.Person;
import org.apache.abdera.model.Service;
import org.apache.abdera.model.Workspace;
import org.apache.abdera.model.Content.Type;
import org.apache.abdera.writer.NamedWriter;
import org.json.JSONArray;
import org.json.JSONObject;

public class JSONWriter implements NamedWriter {

  public static final String NAME = "json";
 
  public String getName() {
    return NAME;
  }
 
  public Object write(Base base) throws IOException {
    try {
      return toJSON(base).toString();
    } catch(Exception e) {
      throw new IOException(e.getMessage());
    }  
  }

  public void writeTo(Base base, OutputStream out) throws IOException {
    try {
      Object result = toJSON(base);
      out.write(result.toString().getBytes());
    } catch(Exception e) {
      throw new IOException(e.getMessage());
    }       
  }

  public void writeTo(Base base, java.io.Writer out) throws IOException {
    try {
      Object result = toJSON(base);
      out.write(result.toString());
    } catch(Exception e) {
      throw new IOException(e.getMessage());
    }   
  }
 
  public static Object toJSON(Object object) throws Exception {
    if(object instanceof Feed) {
      return toJSON((Feed) object);
    } else if(object instanceof Entry) {
      return toJSON((Entry) object);
    } else if(object instanceof Service) {
      return toJSON((Service) object);
    } else if(object instanceof Document) {
      return toJSON(((Document)object).getRoot());
    }
    return new IllegalArgumentException("Element is not supported by JSONWriter.");
  }
 
  public static JSONObject toJSON(Entry entry) throws Exception {
    JSONObject jsentry = new JSONObject();
    if(entry.getTitle() != null)
      jsentry.put("title", entry.getTitle());
   
    if(entry.getSummary() != null)
        jsentry.put("summary", entry.getSummary());
   
    JSONObject jscontent = new JSONObject();
    if(entry.getContentElement() != null) {
       
        Content content = entry.getContentElement();
        Type type = entry.getContentType();
        if (type.equals(Content.Type.HTML) ||
            type.equals(Content.Type.XHTML) ||
            type.equals(Content.Type.TEXT)) {
          jscontent.put("type", type.toString());
        } else {
          jscontent.put("type", content.getMimeType().toString());
        }
        jscontent.put("value", content.getValue());
        jsentry.put("content", jscontent);
    }
   
    JSONArray jscategories = new JSONArray();
    List<Category> categories = entry.getCategories();
    for(Category category : categories) {     
      if(category.getScheme() != null ||
          category.getLabel() != null ||
          category.getTerm() != null) {
        JSONObject jscategory = new JSONObject();
        if(category.getScheme() != null)
          jscategory.put("scheme", category.getScheme().toString());
       
        if(category.getTerm() != null)
          jscategory.put("term", category.getTerm());
       
        if(category.getLabel() != null)
          jscategory.put("label", category.getLabel());
        jscategories.put(jscategory);
      }
    }
    jsentry.put("categories", jscategories);
   
    if(entry.getId() != null)
        jsentry.put("id", entry.getId().toString());
   
    JSONArray jslinks = new JSONArray();
    List<Link> links = entry.getLinks();
    for(Link link : links) {
      JSONObject jslink = new JSONObject();
      jslink.put("href", link.getHref().toString());
      jslink.put("rel", link.getRel());
      jslinks.put(jslink);
    }
    jsentry.put("links", jslinks);
   
    if(entry.getUpdated() != null)
        jsentry.put("updated", entry.getUpdated().toString());
   
    if(entry.getPublished() != null)
        jsentry.put("published", entry.getPublished().toString());
   
    // authors
    List<Person> authors = entry.getAuthors();
    JSONArray jsauthors = new JSONArray();
    for (Person p : authors) {
      JSONObject jsauthor = new JSONObject();
      if(p.getName() != null)
        jsauthor.put("name", p.getName());
      if(p.getUri() != null)
        jsauthor.put("uri", p.getUri().toString());
      if(p.getEmail() != null)
        jsauthor.put("email", p.getEmail());
      jsauthors.put(jsauthor);
    }   
    if(jsauthors.length() > 0)
      jsentry.put("authors", jsauthors);
   
    // contributors
    List<Person> contributors = entry.getContributors();
    JSONArray jscontributors = new JSONArray();
    for (Person p : contributors) {
      JSONObject jscontributor = new JSONObject();
      if(p.getName() != null)
        jscontributor.put("name", p.getName());
      if(p.getUri() != null)
        jscontributor.put("uri", p.getUri().toString());
      if(p.getEmail() != null)
        jscontributor.put("email", p.getEmail());
      jscontributors.put(jscontributor);
    }   
    if(jsauthors.length() > 0)
      jsentry.put("contributors", jscontributors);
   
    return jsentry;
  }

  public static JSONObject toJSON(Feed feed) throws Exception {
    JSONObject jsfeed = new JSONObject();
   
    if (feed.getId() != null) {
      jsfeed.put("id",feed.getId().toString());
    }
   
    if (feed.getGenerator() != null) {
      Generator gen = feed.getGenerator();
      JSONObject jsgen = new JSONObject();
      jsgen.put("uri",gen.getUri().toString());
      jsgen.put("value",gen.getText());
    }
   
    if (feed.getTitle() != null) {
      jsfeed.put("title",feed.getTitle());
    }
   
    if (feed.getSubtitle() != null) {
      jsfeed.put("subtitle",feed.getSubtitle());
    }
   
    if (feed.getRights() != null) {
      jsfeed.put("rights",feed.getRights());
    }
   
    if (feed.getLogo() != null) {
      jsfeed.put("logo",feed.getLogo().toString());
    }
   
    if (feed.getUpdatedString() != null) {
      jsfeed.put("updated",feed.getUpdatedString());
    }
   
    if (feed.getIcon() != null) {
      jsfeed.put("icon",feed.getIcon().toString());
    }
   
    //  authors
    List<Person> authors = feed.getAuthors();
    JSONArray jsauthors = new JSONArray();
    for (Person p : authors) {
      JSONObject jsauthor = new JSONObject();
      if(p.getName() != null)
        jsauthor.put("name", p.getName());
      if(p.getUri() != null)
        jsauthor.put("uri", p.getUri().toString());
      if(p.getEmail() != null)
        jsauthor.put("email", p.getEmail());
      jsauthors.put(jsauthor);
    }   
    if(jsauthors.length() > 0)
      jsfeed.put("authors", jsauthors);
   
    // contributors
    List<Person> contributors = feed.getContributors();
    JSONArray jscontributors = new JSONArray();
    for (Person p : contributors) {
      JSONObject jscontributor = new JSONObject();
      if(p.getName() != null)
        jscontributor.put("name", p.getName());
      if(p.getUri() != null)
        jscontributor.put("uri", p.getUri().toString());
      if(p.getEmail() != null)
        jscontributor.put("email", p.getEmail());
      jscontributors.put(jscontributor);
    }   
    if(jsauthors.length() > 0)
      jsfeed.put("contributors", jscontributors);
   
    JSONArray jslinks = new JSONArray();
    List<Link> links = feed.getLinks();
    for(Link link : links) {
      JSONObject jslink = new JSONObject();
      jslink.put("href", link.getHref().toString());
      jslink.put("rel", link.getRel());
      jslinks.put(jslink);
    }       
    jsfeed.put("links", jslinks);
   
    JSONArray jscategories = new JSONArray();
    List<Category> categories = feed.getCategories();
    for(Category category : categories) {
      JSONObject jscategory = new JSONObject();
      jscategory.put("scheme", category.getScheme().toString());
      jscategory.put("term", category.getTerm());
      jscategory.put("label", category.getLabel());
      jscategories.put(jscategory);
    }
    jsfeed.put("categories", jscategories);
   
    JSONArray jsentries = new JSONArray();
    List<Entry> entries = feed.getEntries();
    for(Entry entry : entries) {
       jsentries.put(toJSON(entry));
    }
   
    jsfeed.put("entries", jsentries);
    return jsfeed;
  }

 
  public static JSONObject toJSON(Service service) throws Exception {
    JSONObject jssvc = new JSONObject();
    JSONArray jsworkspaces = new JSONArray();
    List<Workspace> workspaces = service.getWorkspaces();
    for(Workspace workspace : workspaces) {
      JSONObject jsworkspace = new JSONObject();
      JSONArray jscollections = new JSONArray();
      jsworkspace.put("title", workspace.getTitle());
      List<Collection> collections = workspace.getCollections();
      for(Collection collection : collections) {
        JSONObject jscollection = new JSONObject();
        JSONArray jsaccepts = new JSONArray();
        String[] accepts = collection.getAccept();
        for(String accept : accepts) {
          jsaccepts.put(accept);
        }
        jscollection.put("href", collection.getHref().toString());
        jscollection.put("accept", jsaccepts);
        jscollections.put(jscollection);
      }
      jsworkspace.put("collections", jscollections);
      jsworkspaces.put(jsworkspace);
    }
    jssvc.put("workspaces", jsworkspaces);
   
    return jssvc;
 
 
}
TOP

Related Classes of org.apache.abdera.ext.json.JSONWriter

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.