/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.openbravo.data.loader; import com.mongodb.BasicDBObject; import com.mongodb.DBCursor; import com.mongodb.DBObject; import com.openbravo.basic.BasicException; import java.util.Map; /** * * @author TATIOTI-IDEAPAD */ public abstract class MongoDBSentence extends MongoDBBaseSentence { protected Session m_s; public MongoDBSentence(Session s) { super(); m_s = s; } protected static final class MongoDBDataResultSet implements DataResultSet { private DBCursor m_dbCursor = null; private DBObject m_dbObject = null; private DBObject m_currentObject = new BasicDBObject(); private Map<Integer, String> m_columnMap; private SerializerRead m_serread; // private int m_iColumnCount; /** * * @param cursor * @param columnMap * @param rs * @param serread */ public MongoDBDataResultSet(DBCursor cursor, Map<Integer, String> columnMap, SerializerRead serread) { m_dbCursor = cursor; m_serread = serread; m_columnMap = columnMap; } public MongoDBDataResultSet(DBObject dbObject, Map<Integer, String> columnMap, SerializerRead serread) { m_dbObject = dbObject; m_serread = serread; m_columnMap = columnMap; } /** * * @param columnIndex * @return * @throws BasicException */ @Override public Integer getInt(int columnIndex) throws BasicException { if (m_dbCursor != null) return (Integer)m_currentObject.get(m_columnMap.get(columnIndex)); else return (Integer)m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public String getString(int columnIndex) throws BasicException { if (m_dbCursor != null) return (String)m_currentObject.get(m_columnMap.get(columnIndex)); else return (String)m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public Double getDouble(int columnIndex) throws BasicException { if (m_dbCursor != null) return (Double)m_currentObject.get(m_columnMap.get(columnIndex)); else return (Double)m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public Boolean getBoolean(int columnIndex) throws BasicException { if (m_dbCursor != null) return (Boolean)m_currentObject.get(m_columnMap.get(columnIndex)); else return (Boolean)m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public java.util.Date getTimestamp(int columnIndex) throws BasicException { if (m_dbCursor != null) return (java.util.Date)m_currentObject.get(m_columnMap.get(columnIndex)); else return (java.util.Date)m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public byte[] getBytes(int columnIndex) throws BasicException { if (m_dbCursor != null) return (byte[])m_currentObject.get(m_columnMap.get(columnIndex)); else return (byte[])m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @param columnIndex * @return * @throws BasicException */ @Override public Object getObject(int columnIndex) throws BasicException { if (m_dbCursor != null) return m_currentObject.get(m_columnMap.get(columnIndex)); else return m_dbObject.get(m_columnMap.get(columnIndex)); } /** * * @return @throws BasicException */ @Override public DataField[] getDataField() throws BasicException { DataField[] df = new DataField[m_columnMap.keySet().size()]; for (int i = 0; i < df.length; i++) { df[i] = new DataField(); df[i].Name = m_columnMap.get(i); //df[i].Size = md.getColumnDisplaySize(i + 1); //df[i].Type = md.getColumnType(i + 1); } return df; } /** * * @return @throws BasicException */ @Override public Object getCurrent() throws BasicException { return m_serread.readValues(this); } /** * * @return @throws BasicException */ @Override public boolean next() throws BasicException { if (m_dbCursor != null) { if (m_dbCursor.hasNext()) { m_currentObject = m_dbCursor.next(); return true; } else return false; } else return !m_dbObject.keySet().isEmpty(); } /** * * @throws BasicException */ @Override public void close() throws BasicException { if (m_dbCursor != null) m_dbCursor.close(); } /** * * @return @throws BasicException */ @Override public int updateCount() throws BasicException { return -1; // es decir somos datos. } } }