/*
* Copyright (c) 2015-2016, Pradeeban Kathiravelu and others. All Rights Reserved.
*
* 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 edu.emory.bmi.datacafe.core.kernel;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Abstract class implementing the Source Connector Interface.
 */
public abstract class AbstractDataSourceConnector implements ISourceConnector {

    @Override
    public String getChosenAttributeNames(String[] preferredAttributes) {
        List<String> attributes = Arrays.asList(preferredAttributes);
        return attributes.stream()
                .map(String::toString)
                .collect(Collectors.joining(","));
    }

    @Override
    public List<String> getAttributesWithHeader(String database, String table, List ids, String idAttribute,
                                                String[] preferredAttributes) {
        List<String> attributes = new ArrayList<>();
        attributes.add(getChosenAttributeNames(preferredAttributes));

        attributes.addAll(getAttributeValues(database, table, ids, idAttribute, preferredAttributes).
                stream().map(str -> str).collect(Collectors.toList()));

        return attributes;
    }

}

/*
* Copyright (c) 2015-2016, Pradeeban Kathiravelu and others. All Rights Reserved.
*
* 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 edu.emory.bmi.datacafe.core.kernel;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * Abstract class implementing the Source Connector Interface.
 */
public abstract class AbstractDataSourceConnector implements ISourceConnector {

    @Override
    public String getChosenAttributeNames(String[] preferredAttributes) {
        List<String> attributes = Arrays.asList(preferredAttributes);
        return attributes.stream()
                .map(String::toString)
                .collect(Collectors.joining(","));
    }

    @Override
    public List<String> getAttributesWithHeader(String database, String table, List ids, String idAttribute,
                                                String[] preferredAttributes) {
        List<String> attributes = new ArrayList<>();
        attributes.add(getChosenAttributeNames(preferredAttributes));

        attributes.addAll(getAttributeValues(database, table, ids, idAttribute, preferredAttributes).
                stream().collect(Collectors.toList()));

        return attributes;
    }

}

Remove str->str map.