001/*
002 * Copyright 2017 the original author or authors.
003 *
004 * Licensed to the Apache Software Foundation (ASF) under one or more
005 * contributor license agreements.  See the NOTICE file distributed with
006 * this work for additional information regarding copyright ownership.
007 * The ASF licenses this file to You under the Apache License, Version 2.0
008 * (the "License"); you may not use this file except in compliance with
009 * the License.  You may obtain a copy of the License at
010 *
011 *      http://www.apache.org/licenses/LICENSE-2.0
012 *
013 * Unless required by applicable law or agreed to in writing, software
014 * distributed under the License is distributed on an "AS IS" BASIS,
015 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
016 * See the License for the specific language governing permissions and
017 * limitations under the License.
018 */
019package net.sf.jkniv.camel.sap.jco3;
020
021import java.util.HashMap;
022import java.util.Map;
023
024import org.slf4j.Logger;
025import org.slf4j.LoggerFactory;
026
027import com.sap.conn.jco.JCoRecordMetaData;
028import com.sap.conn.jco.JCoTable;
029
030public class MapParserResult implements ParserResult<Map<String, Object>>
031{
032    private static final Logger LOG = LoggerFactory.getLogger(MapParserResult.class);
033    
034    @Override
035    public Map<String, Object> getValues(JCoTable codes, int row)
036    {
037        Map<String, Object> values = new HashMap<String, Object>();
038        JCoRecordMetaData recordMetaData = codes.getRecordMetaData();
039        if (codes != null && codes.getNumColumns() > 0)
040        {
041            for (int i = 0; i < codes.getNumColumns(); i++)
042            {
043                String dataKey = recordMetaData.getName(i);
044                Object o = codes.getValue(i);
045                values.put(dataKey, o);
046                
047                if (LOG.isDebugEnabled())
048                    LOG.debug("[{},{}] dataKey=[{}], type=[{}], description=[{}], value=[{}]", row, i, dataKey,
049                            (o == null ? null : o.getClass().getName()), recordMetaData.getDescription(i), o);
050            }
051        }
052        return values;
053    }
054    
055}