/*
* Created on 29.7.2003 by tryggvil in project com.project
*/
package com.idega.event;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.Vector;
import com.idega.presentation.IWContext;
import com.idega.presentation.PresentationObject;
import com.idega.presentation.text.Link;
/**
* EventLogic //TODO: tryggvil Describe class
* Copyright (C) idega software 2003
* @author <a href="mailto:tryggvi@idega.is">Tryggvi Larusson</a>
* @version 1.0
*/
public class EventLogic
{
public static final String IB_OBJECT_INSTANCE_COORDINATE = "ib_ob_inst";
public static final String IB_OBJECT_INSTANCE_EVENT_SOURCE = "ib_ob_inst_ev_s";
/**
*
*/
public static void setICObjectInstanceListeners(Link l, int[] ibPageId, int[] instanceId)
{
String prm = "";
for (int i = 0; i < ibPageId.length; i++)
{
if (i != 0)
{
prm += ",";
}
prm += ibPageId[i] + "_" + instanceId[i];
}
l.addParameter(IB_OBJECT_INSTANCE_COORDINATE, prm);
}
/**
*
*/
public static void setICObjectInstanceListener(Link l, int ibPageId, int instanceId)
{
l.addParameter(IB_OBJECT_INSTANCE_COORDINATE, ibPageId + "_" + instanceId);
}
/**
*
*/
public static void setICObjectInstanceEventSource(Link l, int ibPageId, int instanceId)
{
l.addParameter(IB_OBJECT_INSTANCE_EVENT_SOURCE, ibPageId + "_" + instanceId);
}
/**
*
*/
public static PresentationObject[] getIWPOListeners(IWContext iwc)
{
String prm = iwc.getParameter(IB_OBJECT_INSTANCE_COORDINATE);
String[] coordinates = null;
if (prm != null)
{
StringTokenizer tokens = new StringTokenizer(prm, ",");
coordinates = new String[tokens.countTokens()];
int index = 0;
while (tokens.hasMoreTokens())
{
coordinates[index++] = tokens.nextToken();
}
}
if (coordinates != null && coordinates.length > 0)
{
List l = new Vector();
for (int i = 0; i < coordinates.length; i++)
{
String crdnts = coordinates[i];
int index = crdnts.indexOf('_');
String page = crdnts.substring(0, index);
String inst = crdnts.substring(index + 1, crdnts.length());
if (!"".equals(page) && !"".equals(inst))
{
//Page parentPage = BuilderLogic.getInstance().getIBXMLPage(page).getPopulatedPage();
//PresentationObject obj = parentPage.getContainedICObjectInstance(Integer.parseInt(inst));
PresentationObject obj = getPopulatedObjectInstance(inst, iwc);
if (obj != null && !obj.equals(PresentationObject.NULL_CLONE_OBJECT))
{
l.add(obj);
}
}
}
PresentationObject[] toReturn = (PresentationObject[]) l.toArray(new PresentationObject[0]);
if (toReturn.length > 0)
{
/*
System.err.println("BuilderLogic Listeners");
for (int i = 0; i < toReturn.length; i++) {
System.err.println(" - "+toReturn[i].getParentPageID()+"_"+toReturn[i].getICObjectInstanceID());
}*/
return toReturn;
}
else
{
//System.err.println("BuilderLogic Listeners are null");
return null;
}
}
else
{
//System.err.println("BuilderLogic Listeners are null");
return null;
}
}
/**
*
*/
public static PresentationObject getIWPOEventSource(IWContext iwc)
{
String coordinates = iwc.getParameter(IB_OBJECT_INSTANCE_EVENT_SOURCE);
if (coordinates != null)
{
String crdnts = coordinates;
int index = crdnts.indexOf('_');
String page = crdnts.substring(0, index);
String inst = crdnts.substring(index + 1, crdnts.length());
if (!"".equals(page) && !"".equals(inst))
{
/*Page parentPage = BuilderLogic.getInstance().getIBXMLPage(page).getPopulatedPage();
PresentationObject obj = parentPage.getContainedICObjectInstance(Integer.parseInt(inst));
return obj;*/
return getPopulatedObjectInstance(inst, iwc);
}
}
return null;
}
/**
*
*/
public static PresentationObject getPopulatedObjectInstance(int id, IWContext iwc)
{
return ObjectInstanceCacher.getObjectInstanceClone(id, iwc);
}
/**
*
*/
public static PresentationObject getPopulatedObjectInstance(String key, IWContext iwc)
{
return ObjectInstanceCacher.getObjectInstanceClone(key, iwc);
}
/**
*
*/
public static Map getCashedObjectInstancesForPage(int pageId)
{
return ObjectInstanceCacher.getObjectInstancesCachedForPage(pageId);
}
/**
*
*/
public static Map getCashedObjectInstancesForPage(String pageKey)
{
return ObjectInstanceCacher.getObjectInstancesCachedForPage(pageKey);
}
/**
*
*/
public static Set getInstanceIdsOnPage(String pageKey)
{
Map m = ObjectInstanceCacher.getObjectInstancesCachedForPage(pageKey);
if (m != null)
{
return m.keySet();
}
else
{
return null;
}
}
/**
*
*/
public static Set getInstanceIdsOnPage(int pageKey)
{
Map m = ObjectInstanceCacher.getObjectInstancesCachedForPage(pageKey);
if (m != null)
{
return m.keySet();
}
else
{
return null;
}
}
}