Thanks Ilya,
I tried implementing your example in below manner but the overridden
loadCache() is never called.

public class CacheJdbct1Store extends CacheStoreAdapter<Integer,t1> {

/** Data source. */
    public static final DataSource DATA_SRC =
       
JdbcConnectionPool.create("jdbc:sqlserver://localhost:8067;databaseName=TestDB","**","**");

    /** Spring JDBC template. */
    private JdbcTemplate jdbcTemplate;

    /**
     * Constructor.
     *
     * @throws IgniteException If failed.
     */
    public CacheJdbct1Store() throws IgniteException {
        jdbcTemplate = new JdbcTemplate(DATA_SRC);
    }

    /** {@inheritDoc} */
    @Override public t1 load(Integer key) {
        System.out.println(">>> Store load [key=" + key + ']');

        try {
            return jdbcTemplate.queryForObject("select * from t1", new
RowMapper<t1>() {
                public t1 mapRow(ResultSet rs, int rowNum) throws
SQLException {
                    return new t1(rs.getString(2),
rs.getInt(3),rs.getLong(4),rs.getInt(5),rs.getTimestamp(6),rs.getTimestamp(7));
                }
            }, key);
        }
        catch (EmptyResultDataAccessException ignored) {
            return null;
        }
    }

    /** {@inheritDoc} */
    public void write(Cache.Entry<? extends Integer, ? extends t1> entry) {
     //To Be Implemented
    }

    /** {@inheritDoc} */
    @Override public void delete(Object key) {
        System.out.println(">>> Store delete [key=" + key + ']');
        //To Be Implemented
    }

    /** {@inheritDoc} */
    @Override public void loadCache(final IgniteBiInClosure<Integer, t1>
clo, Object... args) {
        if (args == null || args.length == 0 || args[0] == null)
            throw new CacheLoaderException("Expected entry count parameter
is not provided.");

        int entryCnt = (Integer)args[0];

        final AtomicInteger cnt = new AtomicInteger();

        jdbcTemplate.query("select * from t1", new RowCallbackHandler() {
            @Override public void processRow(ResultSet rs) throws
SQLException {
                t1 bic = new t1(rs.getString(1),
rs.getInt(2),rs.getLong(3),rs.getInt(4),rs.getTimestamp(5),rs.getTimestamp(6));

                clo.apply(rs.getInt(0), bic);

                cnt.incrementAndGet();
            }
        }, entryCnt);

        System.out.println(">>> Loaded " + cnt + " values into cache.");
    }
}


Main CLASS:
Ignite ignite = Ignition.start("JDBCLoadCluster-client.xml");
IgniteCache<Integer, t1> cache = ignite.getOrCreateCache("t1");
cache.loadCache(null);
System.out.println("Cache load complete"); 

Please correct me what I am missing in this to load delta data.

Thanks,
Austin



--
Sent from: http://apache-ignite-users.70518.x6.nabble.com/

Reply via email to