1 /** 2 * Copyright 2005-2014 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.krad.uif.lifecycle.model; 17 18 import org.apache.commons.lang.StringUtils; 19 import org.kuali.rice.krad.uif.component.Component; 20 import org.kuali.rice.krad.uif.lifecycle.ViewLifecyclePhase; 21 import org.kuali.rice.krad.uif.lifecycle.ViewLifecycleTaskBase; 22 import org.kuali.rice.krad.uif.util.ComponentUtils; 23 24 /** 25 * Adjusts the id for elements that are within a component configured with a suffix to apply for 26 * all children (such as components that are within a collection line). 27 * 28 * @author Kuali Rice Team (rice.collab@kuali.org) 29 */ 30 public class SuffixIdFromContainerTask extends ViewLifecycleTaskBase<Component> { 31 32 /** 33 * Constructor. 34 * 35 * @param phase The apply model phase for the component. 36 */ 37 public SuffixIdFromContainerTask(ViewLifecyclePhase phase) { 38 super(phase, Component.class); 39 } 40 41 /** 42 * Pulls the container id suffix from the parent component and updates the id on the given element, 43 * then sets the container id suffix on the component so the suffixing will apply to all its children. 44 * 45 * {@inheritDoc} 46 */ 47 @Override 48 protected void performLifecycleTask() { 49 Component component = (Component) getElementState().getElement(); 50 ViewLifecyclePhase phase = (ViewLifecyclePhase) getElementState(); 51 52 String containerIdSuffix = phase.getParent().getContainerIdSuffix(); 53 54 ComponentUtils.updateIdWithSuffix(component, containerIdSuffix); 55 56 // container suffixes should concatenate if multiple are found within a node 57 if (StringUtils.isNotBlank(component.getContainerIdSuffix())) { 58 containerIdSuffix = component.getContainerIdSuffix() + containerIdSuffix; 59 } 60 61 component.setContainerIdSuffix(containerIdSuffix); 62 } 63 64 }