Package com.appspot.secretcuz.endpoint

Source Code of com.appspot.secretcuz.endpoint.BlogPostEndpoint

package com.appspot.secretcuz.endpoint;

import java.util.*;

import javax.annotation.Nullable;
import javax.inject.Named;

import com.appspot.secretcuz.entity.BlogPost;
import com.appspot.secretcuz.entity.BlogPostContent;
import com.google.api.server.spi.config.Api;
import com.google.api.server.spi.response.CollectionResponse;
import com.google.api.server.spi.response.CollectionResponse.Builder;
import com.google.api.server.spi.response.NotFoundException;
import com.google.appengine.api.datastore.Cursor;
import com.google.appengine.api.oauth.OAuthRequestException;
import com.google.appengine.api.users.User;
import com.googlecode.objectify.cmd.Query;

import static com.appspot.secretcuz.entity.OfyService.ofy;

@Api(
  name = "bapi",
  description = "SecretCuz Blog API",
  version = "v1",
  clientIds = {Ids.WEB_CLIENT_ID, Ids.ANDROID_CLIENT_ID, Ids.IOS_CLIENT_ID},
    audiences = {Ids.ANDROID_AUDIENCE}
)
public class BlogPostEndpoint {
  public CollectionResponse<BlogPost> listBlogPost(@Nullable @Named("cursor") String cursorString, @Nullable @Named("limit") Integer limit) {
    if (limit == null) {
      limit = 10;
    }
    Query<BlogPost> query;
    if (limit == 0) {
      query = ofy().load().type(BlogPost.class).order("-date");
    } else if (cursorString == null || cursorString == "") {
      query = ofy().load().type(BlogPost.class).order("-date").limit(limit);
    } else {
      query = ofy().load().type(BlogPost.class).order("-date").limit(limit).startAt(Cursor.fromWebSafeString(cursorString));
    }
    List<BlogPost> retList = query.list();
    String retCursor = query.iterator().getCursor().toWebSafeString();
    return new Builder<BlogPost>().setItems(retList).setNextPageToken(retCursor).build();
  }

  public BlogPost getBlogPost(@Named("id") Long id) throws NotFoundException {
    BlogPost bp = ofy().load().type(BlogPost.class).id(id).get();
    if (bp == null) {
      throw new NotFoundException("No entity with the id " + id + " exists.");
    }
    BlogPostContent bpc = ofy().load().type(BlogPostContent.class).id(id).get();
    if (bpc == null) {
      throw new NotFoundException("No entity with the id " + id + " exists.");
    }
    bp.setContent(bpc.getContent());
    return bp;
  }

  public BlogPost insertBlogPost(BlogPost bp) {
    BlogPostContent bpc = new BlogPostContent();
    bpc.setContent(bp.getContent());
    //save BlogPost without content
    bp.setContent("");
    ofy().save().entity(bp).now();
    bpc.setId(bp.getId());
    ofy().save().entity(bpc).now();
    return bp;
  }

  public BlogPost updateBlogPost(@Named("id") Long id, BlogPost bp) throws NotFoundException {
    BlogPost updatedBp = ofy().load().type(BlogPost.class).id(id).get();
    if (updatedBp == null) {
      throw new NotFoundException("No entity with the id " + id + " exists.");
    }
    BlogPostContent updatedBpc = ofy().load().type(BlogPostContent.class).id(id).get();
    if (updatedBpc == null) {
      throw new NotFoundException("No entity with the id " + id + " exists.");
    }
    if (bp.getTitle() != null) {
      updatedBp.setTitle(bp.getTitle());
    }
    if (bp.getMeta() != null) {
      updatedBp.setMeta(bp.getMeta());
    }
    if (bp.getDate() != null) {
      updatedBp.setDate(bp.getDate());
    }
    if (bp.getAuthor() != null) {
      updatedBp.setAuthor(bp.getAuthor());
    }
    if (bp.getContent() != null) {
      updatedBpc.setContent(bp.getContent());
    }
    ofy().save().entity(updatedBp).now();
    ofy().save().entity(updatedBpc).now();
    //return BlogPost with content
    bp.setContent(updatedBpc.getContent());
    return bp;
  }

  public void removeBlogPost(@Named("id") Long id, User user) throws OAuthRequestException, NotFoundException {
    if (user != null) {
      BlogPost deletedBp = ofy().load().type(BlogPost.class).id(id).get();
      if (deletedBp == null) {
        throw new NotFoundException("No entity with the id " + id + " exists.");
      }
      BlogPostContent deletedBpc = ofy().load().type(BlogPostContent.class).id(id).get();
      if (deletedBpc == null) {
        throw new NotFoundException("No entity with the id " + id + " exists.");
      }
      ofy().delete().entity(deletedBp);
      ofy().delete().entity(deletedBpc);
    } else {
      throw new OAuthRequestException("Invalid user.");
    }
  }
}
TOP

Related Classes of com.appspot.secretcuz.endpoint.BlogPostEndpoint

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.