package com.idega.business.chooser; import java.rmi.RemoteException; import java.util.List; import javax.faces.component.UIComponent; import javax.servlet.http.HttpSession; import org.jdom.Document; import com.idega.builder.bean.AdvancedProperty; import com.idega.business.IBOServiceBean; import com.idega.core.builder.business.BuilderService; import com.idega.core.builder.business.BuilderServiceFactory; import com.idega.core.builder.presentation.ICPropertyHandler; import com.idega.presentation.IWContext; import com.idega.presentation.ui.util.AbstractChooserBlock; import com.idega.repository.data.RefactorClassRegistry; import com.idega.util.CoreConstants; import com.idega.util.CoreUtil; import com.idega.util.StringUtil; public class ChooserServiceBean extends IBOServiceBean implements ChooserService { private static final long serialVersionUID = -6325150611506329083L; private BuilderService service = null; private synchronized BuilderService getBuilderService(IWContext iwc) { if (service == null) { if (iwc == null) { iwc = CoreUtil.getIWContext(); } try { service = BuilderServiceFactory.getBuilderService(iwc); } catch (Exception e) { e.printStackTrace(); } } return service; } public boolean updateHandler(String[] values) { IWContext iwc = CoreUtil.getIWContext(); if (iwc == null) { return false; } HttpSession session = iwc.getSession(); if (session == null) { return false; } Object o = session.getAttribute(CoreConstants.HANDLER_PARAMETER); if (!(o instanceof ICPropertyHandler)) { return true; // No handler assigned } ICPropertyHandler handler = (ICPropertyHandler) o; handler.onUpdate(values, iwc); return true; } public boolean setModuleProperty(String moduleId, String propertyName, List<AdvancedProperty> properties) { if (propertyName == null) { return false; } if (properties == null) { return false; } if (properties.size() == 0) { return false; } IWContext iwc = CoreUtil.getIWContext(); if (iwc == null) { return false; } String pageKey = null; try { pageKey = getBuilderService(iwc).getCurrentPageKey(iwc); } catch (RemoteException e) { e.printStackTrace(); return false; } return getBuilderService(iwc).setProperty(iwc, pageKey, moduleId, propertyName, properties); } public Document getRenderedPresentationObject(String className, String hiddenInputAttribute, String chooserObject, String value, String displayValue, boolean cleanHtml) { Object o = getObjectInstance(className); if (o instanceof AbstractChooserBlock) { AbstractChooserBlock chooser = (AbstractChooserBlock) o; if (!StringUtil.isEmpty(hiddenInputAttribute)) { chooser.setHiddenInputAttribute(hiddenInputAttribute); } if (!StringUtil.isEmpty(chooserObject)) { chooser.setChooserObject(chooserObject); } chooser.setValue(value); return getRenderedPresentationObject(chooser, cleanHtml); } return null; } private Document getRenderedPresentationObject(Object object, boolean cleanHtml) { if (object instanceof UIComponent) { IWContext iwc = CoreUtil.getIWContext(); return getBuilderService(iwc).getRenderedComponent(iwc, (UIComponent) object, cleanHtml); } return null; } private Object getObjectInstance(String className) { if (className == null) { return null; } Class<?> objectClass = null; try { objectClass = RefactorClassRegistry.forName(className); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } Object o = null; try { o = objectClass.newInstance(); } catch (InstantiationException e) { e.printStackTrace(); return null; } catch (IllegalAccessException e) { e.printStackTrace(); return null; } return o; } }