Package net.atos.java.example.boodschappen.server

Source Code of net.atos.java.example.boodschappen.server.BoodschappenServiceImpl

package net.atos.java.example.boodschappen.server;

import java.util.List;

import javax.servlet.http.HttpSession;

import net.atos.java.example.boodschappen.model.Boodschap;
import net.atos.java.example.boodschappen.model.Gebruiker;
import net.atos.java.example.boodschappen.persistence.BoodschapRepository;
import net.atos.java.example.boodschappen.persistence.GebruikerRepository;
import net.atos.java.example.boodschappen.persistence.impl.BoodschapJdoRepository;
import net.atos.java.example.boodschappen.persistence.impl.GebruikerJdoRepository;
import net.atos.java.example.boodschappen.shared.BoodschappenService;

import com.google.appengine.api.taskqueue.Queue;
import com.google.appengine.api.taskqueue.QueueFactory;
import com.google.appengine.api.taskqueue.TaskOptions;
import com.google.appengine.api.taskqueue.TaskOptions.Method;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;

/**
* Boodschappen service implementatie.
*
* @author Pal Hargitai
*/
public class BoodschappenServiceImpl extends RemoteServiceServlet implements
    BoodschappenService {

  /** Serial id. */
  private static final long serialVersionUID = -8506365806925698020L;
  /** Gebruiker sleutel. */
  private static final String USER_KEY = "boodschappen.user.key";
  /** Gebruiker service. */
  private UserService userService = UserServiceFactory.getUserService();
  /** Gebruiker repository. */
  private GebruikerRepository gebruikerRepository = new GebruikerJdoRepository();
  /** Boodschappen repository. */
  private BoodschapRepository boodschapRepository = new BoodschapJdoRepository();

  /**
   * Haalt de gebruiker identificatie op.
   *
   * @return De gebruiker identificatie.
   */
  private String ophalenGebruikerId() {
    boolean userIsSet = false;
    HttpSession session = getThreadLocalRequest().getSession(true);
    // Test if the user key is set in the session.
    synchronized (session) {
      userIsSet = (session.getAttribute(USER_KEY) != null);
    }
    if (userIsSet) {
      synchronized (session) {
        return session.getAttribute(USER_KEY).toString();
      }
    } else {
      // Set the user in the session.
      User user = userService.getCurrentUser();
      String userId = user.getUserId();
      Gebruiker gebruiker = gebruikerRepository
          .vindGebruikerPerUserId(userId);
      String identificatie;
      if (gebruiker == null) {
        // Make a new user.
        gebruiker = new Gebruiker.Builder().id(user.getUserId())
            .naam(user.getNickname()).email(user.getEmail())
            .build();
        identificatie = gebruikerRepository.opslaan(gebruiker);
      } else {
        identificatie = gebruiker.getPk();
      }
      synchronized (session) {
        session.setAttribute(USER_KEY, identificatie);
      }
      return identificatie;
    }
  }

  /** {@inheritDoc} */
  @Override
  public List<Boodschap> ophalenBoodschappen() {
    return boodschapRepository.ophalenBoodschappen(ophalenGebruikerId());
  }

  /** {@inheritDoc} */
  @Override
  public void afvinkenBoodschap(String boodschapId) {
    boodschapRepository.verwijderen(boodschapId);
  }

  /** {@inheritDoc} */
  @Override
  public void mailBoodschappenlijst() {
    ophalenGebruikerId();
    String userId = ophalenGebruikerId();
    if (userId == null) {
      throw new IllegalStateException("Gebruiker niet ingelogged!");
    } else {
      // We maken een queue aan.
      Queue boodschappenQueue = QueueFactory
          .getQueue("boodschappen-queue");
      // We maken een task aan.
      TaskOptions options = TaskOptions.Builder
          .withUrl("/boodschappen-queue").param("user", userId)
          .method(Method.GET);
      // We ovegen een element toe aan de queue.
      boodschappenQueue.add(options);
    }

  }

  /** {@inheritDoc} */
  @Override
  public void toevoegenBoodschappen(List<Boodschap> boodschappen) {
    for (Boodschap boodschap : boodschappen) {
      String userId = ophalenGebruikerId();
      if (userId == null) {
        throw new IllegalStateException("Gebruiker niet ingelogged!");
      } else {
        boodschap.bewerkGebruiker(userId);
        this.boodschapRepository.bewerken(boodschap);
      }
    }
  }
}
TOP

Related Classes of net.atos.java.example.boodschappen.server.BoodschappenServiceImpl

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.