org.jasig.portlet.blackboardvcportlet.dao.ws.impl.PresentationWSDaoImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.jasig.portlet.blackboardvcportlet.dao.ws.impl.PresentationWSDaoImpl.java

Source

/**
 * Licensed to Apereo under one or more contributor license
 * agreements. See the NOTICE file distributed with this work
 * for additional information regarding copyright ownership.
 * Apereo 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 the following location:
 *
 *   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.jasig.portlet.blackboardvcportlet.dao.ws.impl;

import java.util.List;

import javax.activation.DataHandler;
import javax.xml.bind.JAXBElement;

import org.jasig.portlet.blackboardvcportlet.dao.ws.PresentationWSDao;
import org.jasig.portlet.blackboardvcportlet.dao.ws.WSDaoUtils;
import org.jasig.portlet.blackboardvcportlet.service.util.SASWebServiceOperations;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.support.DataAccessUtils;
import org.springframework.stereotype.Service;

import com.elluminate.sas.BlackboardListRepositoryPresentation;
import com.elluminate.sas.BlackboardListSessionContent;
import com.elluminate.sas.BlackboardPresentationResponse;
import com.elluminate.sas.BlackboardPresentationResponseCollection;
import com.elluminate.sas.BlackboardRemoveRepositoryPresentation;
import com.elluminate.sas.BlackboardRemoveSessionPresentation;
import com.elluminate.sas.BlackboardSetSessionPresentation;
import com.elluminate.sas.BlackboardUploadRepositoryContent;
import com.elluminate.sas.ObjectFactory;

@Service
public class PresentationWSDaoImpl implements PresentationWSDao {

    protected Logger logger = LoggerFactory.getLogger(getClass());

    private SASWebServiceOperations sasWebServiceOperations;

    @Autowired
    public void setSasWebServiceOperations(SASWebServiceOperations sasWebServiceOperations) {
        this.sasWebServiceOperations = sasWebServiceOperations;
    }

    @Override
    public BlackboardPresentationResponse uploadPresentation(long sessionId, String creatorId, String filename,
            String description, DataHandler data) {
        BlackboardPresentationResponse response = uploadPresentation(creatorId, filename, description, data);
        if (!linkPresentationToSession(sessionId, response.getPresentationId()))
            logger.error("Error linking presentation (" + response.getPresentationId() + ") to session ("
                    + sessionId + "), however upload was successful.");
        return response;
    }

    @Override
    public BlackboardPresentationResponse uploadPresentation(String creatorId, String filename, String description,
            DataHandler data) {
        BlackboardUploadRepositoryContent request = new ObjectFactory().createBlackboardUploadRepositoryContent();
        request.setCreatorId(creatorId);
        request.setDescription(description);
        request.setFilename(filename);
        request.setContent(data);

        JAXBElement<BlackboardUploadRepositoryContent> createUploadRepositoryPresentation = new ObjectFactory()
                .createUploadRepositoryPresentation(request);

        @SuppressWarnings("unchecked")
        JAXBElement<BlackboardPresentationResponseCollection> response = (JAXBElement<BlackboardPresentationResponseCollection>) sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/UploadRepositoryPresentation",
                        createUploadRepositoryPresentation);
        BlackboardPresentationResponseCollection unwrappedResponse = response.getValue();
        return DataAccessUtils.singleResult(unwrappedResponse.getPresentationResponses());
    }

    @Override
    public boolean linkPresentationToSession(long sessionId, long presentationId) {
        BlackboardSetSessionPresentation request = new ObjectFactory().createBlackboardSetSessionPresentation();
        request.setPresentationId(presentationId);
        request.setSessionId(sessionId);

        if (WSDaoUtils.isSuccessful(sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/SetSessionPresentation", request))) {
            return true;
        } else {
            logger.error("Issue linking the presentation id " + presentationId + " with session " + sessionId);
            return false;
        }
    }

    @Override
    public List<BlackboardPresentationResponse> getSessionPresentations(long sessionId) {
        BlackboardListSessionContent request = new ObjectFactory().createBlackboardListSessionContent();
        request.setSessionId(sessionId);

        JAXBElement<BlackboardListSessionContent> createListSessionPresentation = new ObjectFactory()
                .createListSessionPresentation(request);
        @SuppressWarnings("unchecked")
        final JAXBElement<BlackboardPresentationResponseCollection> objSessionResponse = (JAXBElement<BlackboardPresentationResponseCollection>) sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/ListSessionPresentation",
                        createListSessionPresentation);

        return objSessionResponse.getValue().getPresentationResponses();
    }

    @Override
    public List<BlackboardPresentationResponse> getRepositoryPresentations(String creatorId, Long presentationId,
            String description) {
        BlackboardListRepositoryPresentation request = new ObjectFactory()
                .createBlackboardListRepositoryPresentation();
        if (creatorId == null && presentationId == null && description == null) {
            throw new IllegalStateException("You must specify at least one piece of criteria");
        }
        if (creatorId != null) {
            request.setCreatorId(creatorId);
        }
        if (presentationId != null) {
            request.setPresentationId(presentationId);
        }

        if (description != null) {
            request.setDescription(description);
        }
        @SuppressWarnings("unchecked")
        final JAXBElement<BlackboardPresentationResponseCollection> response = (JAXBElement<BlackboardPresentationResponseCollection>) sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/ListRepositoryPresentation", request);
        final BlackboardPresentationResponseCollection objSessionResponse = (BlackboardPresentationResponseCollection) response
                .getValue();
        return objSessionResponse.getPresentationResponses();
    }

    @Override
    public boolean deletePresentation(long presentationId) {
        BlackboardRemoveRepositoryPresentation request = new ObjectFactory()
                .createBlackboardRemoveRepositoryPresentation();
        request.setPresentationId(presentationId);
        return WSDaoUtils.isSuccessful(sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/RemoveRepositoryPresentation", request));

    }

    @Override
    public boolean deleteSessionPresenation(long sessionId, long presentationId) {
        BlackboardRemoveSessionPresentation request = new ObjectFactory()
                .createBlackboardRemoveSessionPresentation();
        request.setSessionId(sessionId);
        request.setPresentationId(presentationId);

        return WSDaoUtils.isSuccessful(sasWebServiceOperations
                .marshalSendAndReceiveToSAS("http://sas.elluminate.com/RemoveSessionPresentation", request));
    }

}