private static Map<Integer,Integer> metaInfoSiteNodeIdMap = new ConcurrentHashMap<Integer,Integer>();
public SiteNodeVO getSiteNodeVOWithMetaInfoContentId(Database db, Integer contentId) throws ConstraintException, SystemException, Exception
{
SiteNodeVO siteNodeVO = null;
Integer cachedSiteNodeId = metaInfoSiteNodeIdMap.get(contentId);
if(cachedSiteNodeId != null)
{
siteNodeVO = getSiteNodeVOWithId(cachedSiteNodeId, db);
}
else
{
//logger.error("Asking for heavy lookup on meta info content id:" + contentId);
//Thread.dumpStack();
//System.out.println("Asking for mapping:" + contentId);
OQLQuery oql = db.getOQLQuery("SELECT sn FROM org.infoglue.cms.entities.structure.impl.simple.SmallSiteNodeImpl sn WHERE sn.metaInfoContentId = $1 ORDER BY sn.siteNodeId");
oql.bind(contentId);
QueryResults results = oql.execute(Database.READONLY);
if(results.hasMore())
{
SmallSiteNodeImpl siteNode = (SmallSiteNodeImpl)results.next();
siteNodeVO = siteNode.getValueObject();
logger.info("Caching " + siteNodeVO.getId() + " on " + contentId);
metaInfoSiteNodeIdMap.put(contentId, siteNodeVO.getId());
}
results.close();
oql.close();
}