Package com.gadglet.gadgets.discussions.server

Source Code of com.gadglet.gadgets.discussions.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.discussions.server;

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

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.gadgets.discussions.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;

public class RequestHandler extends BizletRequestHandler {
  Logger log = Logger.getLogger(this.getClass().getName());

  private final ContentItemHelper helper = new ContentItemHelper();

 
  /**
   * Delete Personal note
   * */
  @Override
  public void doDelete(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {
    helper.delete(request, DiscussionsList.class);
  }

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

    helper.shareItem(request, DiscussionsList.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 {

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

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

    item.getDomainFriendsSharing(request, res);

  }

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

    String discussionText = request.getParameter(Params.DISCUSSION_TEXT.getParamName());
    if (discussionText == null || discussionText.isEmpty()) {
      response.addFieldError(Params.DISCUSSION_TEXT.getParamName(),
          FieldErrorTypes.FIELD_IS_EMPTY);
      throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
    }
   

    DiscussionsList item = new DiscussionsList(discussionText, request);

    helper.saveNew(item);
  }

 
 
  @Override
  public void doUpdate(GadgletRequestWrapper request, GadgletResponse response)
      throws RequestException {
    // check imput
    String discussionText = request.getParameter(Params.DISCUSSION_TEXT.getParamName());

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

      throw new RequestException(ReqErrorTypes.MISSING_ARGUMENT);
    }
   

    DiscussionsList item = (DiscussionsList) helper
        .getSingleItemByKey(request, DiscussionsList.class);
   
   
    item.setDiscussion(discussionText);
     
    helper.updated(null, item, request);
  }

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

    HasMoreItems hasMore = new HasMoreItems();
    int returnedItems;
    HashMap<String, Object> params = null;
   
     
    List<DiscussionsList> items = (List<DiscussionsList>) helper
        .getSharedItems(request, DiscussionsList.class,
            request.getFilterBy(),
            request.getFilterByDeclaration(), params,
            request.getOrderBy(), request.getStartFrom(),
            request.getItemNum(), hasMore);


    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 (DiscussionsList item : items) {
      // exit in the last item
      if (count++ == returnedItems)
        break;
      String title = null;

      if (!request.getGadgetViewState().equals(GadgetViewState.CANVAS)
          && item.getDiscussion().length() > 40)
        title = item.getDiscussion().substring(0, 40) + "...";
      else
        title = item.getDiscussion();

      ContentRecord record = response.newItem();

      record.addItemKeyField(item.getContentItemKey());
   
      record.addItemField(Params.DISCUSSION_TEXT.getParamName(), title);
     
      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.discussions.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.