package com.idega.builder; import java.util.Collection; import java.util.Iterator; import java.util.logging.Logger; import javax.ejb.FinderException; import com.idega.builder.business.ComponentPropertyHandler; import com.idega.builder.business.IBMainServiceBean; import com.idega.builder.business.IBPropertyHandler; import com.idega.builder.business.PageUrl; import com.idega.builder.data.IBDomainBMPBean; import com.idega.builder.data.IBPageBMPBean; import com.idega.builder.dynamicpagetrigger.data.DynamicPageTrigger; import com.idega.builder.presentation.InvisibleInBuilder; import com.idega.builder.view.BuilderRootViewNode; import com.idega.business.IBOLookup; import com.idega.core.builder.business.BuilderService; import com.idega.core.builder.data.ICDomain; import com.idega.core.builder.data.ICDynamicPageTrigger; import com.idega.core.builder.data.ICPage; import com.idega.core.builder.data.ICPageHome; import com.idega.core.view.KeyboardShortcut; import com.idega.core.view.ViewManager; import com.idega.data.IDOLookup; import com.idega.data.IDOLookupException; import com.idega.idegaweb.IWBundle; import com.idega.idegaweb.IWBundleStartable; import com.idega.idegaweb.IWMainApplication; import com.idega.presentation.Applet; import com.idega.presentation.GenericPlugin; import com.idega.presentation.ui.DropdownMenu; import com.idega.repository.data.ImplementorRepository; import com.idega.repository.data.SingletonRepository; /** * <p>Title: idegaWeb</p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: idega Software</p> * @author <a href="thomas@idega.is">Thomas Hilbig</a> * @version 1.0 * Created on Jun 10, 2004 */ public class IWBundleStarter implements IWBundleStartable { static Logger log = Logger.getLogger(IWBundleStarter.class.getName()); public void start(IWBundle starterBundle) { // implementors ImplementorRepository repository = ImplementorRepository.getInstance(); repository.addImplementor(InvisibleInBuilder.class, Applet.class); repository.addImplementor(InvisibleInBuilder.class, GenericPlugin.class); repository.addImplementor(InvisibleInBuilder.class, DropdownMenu.class); repository.addImplementor(ICDynamicPageTrigger.class, DynamicPageTrigger.class); // services registration IBOLookup.registerImplementationForBean(ICDomain.class, IBDomainBMPBean.class); IBOLookup.registerImplementationForBean(ICPage.class, IBPageBMPBean.class); IBOLookup.registerImplementationForBean(BuilderService.class, IBMainServiceBean.class); //Registering the views: //This is the way it should be but doesn't work because of the startTemporaryBundleStarers() method in IWMainApplicationStarter if(starterBundle!=null){ IWMainApplication iwma = starterBundle.getApplication(); //IWMainApplication iwma = IWMainApplication.getDefaultIWMainApplication(); ViewManager viewManager = ViewManager.getInstance(iwma); BuilderRootViewNode pagesViewNode = new BuilderRootViewNode("pages",viewManager.getApplicationRoot()); pagesViewNode.setKeyboardShortcut(new KeyboardShortcut("p")); } updateBuilderPageUris(); } /** * This method updates the ib_page table with creating a generated URI for all pages that had it set null. */ private void updateBuilderPageUris() { try { ICPageHome pHome = (ICPageHome)IDOLookup.getHome(ICPage.class); Collection pages = pHome.findAllPagesWithoutUri(); int domainId=-1; for (Iterator iter = pages.iterator(); iter.hasNext();) { ICPage page = (ICPage) iter.next(); //TODO: implemennt support for domainId: try{ PageUrl newUrl = new PageUrl(page,domainId); String newGeneratedUri = newUrl.getGeneratedUrlFromName(); page.setDefaultPageURI(newGeneratedUri); log.info("Updating Builder Page with uri="+newGeneratedUri); page.store(); } catch(Exception e){ log.throwing("IWBundleStarter","updateBuilderPageUris",e); } } } catch (IDOLookupException e) { } catch (FinderException e) { log.throwing("IWBundleStarter","updateBuilderPageUris",e); } } public void stop(IWBundle starterBundle) { SingletonRepository repository = SingletonRepository.getRepository(); repository.unloadInstance(ComponentPropertyHandler.class); repository.unloadInstance(IBPropertyHandler.class); } }