From: Anjo K. <an...@us...> - 2007-05-31 13:35:57
|
Update of /cvsroot/wonder/Wonder/Common/Frameworks/ERDirectToWeb/Sources/er/directtoweb In directory sc8-pr-cvs9.sourceforge.net:/tmp/cvs-serv26044/Sources/er/directtoweb Modified Files: ERD2WPage.java Added Files: ERD2WPageRunner.java Log Message: added page runner combined keys now highlight correctly --- NEW FILE: ERD2WPageRunner.java --- package er.directtoweb; import java.util.Enumeration; import org.apache.log4j.Logger; import com.webobjects.appserver.WOComponent; import com.webobjects.appserver.WOContext; import com.webobjects.appserver.WOResponse; import com.webobjects.directtoweb.ConfirmPageInterface; import com.webobjects.directtoweb.D2W; import com.webobjects.directtoweb.InspectPageInterface; import com.webobjects.directtoweb.ListPageInterface; import com.webobjects.directtoweb.QueryPageInterface; import com.webobjects.directtoweb.SelectPageInterface; import com.webobjects.eoaccess.EOUtilities; import com.webobjects.eocontrol.EOEditingContext; import com.webobjects.foundation.NSArray; import er.extensions.ERXEC; import er.extensions.ERXEOControlUtilities; import er.extensions.ERXExtensions; import er.extensions.ERXSession; import er.extensions.ERXWOContext; /** * Runs through an array of given page configurations and renders them. * Basically, you run through your app manually to collect all the page configurations. Doing to * will collect all page configs in ERD2WPage.allConfigurationNames(). * Then you save the array somewhere and later run through all pages with this class. * This is pretty useful in conjunction when localizing, as you get create all the keys that get touched. * Also, you can do simple tests with a scheme similar to this one. It's not totally correct, * as your pages need not map one-to-one to your pages, but for me it works pretty well. * * @author ak * */ public class ERD2WPageRunner { private NSArray _pages; private static final Logger log = Logger.getLogger(ERD2WPageRunner.class); public ERD2WPageRunner(NSArray pages) { _pages = pages; } public void createPages() { ERXSession session = ERXExtensions.session(); // session = (ERXSession)context.session(); for (Enumeration pages = _pages.objectEnumerator(); pages.hasMoreElements();) { String pageName = (String) pages.nextElement(); WOContext context = ERXWOContext.newContext(); session._awakeInContext(context); try { EOEditingContext ec = ERXEC.newEditingContext(); ec.lock(); try { log.info("Creating page: " + pageName); WOComponent page = D2W.factory().pageForConfigurationNamed(pageName, session); context._setPageElement(page); context._setCurrentComponent(page); String task = ERD2WFactory.taskFromPage(page); String entityName = ERD2WFactory.entityNameFromPage(page); if (page instanceof InspectPageInterface) { InspectPageInterface ipi = (InspectPageInterface) page; ipi.setObject(EOUtilities.createAndInsertInstance(ec, entityName)); ipi.setNextPage(page); } else if (page instanceof ListPageInterface) { ListPageInterface lpi = (ListPageInterface) page; lpi.setDataSource(ERXEOControlUtilities.dataSourceForArray(ec, entityName, new NSArray(EOUtilities.createAndInsertInstance(ec, entityName)))); lpi.setNextPage(page); } else if (page instanceof SelectPageInterface) { SelectPageInterface lpi = (SelectPageInterface) page; lpi.setDataSource(ERXEOControlUtilities.dataSourceForArray(ec, entityName, new NSArray(EOUtilities.createAndInsertInstance(ec, entityName)))); } else if (page instanceof ConfirmPageInterface) { ConfirmPageInterface cpi = (ConfirmPageInterface) page; // nothing } else if (page instanceof QueryPageInterface) { QueryPageInterface qpi = (QueryPageInterface) page; // nothing } else { log.info("Unsupported: " + pageName + " -> " + page.name()); } page.appendToResponse(new WOResponse(), context); } finally { ec.unlock(); } } catch(Throwable t) { log.error("Error running: " + pageName + ":" + t.getMessage() + " Tree: " + ERXWOContext.componentPath(context)); } finally { session._sleepInContext(context); } } } } Index: ERD2WPage.java =================================================================== RCS file: /cvsroot/wonder/Wonder/Common/Frameworks/ERDirectToWeb/Sources/er/directtoweb/ERD2WPage.java,v retrieving revision 1.62 retrieving revision 1.63 diff -C2 -d -r1.62 -r1.63 *** ERD2WPage.java 28 May 2007 13:12:45 -0000 1.62 --- ERD2WPage.java 31 May 2007 13:35:32 -0000 1.63 *************** *** 32,36 **** import com.webobjects.foundation.NSMutableDictionary; import com.webobjects.foundation.NSMutableSet; - import com.webobjects.foundation.NSSet; import com.webobjects.foundation.NSTimestamp; --- 32,35 ---- *************** *** 405,408 **** --- 404,411 ---- } } + if("saveChangesExceptionKey".equals(keyPath) && erv.propertyKey() != null) { + // AK: this is for combined keys like company,taxIdentifier + keyPathsWithValidationExceptions.addObjectsFromArray(NSArray.componentsSeparatedByString( erv.propertyKey(), ",")); + } } else { _temp.removeAllObjects(); *************** *** 562,568 **** * @return */ ! public static NSSet allConfigurationNames() { synchronized (_allConfigurations) { ! return _allConfigurations.immutableClone(); } } --- 565,571 ---- * @return */ ! public static NSArray allConfigurationNames() { synchronized (_allConfigurations) { ! return _allConfigurations.allObjects(); } } *************** *** 573,577 **** */ public void appendToResponse(WOResponse r, WOContext c) { ! NDC.push("Page: " + getClass().getName() + (d2wContext() != null ? (" - Configuration: " + d2wContext().valueForKey(Keys.pageConfiguration)) : "")); if (d2wContext() != null && !WOApplication.application().isCachingEnabled()) { synchronized (_allConfigurations) { --- 576,582 ---- */ public void appendToResponse(WOResponse r, WOContext c) { ! String info = "(" + d2wContext().dynamicPage() + ")"; ! // String info = "(" + getClass().getName() + (d2wContext() != null ? ("/" + d2wContext().valueForKey(Keys.pageConfiguration)) : "") + ")"; ! NDC.push(info); if (d2wContext() != null && !WOApplication.application().isCachingEnabled()) { synchronized (_allConfigurations) { *************** *** 579,582 **** --- 584,588 ---- _allConfigurations.addObject(d2wContext().dynamicPage()); } + // log.info("" + NSPropertyListSerialization.stringFromPropertyList(_allConfigurations)); } } |