Package org.wso2.carbon.dashboard.social.services

Source Code of org.wso2.carbon.dashboard.social.services.GSActivityService

/*
*  Copyright (c) 2005-2010, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
*  WSO2 Inc. 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.
*/
package org.wso2.carbon.dashboard.social.services;

import org.apache.shindig.auth.SecurityToken;
import org.apache.shindig.common.util.ImmediateFuture;
import org.apache.shindig.protocol.ProtocolException;
import org.apache.shindig.protocol.RestfulCollection;
import org.apache.shindig.social.core.model.ActivityImpl;
import org.apache.shindig.social.core.model.MediaItemImpl;
import org.apache.shindig.social.opensocial.model.Activity;
import org.apache.shindig.social.opensocial.model.MediaItem;
import org.apache.shindig.social.opensocial.spi.ActivityService;
import org.apache.shindig.social.opensocial.spi.CollectionOptions;
import org.apache.shindig.social.opensocial.spi.GroupId;
import org.apache.shindig.social.opensocial.spi.UserId;
import org.wso2.carbon.dashboard.social.common.utils.SocialUtils;
import org.wso2.carbon.registry.social.api.SocialDataException;
import org.wso2.carbon.registry.social.api.activity.ActivityManager;
import org.wso2.carbon.registry.social.api.utils.FilterOptions;
import org.wso2.carbon.registry.social.impl.activity.ActivityManagerImpl;

import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.concurrent.Future;


//@Singleton

public class GSActivityService implements ActivityService {

    private ActivityManager manager = new ActivityManagerImpl();
    private final String MEDIA_ITEM_TYPE_AUDIO = "audio";
    private final String MEDIA_ITEM_TYPE_IMAGE = "image";
    private final String MEDIA_ITEM_TYPE_VIDEO = "video";

    /* @Inject
    public GSActivityService(){
       
    }*/


    public Future<RestfulCollection<Activity>> getActivities(Set<UserId> userIds, GroupId groupId,
                                                             String appId, Set<String> fields,
                                                             CollectionOptions collectionOptions,
                                                             SecurityToken securityToken)
            throws ProtocolException {
        List<Activity> activitiesList = new ArrayList<Activity>();
        org.wso2.carbon.registry.social.api.activity.Activity[] activitiesArray;
        FilterOptions options = SocialUtils.convertCollectionOptionsToFilterOptions(collectionOptions);
        String[] userIdArray = new String[userIds.size()];
        int index = 0;
        for (UserId id : userIds) {
            if (id != null) {
                if (id.getUserId(securityToken).equals("null")) {
                    throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "No userId specified");
                }
                userIdArray[index++] = id.getUserId(securityToken);
            }
        }

        String groupIdString = groupId.getType().name();
        try {
            activitiesArray = manager.getActivities(userIdArray, groupIdString, appId, fields, options);
        }
        catch (SocialDataException e) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage(), e);
        }
        if (activitiesArray != null) {
            for (org.wso2.carbon.registry.social.api.activity.Activity item : activitiesArray) {
                if (item != null) {
                    activitiesList.add(convertToShindigActivity(item));
                }
            }
        }
        return ImmediateFuture.newInstance(new RestfulCollection<Activity>(activitiesList));
    }

    public Future<RestfulCollection<Activity>> getActivities(UserId userId, GroupId groupId,
                                                             String appId, Set<String> fields,
                                                             CollectionOptions collectionOptions,
                                                             Set<String> activityIds,
                                                             SecurityToken securityToken)
            throws ProtocolException {
        FilterOptions filterOptions = SocialUtils.convertCollectionOptionsToFilterOptions(collectionOptions);
        String groupIdString = groupId.getType().name();
        String userIdString = userId.getUserId(securityToken);
        if (userIdString.equals("null")) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "No userId specified");
        }
        String[] activityIdsArray = new String[activityIds.size()];
        List<String> list = new ArrayList<String>(activityIds);
        activityIdsArray = list.toArray(activityIdsArray);
        org.wso2.carbon.registry.social.api.activity.Activity[] activitiesArray;
        List<Activity> activitiesList = new ArrayList<Activity>();
        try {
            activitiesArray = manager.getActivities(userIdString, groupIdString, appId, fields, filterOptions,
                    activityIdsArray);
        } catch (SocialDataException e) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage(), e);
        }
        if (activitiesArray != null) {
            for (org.wso2.carbon.registry.social.api.activity.Activity item : activitiesArray) {
                if (item != null) {
                    activitiesList.add(convertToShindigActivity(item));
                }
            }
        }
        return ImmediateFuture.newInstance(new RestfulCollection<Activity>(activitiesList));
    }

    public Future<Activity> getActivity(UserId userId, GroupId groupId, String appId,
                                        Set<String> fields, String activityId, SecurityToken securityToken)
            throws ProtocolException {
        String userIdString = userId.getUserId(securityToken);
        if (userIdString.equals("null")) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "No userId specified");
        }
        String groupIdString = groupId.getType().name();
        org.wso2.carbon.registry.social.api.activity.Activity activityObj;
        try {
            activityObj = manager.getActivity(userIdString, groupIdString, appId, fields, activityId);
        } catch (SocialDataException e) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage(), e);
        }
        return ImmediateFuture.newInstance(convertToShindigActivity(activityObj));

    }

    public Future<Void> deleteActivities(UserId userId, GroupId groupId, String appId,
                                         Set<String> activityIds, SecurityToken securityToken)
            throws ProtocolException {
        String userIdString = userId.getUserId(securityToken);
        String groupIdString = groupId.getType().name();
        try {
            manager.deleteActivities(userIdString, groupIdString, appId, activityIds);
        } catch (SocialDataException e) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage(), e);
        }

        return ImmediateFuture.newInstance(null);
    }

    public Future<Void> createActivity(UserId userId, GroupId groupId, String appId,
                                       Set<String> fields, Activity activity,
                                       SecurityToken securityToken) throws ProtocolException {

        String userIdString = userId.getUserId(securityToken);
        String groupIdString = groupId.getType().name();

        try {
            manager.createActivity(userIdString, groupIdString, appId, fields, convertToSocialActivity(activity));
        } catch (SocialDataException e) {
            throw new ProtocolException(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage(), e);
        }
        return ImmediateFuture.newInstance(null);
    }


    /**
     * Converts {@link org.wso2.carbon.registry.social.api.activity.Activity} to {@link org.apache.shindig.social.opensocial.model.Activity}
     *
     * @param activityObj org.wso2.carbon.social.activity.Activity object
     * @return org.apache.shindig.social.opensocial.model.Activity object
     */

    private Activity convertToShindigActivity(org.wso2.carbon.registry.social.api.activity.Activity activityObj) {
        Activity resultObj = new ActivityImpl();
        if (activityObj.getAppId() != null) {
            resultObj.setAppId(activityObj.getAppId());
        }
        if (activityObj.getBody() != null) {
            resultObj.setBody(activityObj.getBody());
        }
        if (activityObj.getBodyId() != null) {
            resultObj.setBodyId(activityObj.getBodyId());
        }
        if (activityObj.getExternalId() != null) {
            resultObj.setExternalId(activityObj.getExternalId());
        }
        if (activityObj.getId() != null) {
            resultObj.setId(activityObj.getId());
        }
        if (activityObj.getPostedTime() != null) {
            resultObj.setPostedTime(activityObj.getPostedTime());
        }
        if (activityObj.getPriority() != null) {
            resultObj.setPriority(activityObj.getPriority());
        }
        if (activityObj.getStreamFaviconUrl() != null) {
            resultObj.setStreamFaviconUrl(activityObj.getStreamFaviconUrl());
        }
        if (activityObj.getStreamSourceUrl() != null) {
            resultObj.setStreamSourceUrl(activityObj.getStreamSourceUrl());
        }
        if (activityObj.getStreamTitle() != null) {
            resultObj.setStreamTitle(activityObj.getStreamTitle());
        }
        if (activityObj.getStreamUrl() != null) {
            resultObj.setStreamUrl(activityObj.getStreamUrl());
        }
        if (activityObj.getTemplateParams() != null) {
            resultObj.setTemplateParams(activityObj.getTemplateParams());
        }
        if (activityObj.getTitle() != null) {
            resultObj.setTitle(activityObj.getTitle());
        }
        if (activityObj.getTitleId() != null) {
            resultObj.setTitleId(activityObj.getTitleId());
        }
        if (activityObj.getUpdated() != null) {
            resultObj.setUpdated(activityObj.getUpdated());
        }
        if (activityObj.getUrl() != null) {
            resultObj.setUrl(activityObj.getUrl());
        }
        if (activityObj.getUserId() != null) {
            resultObj.setUserId(activityObj.getUserId());
        }
        List<MediaItem> mediaItemList = new ArrayList<MediaItem>();

        if (activityObj.getMediaItems() != null) {
            for (org.wso2.carbon.registry.social.api.activity.MediaItem item : activityObj.getMediaItems()) {
                MediaItem itemObj = new MediaItemImpl();
                if (item != null) {
                    if (item.getMimeType() != null) {
                        itemObj.setMimeType(item.getMimeType());
                    }
                    if (item.getThumbnailUrl() != null) {
                        itemObj.setThumbnailUrl(item.getThumbnailUrl());
                    }
                    if (item.getType() != null) {
                        org.wso2.carbon.registry.social.api.activity.MediaItem.Type itemType = item.getType();
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_AUDIO)) {
                            itemObj.setType(MediaItem.Type.AUDIO);
                        }
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_IMAGE)) {
                            itemObj.setType(MediaItem.Type.IMAGE);
                        }
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_VIDEO)) {
                            itemObj.setType(MediaItem.Type.VIDEO);
                        }

                    }
                    if (item.getUrl() != null) {
                        itemObj.setUrl(item.getUrl());
                    }
                    mediaItemList.add(itemObj);
                }

            }
            resultObj.setMediaItems(mediaItemList);

        }

        return resultObj;
    }

    /**
     * Converts {@link org.apache.shindig.social.opensocial.model.Activity} to {@link org.wso2.carbon.registry.social.api.activity.Activity}
     *
     * @param activityObj org.apache.shindig.social.opensocial.model.Activity object
     * @return org.wso2.carbon.registry.social.api.activity.Activity object
     */


    private org.wso2.carbon.registry.social.api.activity.Activity convertToSocialActivity(Activity activityObj) {
        org.wso2.carbon.registry.social.api.activity.Activity resultObj =
                new org.wso2.carbon.registry.social.impl.activity.ActivityImpl();
        if (activityObj.getAppId() != null) {
            resultObj.setAppId(activityObj.getAppId());
        }
        if (activityObj.getBody() != null) {
            resultObj.setBody(activityObj.getBody());
        }
        if (activityObj.getBodyId() != null) {
            resultObj.setBodyId(activityObj.getBodyId());
        }
        if (activityObj.getExternalId() != null) {
            resultObj.setExternalId(activityObj.getExternalId());
        }
        if (activityObj.getId() != null) {
            resultObj.setId(activityObj.getId());
        }
        if (activityObj.getPostedTime() != null) {
            resultObj.setPostedTime(activityObj.getPostedTime());
        }
        if (activityObj.getPriority() != null) {
            resultObj.setPriority(activityObj.getPriority());
        }
        if (activityObj.getStreamFaviconUrl() != null) {
            resultObj.setStreamFaviconUrl(activityObj.getStreamFaviconUrl());
        }
        if (activityObj.getStreamSourceUrl() != null) {
            resultObj.setStreamSourceUrl(activityObj.getStreamSourceUrl());
        }
        if (activityObj.getStreamTitle() != null) {
            resultObj.setStreamTitle(activityObj.getStreamTitle());
        }
        if (activityObj.getStreamUrl() != null) {
            resultObj.setStreamUrl(activityObj.getStreamUrl());
        }
        if (activityObj.getTemplateParams() != null) {
            resultObj.setTemplateParams(activityObj.getTemplateParams());
        }
        if (activityObj.getTitle() != null) {
            resultObj.setTitle(activityObj.getTitle());
        }
        if (activityObj.getTitleId() != null) {
            resultObj.setTitleId(activityObj.getTitleId());
        }
        if (activityObj.getUpdated() != null) {
            resultObj.setUpdated(activityObj.getUpdated());
        }
        if (activityObj.getUrl() != null) {
            resultObj.setUrl(activityObj.getUrl());
        }
        if (activityObj.getUserId() != null) {
            resultObj.setUserId(activityObj.getUserId());
        }
        List<org.wso2.carbon.registry.social.api.activity.MediaItem> mediaItemList =
                new ArrayList<org.wso2.carbon.registry.social.api.activity.MediaItem>();

        if (activityObj.getMediaItems() != null) {
            for (MediaItem item : activityObj.getMediaItems()) {
                org.wso2.carbon.registry.social.api.activity.MediaItem itemObj =
                        new org.wso2.carbon.registry.social.impl.activity.MediaItemImpl();
                if (item != null) {
                    if (item.getMimeType() != null) {
                        itemObj.setMimeType(item.getMimeType());
                    }
                    if (item.getThumbnailUrl() != null) {
                        itemObj.setThumbnailUrl(item.getThumbnailUrl());
                    }
                    if (item.getType() != null) {
                        MediaItem.Type itemType = item.getType();
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_AUDIO)) {
                            itemObj.setType(org.wso2.carbon.registry.social.api.activity.MediaItem.Type.AUDIO);
                        }
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_IMAGE)) {
                            itemObj.setType(org.wso2.carbon.registry.social.api.activity.MediaItem.Type.IMAGE);
                        }
                        if (itemType.name().equals(MEDIA_ITEM_TYPE_VIDEO)) {
                            itemObj.setType(org.wso2.carbon.registry.social.api.activity.MediaItem.Type.VIDEO);
                        }

                    }
                    if (item.getUrl() != null) {
                        itemObj.setUrl(item.getUrl());
                    }
                    mediaItemList.add(itemObj);
                }

            }
            resultObj.setMediaItems(mediaItemList);
        }

        return resultObj;
    }
}
TOP

Related Classes of org.wso2.carbon.dashboard.social.services.GSActivityService

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.