Author: adrianc
Date: Sat Nov 1 20:15:27 2014 New Revision: 1636031 URL: http://svn.apache.org/r1636031 Log: Move screen widget artifact info code to a separate class. This eliminates a lot of duplicate code and it should speed up artifact info gathering. Added: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoContext.java ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoGatherer.java Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ScreenWidgetArtifactInfo.java ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ScreenWidgetArtifactInfo.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ScreenWidgetArtifactInfo.java?rev=1636031&r1=1636030&r2=1636031&view=diff ============================================================================== --- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ScreenWidgetArtifactInfo.java (original) +++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/ScreenWidgetArtifactInfo.java Sat Nov 1 20:15:27 2014 @@ -33,6 +33,8 @@ import org.ofbiz.base.util.Debug; import org.ofbiz.base.util.GeneralException; import org.ofbiz.base.util.UtilMisc; import org.ofbiz.base.util.UtilURL; +import org.ofbiz.widget.artifact.ArtifactInfoContext; +import org.ofbiz.widget.artifact.ArtifactInfoGatherer; import org.ofbiz.widget.screen.ModelScreen; import org.xml.sax.SAXException; @@ -71,16 +73,15 @@ public class ScreenWidgetArtifactInfo ex } public void populateAll() throws GeneralException { - this.populateUsedEntities(); - this.populateUsedServices(); - this.populateIncludedForms(); - this.populateLinkedRequests(); - } - protected void populateUsedServices() throws GeneralException { - // populate servicesUsedInThisScreen and for each the reverse-associate cache in the aif - Set<String> allServiceNameSet = this.modelScreen.getAllServiceNamesUsed(); - populateServicesFromNameSet(allServiceNameSet); + ArtifactInfoContext infoContext = new ArtifactInfoContext(); + ArtifactInfoGatherer infoGatherer = new ArtifactInfoGatherer(infoContext); + infoGatherer.visit(this.modelScreen); + populateServicesFromNameSet(infoContext.getServiceNames()); + populateEntitiesFromNameSet(infoContext.getEntityNames()); + populateFormsFromNameSet(infoContext.getFormLocations()); + populateLinkedRequests(infoContext.getRequestLocations()); } + protected void populateServicesFromNameSet(Set<String> allServiceNameSet) throws GeneralException { for (String serviceName: allServiceNameSet) { if (serviceName.contains("${")) { @@ -99,11 +100,7 @@ public class ScreenWidgetArtifactInfo ex UtilMisc.addToSortedSetInMap(this, aif.allScreenInfosReferringToServiceName, serviceName); } } - protected void populateUsedEntities() throws GeneralException { - // populate entitiesUsedInThisScreen and for each the reverse-associate cache in the aif - Set<String> allEntityNameSet = this.modelScreen.getAllEntityNamesUsed(); - populateEntitiesFromNameSet(allEntityNameSet); - } + protected void populateEntitiesFromNameSet(Set<String> allEntityNameSet) throws GeneralException { for (String entityName: allEntityNameSet) { if (entityName.contains("${")) { @@ -122,11 +119,7 @@ public class ScreenWidgetArtifactInfo ex UtilMisc.addToSortedSetInMap(this, aif.allScreenInfosReferringToEntityName, entityName); } } - protected void populateIncludedForms() throws GeneralException { - // populate servicesUsedInThisScreen and for each the reverse-associate cache in the aif - Set<String> allFormNameSet = this.modelScreen.getAllFormNamesIncluded(); - populateFormsFromNameSet(allFormNameSet); - } + protected void populateFormsFromNameSet(Set<String> allFormNameSet) throws GeneralException { for (String formName: allFormNameSet) { if (formName.contains("${")) { @@ -147,8 +140,7 @@ public class ScreenWidgetArtifactInfo ex } } - protected void populateLinkedRequests() throws GeneralException{ - Set<String> allRequestUniqueId = this.modelScreen.getAllRequestsLocationAndUri(); + protected void populateLinkedRequests(Set<String> allRequestUniqueId) throws GeneralException{ for (String requestUniqueId: allRequestUniqueId) { if (requestUniqueId.contains("${")) { Added: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoContext.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoContext.java?rev=1636031&view=auto ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoContext.java (added) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoContext.java Sat Nov 1 20:15:27 2014 @@ -0,0 +1,124 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.widget.artifact; + +import java.util.HashSet; +import java.util.Set; + +/** + * An object used for gathering artifact information. + */ +public final class ArtifactInfoContext { + + private final Set<String> entityNameSet = new HashSet<String>(); + private final Set<String> serviceNameSet = new HashSet<String>(); + private final Set<String> screenLocationSet = new HashSet<String>(); + private final Set<String> formLocationSet = new HashSet<String>(); + private final Set<String> requestLocationSet = new HashSet<String>(); + + /** + * Adds an entity name to this context. + * @param name The entity name to add to this context + */ + public void addEntityName(String name) { + if (name != null) { + this.entityNameSet.add(name); + } + } + + /** + * Adds a form location to this context. + * @param name The form location to add to this context + */ + public void addFormLocation(String name) { + if (name != null) { + this.formLocationSet.add(name); + } + } + + /** + * Adds a request location to this context. + * @param name The request location to add to this context + */ + public void addRequestLocation(String name) { + if (name != null) { + this.requestLocationSet.add(name); + } + } + + /** + * Adds a screen location to this context. + * @param name The screen location to add to this context + */ + public void addScreenLocation(String name) { + if (name != null) { + this.screenLocationSet.add(name); + } + } + + /** + * Adds a service name to this context. + * @param name The service name to add to this context + */ + public void addServiceName(String name) { + if (name != null) { + this.serviceNameSet.add(name); + } + } + + /** + * Returns the entity names in this context. + * @return The entity names in this context + */ + public Set<String> getEntityNames() { + return this.entityNameSet; + } + + /** + * Returns the form locations in this context. + * @return The form locations in this context + */ + public Set<String> getFormLocations() { + return this.formLocationSet; + } + + /** + * Returns the request locations in this context. + * @return The request locations in this context + */ + public Set<String> getRequestLocations() { + return this.requestLocationSet; + } + + /** + * Returns the screen locations in this context. + * @return The screen locations in this context + */ + public Set<String> getScreenLocations() { + return this.screenLocationSet; + } + + /** + * Returns the service names in this context. + * @return The service names in this context + */ + public Set<String> getServiceNames() { + return this.serviceNameSet; + } +} Added: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoGatherer.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoGatherer.java?rev=1636031&view=auto ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoGatherer.java (added) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/artifact/ArtifactInfoGatherer.java Sat Nov 1 20:15:27 2014 @@ -0,0 +1,282 @@ +/******************************************************************************* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + *******************************************************************************/ +package org.ofbiz.widget.artifact; + +import java.util.Set; + +import org.ofbiz.base.util.GeneralException; +import org.ofbiz.webapp.control.ConfigXMLReader; +import org.ofbiz.widget.ModelActionVisitor; +import org.ofbiz.widget.ModelWidgetAction; +import org.ofbiz.widget.ModelWidgetAction.EntityAnd; +import org.ofbiz.widget.ModelWidgetAction.EntityCondition; +import org.ofbiz.widget.ModelWidgetAction.EntityOne; +import org.ofbiz.widget.ModelWidgetAction.GetRelated; +import org.ofbiz.widget.ModelWidgetAction.GetRelatedOne; +import org.ofbiz.widget.ModelWidgetAction.PropertyMap; +import org.ofbiz.widget.ModelWidgetAction.PropertyToField; +import org.ofbiz.widget.ModelWidgetAction.Script; +import org.ofbiz.widget.ModelWidgetAction.Service; +import org.ofbiz.widget.ModelWidgetAction.SetField; +import org.ofbiz.widget.ModelWidgetVisitor; +import org.ofbiz.widget.form.ModelForm; +import org.ofbiz.widget.menu.ModelMenu; +import org.ofbiz.widget.screen.HtmlWidget; +import org.ofbiz.widget.screen.HtmlWidget.HtmlTemplate; +import org.ofbiz.widget.screen.HtmlWidget.HtmlTemplateDecorator; +import org.ofbiz.widget.screen.HtmlWidget.HtmlTemplateDecoratorSection; +import org.ofbiz.widget.screen.IterateSectionWidget; +import org.ofbiz.widget.screen.ModelScreen; +import org.ofbiz.widget.screen.ModelScreenWidget; +import org.ofbiz.widget.screen.ModelScreenWidget.Column; +import org.ofbiz.widget.screen.ModelScreenWidget.ColumnContainer; +import org.ofbiz.widget.screen.ModelScreenWidget.Container; +import org.ofbiz.widget.screen.ModelScreenWidget.Content; +import org.ofbiz.widget.screen.ModelScreenWidget.DecoratorScreen; +import org.ofbiz.widget.screen.ModelScreenWidget.DecoratorSection; +import org.ofbiz.widget.screen.ModelScreenWidget.DecoratorSectionInclude; +import org.ofbiz.widget.screen.ModelScreenWidget.Form; +import org.ofbiz.widget.screen.ModelScreenWidget.HorizontalSeparator; +import org.ofbiz.widget.screen.ModelScreenWidget.Image; +import org.ofbiz.widget.screen.ModelScreenWidget.IncludeScreen; +import org.ofbiz.widget.screen.ModelScreenWidget.Label; +import org.ofbiz.widget.screen.ModelScreenWidget.Link; +import org.ofbiz.widget.screen.ModelScreenWidget.Menu; +import org.ofbiz.widget.screen.ModelScreenWidget.PlatformSpecific; +import org.ofbiz.widget.screen.ModelScreenWidget.PortalPage; +import org.ofbiz.widget.screen.ModelScreenWidget.Screenlet; +import org.ofbiz.widget.screen.ModelScreenWidget.Section; +import org.ofbiz.widget.screen.ModelScreenWidget.Tree; +import org.ofbiz.widget.tree.ModelTree; + +/** + * An object that gathers artifact information from screen widgets. + */ +public final class ArtifactInfoGatherer implements ModelWidgetVisitor, ModelActionVisitor { + + private final ArtifactInfoContext infoContext; + + public ArtifactInfoGatherer(ArtifactInfoContext infoContext) { + this.infoContext = infoContext; + } + + @Override + public void visit(EntityAnd entityAnd) { + infoContext.addEntityName(entityAnd.getFinder().getEntityName()); + } + + @Override + public void visit(EntityCondition entityCondition) { + infoContext.addEntityName(entityCondition.getFinder().getEntityName()); + } + + @Override + public void visit(EntityOne entityOne) { + infoContext.addEntityName(entityOne.getFinder().getEntityName()); + } + + @Override + public void visit(GetRelated getRelated) { + infoContext.addEntityName(getRelated.getRelationName()); + } + + @Override + public void visit(GetRelatedOne getRelatedOne) { + infoContext.addEntityName(getRelatedOne.getRelationName()); + } + + @Override + public void visit(PropertyMap propertyMap) { + } + + @Override + public void visit(PropertyToField propertyToField) { + } + + @Override + public void visit(Script script) { + } + + @Override + public void visit(Service service) { + infoContext.addServiceName(service.getServiceNameExdr().getOriginal()); + } + + @Override + public void visit(SetField setField) { + } + + @Override + public void visit(HtmlWidget htmlWidget) { + } + + @Override + public void visit(HtmlTemplate htmlTemplate) { + } + + @Override + public void visit(HtmlTemplateDecorator htmlTemplateDecorator) { + } + + @Override + public void visit(HtmlTemplateDecoratorSection htmlTemplateDecoratorSection) { + } + + @Override + public void visit(IterateSectionWidget iterateSectionWidget) { + for (Section section : iterateSectionWidget.getSectionList()) { + section.accept(this); + } + } + + @Override + public void visit(ModelForm modelForm) { + } + + @Override + public void visit(ModelMenu modelMenu) { + } + + @Override + public void visit(ModelScreen modelScreen) { + String screenLocation = modelScreen.getSourceLocation().concat("#").concat(modelScreen.getName()); + infoContext.addScreenLocation(screenLocation); + modelScreen.getSection().accept(this);; + } + + @Override + public void visit(ColumnContainer columnContainer) { + for (Column column : columnContainer.getColumns()) { + for (ModelScreenWidget widget : column.getSubWidgets()) { + widget.accept(this); + } + } + } + + @Override + public void visit(Container container) { + for (ModelScreenWidget widget : container.getSubWidgets()) { + widget.accept(this); + } + } + + @Override + public void visit(Content content) { + infoContext.addEntityName("Content"); + if (!content.getDataResourceId().isEmpty()) { + infoContext.addEntityName("DataResource"); + } + } + + @Override + public void visit(DecoratorScreen decoratorScreen) { + for (DecoratorSection section : decoratorScreen.getSectionMap().values()) { + section.accept(this); + } + } + + @Override + public void visit(DecoratorSection decoratorSection) { + for (ModelScreenWidget widget : decoratorSection.getSubWidgets()) { + widget.accept(this); + } + } + + @Override + public void visit(DecoratorSectionInclude decoratorSectionInclude) { + } + + @Override + public void visit(Form form) { + String formLocation = form.getLocation().concat("#").concat(form.getName()); + infoContext.addFormLocation(formLocation); + } + + @Override + public void visit(HorizontalSeparator horizontalSeparator) { + } + + @Override + public void visit(Image image) { + } + + @Override + public void visit(IncludeScreen includeScreen) { + } + + @Override + public void visit(Label label) { + } + + @Override + public void visit(Link link) { + String target = link.getTarget(null); + String urlMode = link.getUrlMode(); + try { + Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode); + if (controllerLocAndRequestSet != null) { + for (String requestLocation : controllerLocAndRequestSet) { + infoContext.addRequestLocation(requestLocation); + } + } + } catch (GeneralException e) { + throw new RuntimeException(e); + } + } + + @Override + public void visit(Menu menu) { + } + + @Override + public void visit(PlatformSpecific platformSpecific) { + } + + @Override + public void visit(PortalPage portalPage) { + } + + @Override + public void visit(Screenlet screenlet) { + for (ModelScreenWidget widget : screenlet.getSubWidgets()) { + widget.accept(this); + } + } + + @Override + public void visit(Section section) { + for (ModelWidgetAction action : section.getActions()) { + action.accept(this); + } + for (ModelScreenWidget subWidget : section.getSubWidgets()) { + subWidget.accept(this); + } + for (ModelScreenWidget subWidget : section.getFailWidgets()) { + subWidget.accept(this); + } + } + + @Override + public void visit(Tree tree) { + } + + @Override + public void visit(ModelTree modelTree) { + } +} Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=1636031&r1=1636030&r2=1636031&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java Sat Nov 1 20:15:27 2014 @@ -105,6 +105,10 @@ public class IterateSectionWidget extend } } + public List<ModelScreenWidget.Section> getSectionList() { + return sectionList; + } + @Override public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) throws GeneralException, IOException { int viewIndex = 0; Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=1636031&r1=1636030&r2=1636031&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java Sat Nov 1 20:15:27 2014 @@ -18,14 +18,9 @@ *******************************************************************************/ package org.ofbiz.widget.screen; -import java.util.Collection; -import java.util.HashSet; -import java.util.List; import java.util.Map; -import java.util.Set; import org.ofbiz.base.util.Debug; -import org.ofbiz.base.util.GeneralException; import org.ofbiz.base.util.UtilGenerics; import org.ofbiz.base.util.UtilValidate; import org.ofbiz.base.util.UtilXml; @@ -35,9 +30,7 @@ import org.ofbiz.entity.GenericEntity; import org.ofbiz.entity.GenericEntityException; import org.ofbiz.entity.transaction.TransactionUtil; import org.ofbiz.service.LocalDispatcher; -import org.ofbiz.webapp.control.ConfigXMLReader; import org.ofbiz.widget.ModelWidget; -import org.ofbiz.widget.ModelWidgetAction; import org.ofbiz.widget.ModelWidgetVisitor; import org.w3c.dom.Element; @@ -54,11 +47,8 @@ public class ModelScreen extends ModelWi private final Map<String, ModelScreen> modelScreenMap; private final boolean useTransaction; private final boolean useCache; - private final ModelScreenWidget.Section section; - // ===== CONSTRUCTORS ===== - /** XML Constructor */ public ModelScreen(Element screenElement, Map<String, ModelScreen> modelScreenMap, String sourceLocation) { super(screenElement); @@ -105,212 +95,6 @@ public class ModelScreen extends ModelWi return sourceLocation; } - public Set<String> getAllServiceNamesUsed() { - Set<String> allServiceNamesUsed = new HashSet<String>(); - findServiceNamesUsedInWidget(this.section, allServiceNamesUsed); - return allServiceNamesUsed; - } - - protected static void findServiceNamesUsedInWidget(ModelScreenWidget currentWidget, Set<String> allServiceNamesUsed) { - if (currentWidget instanceof ModelScreenWidget.Section) { - List<ModelWidgetAction> actions = ((ModelScreenWidget.Section)currentWidget).getActions(); - List<ModelScreenWidget> subWidgets = ((ModelScreenWidget.Section)currentWidget).getSubWidgets(); - List<ModelScreenWidget> failWidgets = ((ModelScreenWidget.Section)currentWidget).getFailWidgets(); - if (actions != null) { - for (ModelWidgetAction screenOperation: actions) { - if (screenOperation instanceof ModelWidgetAction.Service) { - String serviceName = ((ModelWidgetAction.Service) screenOperation).getServiceNameExdr().getOriginal(); - if (UtilValidate.isNotEmpty(serviceName)) allServiceNamesUsed.add(serviceName); - } - } - } - if (subWidgets != null) { - for (ModelScreenWidget widget: subWidgets) { - findServiceNamesUsedInWidget(widget, allServiceNamesUsed); - } - } - if (failWidgets != null) { - for (ModelScreenWidget widget: failWidgets) { - findServiceNamesUsedInWidget(widget, allServiceNamesUsed); - } - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorSection) { - ModelScreenWidget.DecoratorSection decoratorSection = (ModelScreenWidget.DecoratorSection) currentWidget; - for (ModelScreenWidget widget : decoratorSection.getSubWidgets()) { - findServiceNamesUsedInWidget(widget, allServiceNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorScreen) { - ModelScreenWidget.DecoratorScreen decoratorScreen = (ModelScreenWidget.DecoratorScreen) currentWidget; - Collection<ModelScreenWidget.DecoratorSection> sections = decoratorScreen.getSectionMap().values(); - for (ModelScreenWidget section : sections) { - findServiceNamesUsedInWidget(section, allServiceNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.Container) { - ModelScreenWidget.Container container = (ModelScreenWidget.Container) currentWidget; - for (ModelScreenWidget widget : container.getSubWidgets()) { - findServiceNamesUsedInWidget(widget, allServiceNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.Screenlet) { - ModelScreenWidget.Screenlet screenlet = (ModelScreenWidget.Screenlet) currentWidget; - for (ModelScreenWidget widget : screenlet.getSubWidgets()) { - findServiceNamesUsedInWidget(widget, allServiceNamesUsed); - } - } - } - public Set<String> getAllEntityNamesUsed() { - Set<String> allEntityNamesUsed = new HashSet<String>(); - findEntityNamesUsedInWidget(this.section, allEntityNamesUsed); - return allEntityNamesUsed; - } - protected static void findEntityNamesUsedInWidget(ModelScreenWidget currentWidget, Set<String> allEntityNamesUsed) { - if (currentWidget instanceof ModelScreenWidget.Section) { - List<ModelWidgetAction> actions = ((ModelScreenWidget.Section)currentWidget).getActions(); - List<ModelScreenWidget> subWidgets = ((ModelScreenWidget.Section)currentWidget).getSubWidgets(); - List<ModelScreenWidget> failWidgets = ((ModelScreenWidget.Section)currentWidget).getFailWidgets(); - if (actions != null) { - for (ModelWidgetAction screenOperation: actions) { - if (screenOperation instanceof ModelWidgetAction.EntityOne) { - String entName = ((ModelWidgetAction.EntityOne) screenOperation).getFinder().getEntityName(); - if (UtilValidate.isNotEmpty(entName)) allEntityNamesUsed.add(entName); - } else if (screenOperation instanceof ModelWidgetAction.EntityAnd) { - String entName = ((ModelWidgetAction.EntityAnd) screenOperation).getFinder().getEntityName(); - if (UtilValidate.isNotEmpty(entName)) allEntityNamesUsed.add(entName); - } else if (screenOperation instanceof ModelWidgetAction.EntityCondition) { - String entName = ((ModelWidgetAction.EntityCondition) screenOperation).getFinder().getEntityName(); - if (UtilValidate.isNotEmpty(entName)) allEntityNamesUsed.add(entName); - } else if (screenOperation instanceof ModelWidgetAction.GetRelated) { - String relationName = ((ModelWidgetAction.GetRelated) screenOperation).getRelationName(); - if (UtilValidate.isNotEmpty(relationName)) allEntityNamesUsed.add(relationName); - } else if (screenOperation instanceof ModelWidgetAction.GetRelatedOne) { - String relationName = ((ModelWidgetAction.GetRelatedOne) screenOperation).getRelationName(); - if (UtilValidate.isNotEmpty(relationName)) allEntityNamesUsed.add(relationName); - } - } - } - if (subWidgets != null) { - for (ModelScreenWidget widget: subWidgets) { - findEntityNamesUsedInWidget(widget, allEntityNamesUsed); - } - } - if (failWidgets != null) { - for (ModelScreenWidget widget: failWidgets) { - findEntityNamesUsedInWidget(widget, allEntityNamesUsed); - } - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorSection) { - ModelScreenWidget.DecoratorSection decoratorSection = (ModelScreenWidget.DecoratorSection) currentWidget; - for (ModelScreenWidget widget : decoratorSection.getSubWidgets()) { - findEntityNamesUsedInWidget(widget, allEntityNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorScreen) { - ModelScreenWidget.DecoratorScreen decoratorScreen = (ModelScreenWidget.DecoratorScreen) currentWidget; - Collection<ModelScreenWidget.DecoratorSection> sections = decoratorScreen.getSectionMap().values(); - for (ModelScreenWidget section : sections) { - findEntityNamesUsedInWidget(section, allEntityNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.Container) { - ModelScreenWidget.Container container = (ModelScreenWidget.Container) currentWidget; - for (ModelScreenWidget widget : container.getSubWidgets()) { - findEntityNamesUsedInWidget(widget, allEntityNamesUsed); - } - } else if (currentWidget instanceof ModelScreenWidget.Screenlet) { - ModelScreenWidget.Screenlet screenlet = (ModelScreenWidget.Screenlet) currentWidget; - for (ModelScreenWidget widget : screenlet.getSubWidgets()) { - findEntityNamesUsedInWidget(widget, allEntityNamesUsed); - } - } - } - - public Set<String> getAllFormNamesIncluded() { - Set<String> allFormNamesIncluded = new HashSet<String>(); - findFormNamesIncludedInWidget(this.section, allFormNamesIncluded); - return allFormNamesIncluded; - } - - protected static void findFormNamesIncludedInWidget(ModelScreenWidget currentWidget, Set<String> allFormNamesIncluded) { - if (currentWidget instanceof ModelScreenWidget.Form) { - ModelScreenWidget.Form form = (ModelScreenWidget.Form) currentWidget; - allFormNamesIncluded.add(form.getLocation() + "#" + form.getName()); - } else if (currentWidget instanceof ModelScreenWidget.Section) { - ModelScreenWidget.Section section = (ModelScreenWidget.Section) currentWidget; - for (ModelScreenWidget widget : section.getSubWidgets()) { - findFormNamesIncludedInWidget(widget, allFormNamesIncluded); - } - for (ModelScreenWidget widget : section.getFailWidgets()) { - findFormNamesIncludedInWidget(widget, allFormNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorSection) { - ModelScreenWidget.DecoratorSection decoratorSection = (ModelScreenWidget.DecoratorSection) currentWidget; - for (ModelScreenWidget widget : decoratorSection.getSubWidgets()) { - findFormNamesIncludedInWidget(widget, allFormNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorScreen) { - ModelScreenWidget.DecoratorScreen decoratorScreen = (ModelScreenWidget.DecoratorScreen) currentWidget; - Collection<ModelScreenWidget.DecoratorSection> sections = decoratorScreen.getSectionMap().values(); - for (ModelScreenWidget section : sections) { - findFormNamesIncludedInWidget(section, allFormNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.Container) { - ModelScreenWidget.Container container = (ModelScreenWidget.Container) currentWidget; - for (ModelScreenWidget widget : container.getSubWidgets()) { - findFormNamesIncludedInWidget(widget, allFormNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.Screenlet) { - ModelScreenWidget.Screenlet screenlet = (ModelScreenWidget.Screenlet) currentWidget; - for (ModelScreenWidget widget : screenlet.getSubWidgets()) { - findFormNamesIncludedInWidget(widget, allFormNamesIncluded); - } - } - } - - public Set<String> getAllRequestsLocationAndUri() throws GeneralException { - Set<String> allRequestNamesIncluded = new HashSet<String>(); - findRequestNamesLinkedtoInWidget(this.section, allRequestNamesIncluded); - return allRequestNamesIncluded; - } - protected static void findRequestNamesLinkedtoInWidget(ModelScreenWidget currentWidget, Set<String> allRequestNamesIncluded) throws GeneralException { - if (currentWidget instanceof ModelScreenWidget.Link) { - ModelScreenWidget.Link link = (ModelScreenWidget.Link) currentWidget; - String target = link.getTarget(null); - String urlMode = link.getUrlMode(); - // Debug.logInfo("In findRequestNamesLinkedtoInWidget found link [" + link.rawString() + "] with target [" + target + "]", module); - - Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode); - if (controllerLocAndRequestSet == null) return; - allRequestNamesIncluded.addAll(controllerLocAndRequestSet); - } else if (currentWidget instanceof ModelScreenWidget.Section) { - ModelScreenWidget.Section section = (ModelScreenWidget.Section) currentWidget; - for (ModelScreenWidget widget : section.getSubWidgets()) { - findRequestNamesLinkedtoInWidget(widget, allRequestNamesIncluded); - } - for (ModelScreenWidget widget : section.getFailWidgets()) { - findRequestNamesLinkedtoInWidget(widget, allRequestNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorSection) { - ModelScreenWidget.DecoratorSection decoratorSection = (ModelScreenWidget.DecoratorSection) currentWidget; - for (ModelScreenWidget widget : decoratorSection.getSubWidgets()) { - findRequestNamesLinkedtoInWidget(widget, allRequestNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.DecoratorScreen) { - ModelScreenWidget.DecoratorScreen decoratorScreen = (ModelScreenWidget.DecoratorScreen) currentWidget; - Collection<ModelScreenWidget.DecoratorSection> sections = decoratorScreen.getSectionMap().values(); - for (ModelScreenWidget section : sections) { - findRequestNamesLinkedtoInWidget(section, allRequestNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.Container) { - ModelScreenWidget.Container container = (ModelScreenWidget.Container) currentWidget; - for (ModelScreenWidget widget : container.getSubWidgets()) { - findRequestNamesLinkedtoInWidget(widget, allRequestNamesIncluded); - } - } else if (currentWidget instanceof ModelScreenWidget.Screenlet) { - ModelScreenWidget.Screenlet screenlet = (ModelScreenWidget.Screenlet) currentWidget; - for (ModelScreenWidget widget : screenlet.getSubWidgets()) { - findRequestNamesLinkedtoInWidget(widget, allRequestNamesIncluded); - } - } - } - - /** * Renders this screen to a String, i.e. in a text format, as defined with the * ScreenStringRenderer implementation. Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?rev=1636031&r1=1636030&r2=1636031&view=diff ============================================================================== --- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java (original) +++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java Sat Nov 1 20:15:27 2014 @@ -1210,6 +1210,10 @@ public abstract class ModelScreenWidget return this.contentId.expandString(context); } + public String getDataResourceId() { + return this.dataResourceId.getOriginal(); + } + public String getDataResourceId(Map<String, Object> context) { return this.dataResourceId.expandString(context); } |
Free forum by Nabble | Edit this page |