Files
HRMS/hrmsEjb/net/sf/jasperreports/engine/base/JRBaseElementGroup.java
2025-07-28 13:56:49 +05:30

120 lines
3.7 KiB
Java

package net.sf.jasperreports.engine.base;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sf.jasperreports.crosstabs.JRCrosstab;
import net.sf.jasperreports.engine.JRChild;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.JRElementGroup;
import net.sf.jasperreports.engine.JRFrame;
import net.sf.jasperreports.engine.JRRuntimeException;
import net.sf.jasperreports.engine.JRVisitable;
import net.sf.jasperreports.engine.JRVisitor;
public class JRBaseElementGroup implements JRElementGroup, Serializable {
private static final long serialVersionUID = 10200L;
protected List children = new ArrayList();
protected JRElementGroup elementGroup = null;
protected JRBaseElementGroup() {}
protected JRBaseElementGroup(JRElementGroup elementGrp, JRBaseObjectFactory factory) {
factory.put(elementGrp, this);
List list = elementGrp.getChildren();
if (list != null && list.size() > 0)
for (int i = 0; i < list.size(); i++) {
JRChild child = list.get(i);
child = (JRChild)factory.getVisitResult((JRVisitable)child);
this.children.add(child);
}
this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)elementGrp.getElementGroup());
}
public List getChildren() {
return this.children;
}
public JRElementGroup getElementGroup() {
return this.elementGroup;
}
public static JRElement[] getElements(List children) {
JRElement[] elements = null;
if (children != null) {
List allElements = new ArrayList();
Object child = null;
JRElement[] childElementArray = null;
for (int i = 0; i < children.size(); i++) {
child = children.get(i);
if (child instanceof JRElement) {
allElements.add(child);
} else if (child instanceof JRElementGroup) {
childElementArray = ((JRElementGroup)child).getElements();
if (childElementArray != null)
allElements.addAll(Arrays.asList((Object[])childElementArray));
}
}
elements = new JRElement[allElements.size()];
allElements.toArray(elements);
}
return elements;
}
public JRElement[] getElements() {
return getElements(this.children);
}
public static JRElement getElementByKey(JRElement[] elements, String key) {
JRElement element = null;
if (key != null)
if (elements != null) {
int i = 0;
while (element == null && i < elements.length) {
JRElement elem = elements[i];
if (key.equals(elem.getKey())) {
element = elem;
} else if (elem instanceof JRFrame) {
element = ((JRFrame)elem).getElementByKey(key);
} else if (elem instanceof JRCrosstab) {
element = ((JRCrosstab)elem).getElementByKey(key);
}
i++;
}
}
return element;
}
public JRElement getElementByKey(String key) {
return getElementByKey(getElements(), key);
}
public void visit(JRVisitor visitor) {
visitor.visitElementGroup(this);
}
public Object clone() {
JRBaseElementGroup clone = null;
try {
clone = (JRBaseElementGroup)super.clone();
} catch (CloneNotSupportedException e) {
throw new JRRuntimeException(e);
}
if (this.children != null) {
clone.children = new ArrayList(this.children.size());
for (int i = 0; i < this.children.size(); i++)
clone.children.add(((JRChild)this.children.get(i)).clone(clone));
}
return clone;
}
public Object clone(JRElementGroup parentGroup) {
JRBaseElementGroup clone = (JRBaseElementGroup)clone();
clone.elementGroup = parentGroup;
return clone;
}
}