package org.teiid.translator.coherence; import java.util.HashMap; import java.util.Map; import org.teiid.translator.TranslatorException; import com.tangosol.net.CacheFactory; import com.tangosol.net.NamedCache; /** * Sample implementation of the SouceCacheAdapter that will * translate the Trade related objects to the row/columns that * are returned in the resultset * * @author vhalbert * */ public class TradesCacheSource extends SourceCacheAdapter { public static final String CACHE_NAME = "Trades"; public static final int NUMLEGS = 10; public static final int NUMTRADES = 3; /** * Load the cache with 3 trades and 10 legs for each trade. * * @throws Exception */ private static void loadCoherence() throws Exception { NamedCache tradesCache = CacheFactory.getCache(CACHE_NAME); TradesCacheSource translator = new TradesCacheSource(); for (int i = 1; i <= NUMTRADES; i++) { Trade trade = (Trade) translator.createObjectFromMetadata("org.teiid.translator.coherence.Trade"); // execFactory.getCacheTranslator().createObject("org.teiid.translator.coherence.Trade"); Map legsMap = new HashMap(); for (int j = 1; j <= NUMLEGS; j++) { Object leg = translator.createObjectFromMetadata("org.teiid.translator.coherence.Leg"); //createObject("org.teiid.translator.coherence.Leg"); //new Leg(); if (leg == null) { throw new Exception("Unable to create leg"); } translator.setValue("Trade", "LegId", leg, j, long.class); translator.setValue("Trade", "Notational", leg, j, double.class); translator.setValue("Trade", "Name", leg, "LegName " + j, String.class); legsMap.put(j, leg); } translator.setValue("Trade", "TradeId", trade, i, long.class); translator.setValue("Trade", "Name", trade, "TradeName " + i, String.class); translator.setValue("Trade", "Legs", trade, legsMap, Map.class); tradesCache.put(i, trade); } } @Override public void addMetadata() throws TranslatorException { // TODO Auto-generated method stub try { System.out.println("Loading Coherence"); loadCoherence(); System.out.println("Loaded Coherence"); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }