Package com.gadglet.gadgets.personalNotesApps.server

Source Code of com.gadglet.gadgets.personalNotesApps.server.RequestHandler

/**
* Copyright (C)  Gadglet .
*
* This file is part of Gadglet
*
* Gadglet is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Gadglet is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Gadglet. If not, see <http://www.gnu.org/licenses/>.
*/

package com.gadglet.gadgets.personalNotesApps.server;

import java.util.HashMap;
import java.util.List;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.jdo.Query;

import com.gadglet.core.BizletRequestHandler;
import com.gadglet.core.GadgletRequestWrapper;
import com.gadglet.core.GadgletResponse;
import com.gadglet.core.GadgletResponse.ContentRecord;
import com.gadglet.core.RequestException;
import com.gadglet.data.DomainUser;
import com.gadglet.data.DomainUserUtils;
import com.gadglet.data.SharedItemReff;
import com.gadglet.data.utils.ContentItemHelper;
import com.gadglet.data.utils.HasMoreItems;
import com.gadglet.data.utils.PMF;
import com.gadglet.gadgets.personalNotesApps.shared.Params;
import com.gadglet.params.FieldErrorTypes;
import com.gadglet.params.GadgetViewState;
import com.gadglet.params.ProfileFields;
import com.gadglet.params.ReqErrorTypes;
import com.gadglet.params.SharingType;

/**
* Gadglet server side handler class. This class is the Gadget server side
* entrypoint loaded by Gadglet platform for every request. When loaded,
* UserProfile (Minglet)is already loaded to the session and accessible by
* GadgletRequestWrapper methods.
* The class name MUST be "RequestHandler" unless you define it specifically
* when defining the Gadget with the admin tool
*
* Gadglet platform will invoke the correct methods according to the requested
* "ReqActionTypes"
*
* @see com.gadglet.params.ReqActionTypes
* @see BizletRequestHandler
*
*
*/
public class RequestHandler extends BizletRequestHandler {
  Logger log = Logger.getLogger(this.getClass().getName());

  private final ContentItemHelper helper = new ContentItemHelper();

 
  /**
   * Delete all Personal notes (owned y the current user)
   *
   * This method is an example of custom RequestHandler method activated
   * by the use of client method
   * <p>
   *@see com.gadglet.client.gwt.core.GadgletQuery.setContentActoinName(String contentActoinName)
   * */
 
  public void doDeleteAll(GadgletRequestWrapper request, GadgletResponse response)
   {
   
    PersistenceManager pm;   
    List <PersonalNotesAppsData> items;
   
   
    pm = PMF.get().getPersistenceManager();
    Query qry = pm.newQuery(PersonalNotesAppsData.class);
   
    qry.declareParameters("String ownerIdParam");
    qry.setFilter(" ownerId == ownerIdParam");
     
    try {
      // for some reason doesn't work with transaction
     
      items = (List<PersonalNotesAppsData>) qry.execute(request.getCurrentUserId());
     
      pm.deletePersistentAll(items);
     
    } catch (Exception e) {
      log.warning(e.getMessage());
   
    } finally {
 
      pm.close();
    }
      
   }
  /**
   * Delete Personal note
   * */
  @Override
  public void doDelete(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {
    helper.delete(request, PersonalNotesAppsData.class);
  }

  /**
   * Share Personal note with a friend
   * */
  @Override
  public void doShare(GadgletRequestWrapper request, GadgletResponse res)
      throws RequestException {

    helper.shareItem(request, PersonalNotesAppsData.class);
  }


  /**
   * Return a list of Domain user friends and their sharing definition for a given personal
   * note item
   * */
  @Override
  public void doSharedList(GadgletRequestWrapper request, GadgletResponse res)
      throws RequestException {

    PersonalNotesAppsData item = (PersonalNotesAppsData) helper
        .getSingleItemByKey(request, PersonalNotesAppsData.class);

    if (!item.isOwnedByMe(request))
      throw new RequestException(ReqErrorTypes.UNAUTHORIZED_OPERATION);

    item.getDomainFriendsSharing(request, res);

  }

  /**
   * Add a new Personal note
   * <p>
   * Example:
   * <li>Sending field level error code to the client (empty content)
   * <li>Sending field level error code to the client (content length)
   * <li>Sending field level error code to the client (value not valid)

   * */
  @Override
  public void doAdd(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {

    String msg = request.getParameter(Params.MESSAGE.getParamName());
    if (msg == null || msg.isEmpty()) {
      response.addFieldError(Params.MESSAGE.getParamName(),
          FieldErrorTypes.FIELD_IS_EMPTY);
      throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
    }
    // String field is limited to 500 chars...
    if (msg.length() > 499)
      throw new RequestException(ReqErrorTypes.CONTENT_EXCEED_MAX_LENGTH);

 
    int priority = 0;

    try {
      priority = Integer.parseInt(request.getParameter(Params.PRIORITY
          .getParamName()));
    } catch (NumberFormatException e) {
      log.warning(e.getMessage());
      response.addFieldError(Params.PRIORITY.getParamName(),
          FieldErrorTypes.VALUE_NOT_VALID);
      throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
    }



    PersonalNotesAppsData item = new PersonalNotesAppsData(
        request.getTrustedParameterValue("personalNotesMessage", true),
        priority, request);

    helper.saveNew(item);
  }
  /**
   * Update Personal note
   * */
  @Override
  public void doUpdate(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {
    // check imput
    String msg = request.getParameter(Params.MESSAGE.getParamName());

    if (msg == null || msg.isEmpty()) {
      response.addFieldError(Params.MESSAGE.getParamName(),
          FieldErrorTypes.FIELD_IS_EMPTY);

      throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
    }
    // String field is limited to 500 chars...
    if (msg.length() > 499)
      throw new RequestException(ReqErrorTypes.CONTENT_EXCEED_MAX_LENGTH);
   
    PersonalNotesAppsData item = (PersonalNotesAppsData) helper
        .getSingleItemByKey(request, PersonalNotesAppsData.class);
    item.setPersonalNotesMessage(msg);
    helper.updated(null, item, request);
  }

  /**
   * Return a list personal notes
   * */
  @Override
  public void doView(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {

    HasMoreItems hasMore = new HasMoreItems();
    int returnedItems;
    HashMap<String, Object> params = null;
    if (request.getParameter(Params.PRIORITY.getParamName()) != null
        && !request.getParameter(Params.PRIORITY.getParamName())
            .isEmpty()) {
      params = new HashMap<String, Object>();
      try {
        params.put(Params.PRIORITY.getParamName(), Integer
            .parseInt(request.getParameter(Params.PRIORITY
                .getParamName())));
      } catch (NumberFormatException e) {

        log.warning(e.getMessage());
        throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
      }
    }

    List<PersonalNotesAppsData> items = (List<PersonalNotesAppsData>) helper
        .getSharedItems(request, PersonalNotesAppsData.class,
            request.getFilterBy(),
            request.getFilterByDeclaration(), params,
            request.getOrderBy(), request.getStartFrom(),
            request.getItemNum(), hasMore);

    // if the request is for 3 items the method getOwnerItems will try to
    // find 4 and then remove the last...
    returnedItems = items.size();
    if (hasMore.isTrue()) {
      response.setHasMore(true);
      returnedItems = returnedItems - 1;
    } else
      response.setHasMore(false);

    response.setAddPermit(true);

    response.setTotalItemsNum(returnedItems);

    int count = 0;
    for (PersonalNotesAppsData item : items) {
      // exit in the last item
      if (count++ == returnedItems)
        break;
      String msg = null;

      if (!request.getGadgetViewState().equals(GadgetViewState.CANVAS)
          && item.getPersonalNotesMessage().length() > 30)
        msg = item.getPersonalNotesMessage().substring(0, 30) + "...";
      else
        msg = item.getPersonalNotesMessage();

      ContentRecord record = response.newItem();

      record.addItemKeyField(item.getContentItemKey());
      record.addItemField(Params.MESSAGE.getParamName(), msg);
      record.addItemField(Params.PRIORITY.getParamName(), new Integer(
          item.getPriority()).toString());

      List<SharedItemReff> shares = item.getSharedItemReff();
      boolean isOwner = false;
      boolean isEditor = false;

      if (shares != null) {

        for (SharedItemReff share : shares) {
          if (share.getSharedWithId().equals(
              request.getCurrentUserId())
              && share.getSharingType().equals(SharingType.OWNER)) {
            isOwner = true;
            isEditor = true;
          }

          if (share.getSharedWithId().equals(
              request.getCurrentUserId())
              && share.getSharingType().equals(SharingType.EDIT))
            isEditor = true;
        }

        record.setGadgetPermissions(isEditor, isOwner, isOwner);

        if (!isOwner) {
          // send info about the owner need to change !!!!
          DomainUser owner = DomainUserUtils.getDomainUserByUniqueId(
              item.getOwnerId(), request.getCurrentDomainUser()
                  .getAccount());

          record.addItemField(
              ProfileFields.PROFILE_NICKNAME.getParamName(),
              owner.getNickName());
          record.addItemField(
              ProfileFields.PROFILE_TITLE.getParamName(),
              owner.getTitle());

          if (owner.getPhotoUrl() != null
              && owner.getPhotoUrl().length() > 0)
            record.addItemField(ProfileFields.PROFILE_THUMBNAILURL
                .getParamName(), owner.getPhotoUrl());

        }
      }

    }

  }

}
TOP

Related Classes of com.gadglet.gadgets.personalNotesApps.server.RequestHandler

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.