Package com.streamreduce.rest.resource.api

Source Code of com.streamreduce.rest.resource.api.AbstractOwnableResource

/*
* Copyright 2012 Nodeable Inc
*
*    Licensed 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 com.streamreduce.rest.resource.api;

import com.mongodb.BasicDBObject;
import com.streamreduce.core.model.Connection;
import com.streamreduce.core.model.InventoryItem;
import com.streamreduce.core.model.SobaObject;
import com.streamreduce.core.model.User;
import com.streamreduce.connections.GatewayProvider;
import com.streamreduce.rest.dto.response.AbstractOwnableResponseSobaDTO;
import com.streamreduce.rest.dto.response.ConnectionResponseDTO;
import com.streamreduce.rest.dto.response.InventoryItemResponseDTO;
import com.streamreduce.rest.dto.response.OutboundConfigurationResponseDTO;

public abstract class AbstractOwnableResource extends AbstractTagableSobaResource {


    protected <T extends AbstractOwnableResponseSobaDTO> T toOwnerDTO(SobaObject sobaObject, T baseResponseDTO) {
        super.toBaseDTO(sobaObject, baseResponseDTO);

        User currentUser = securityService.getCurrentUser();
        baseResponseDTO.setOwner(sobaObject.getUser().getId().equals(currentUser.getId()));

        return baseResponseDTO;
    }

    protected InventoryItemResponseDTO toFullDTO(InventoryItem inventoryItem) {
        InventoryItemResponseDTO dto = new InventoryItemResponseDTO();
        Connection connection = inventoryItem.getConnection();
        BasicDBObject payload = applicationManager.getInventoryService().getInventoryItemPayload(inventoryItem);

        super.toBaseDTO(inventoryItem, dto);

        dto.setOwner(inventoryItem.getUser().getId().equals(securityService.getCurrentUser().getId()));

        dto.setConnectionAlias(connection.getAlias());
        dto.setConnectionId(connection.getId());
        dto.setConnectionType(connection.getType());
        dto.setConnectionProviderId(connection.getProviderId());

        dto.setExternalId(inventoryItem.getExternalId());
        dto.setType(inventoryItem.getType());

        // Prune any sensitive information from the payload
        if (!dto.isOwner()) {
            if (payload.containsField("adminPassword")) {
                payload.removeField("adminPassword");
            }
            if (payload.containsField("credentials")) {
                payload.removeField("credentials");
            }
        }

        dto.setPayload(payload);

        return dto;
    }

    protected ConnectionResponseDTO toFullDTO(Connection connection) {
        ConnectionResponseDTO dto = new ConnectionResponseDTO();

        // set user
        this.toOwnerDTO(connection, dto);

        dto.setType(connection.getType());
        dto.setUrl(connection.getUrl());
        dto.setProviderId(connection.getProviderId());
        dto.setAuthType(connection.getAuthType());
        dto.setOutboundConfigurations(OutboundConfigurationResponseDTO.toDTOs(connection.getOutboundConfigurations()));

        // return the identity for GMG connections only
        // TODO: this is really just to get the Autogenerated key... better way to do this?
        if (connection.getCredentials() != null && GatewayProvider.TYPE.equals(connection.getType()) && dto.isOwner()) {
            dto.setIdentity(connection.getCredentials().getIdentity());
        }
        return dto;
    }
}
TOP

Related Classes of com.streamreduce.rest.resource.api.AbstractOwnableResource

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.