first commit

This commit is contained in:
2025-07-28 13:56:49 +05:30
commit e9eb805edb
3438 changed files with 520990 additions and 0 deletions

View File

@@ -0,0 +1,143 @@
package net.sf.jasperreports.engine.fill;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.sf.jasperreports.engine.JRChild;
import net.sf.jasperreports.engine.JRElement;
import net.sf.jasperreports.engine.JRElementGroup;
import net.sf.jasperreports.engine.JRVisitable;
import net.sf.jasperreports.engine.JRVisitor;
public class JRFillElementGroup implements JRElementGroup, JRFillCloneable {
protected List children = new ArrayList();
protected JRElementGroup elementGroup = null;
protected JRFillElement[] elements = null;
private JRElement topElementInGroup = null;
private JRElement bottomElementInGroup = null;
private int stretchHeightDiff = 0;
protected JRFillElementGroup(JRElementGroup elementGrp, JRFillObjectFactory factory) {
factory.put(elementGrp, this);
if (elementGrp != null) {
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);
}
getElements();
this.elementGroup = (JRElementGroup)factory.getVisitResult((JRVisitable)elementGrp.getElementGroup());
}
}
protected JRFillElementGroup(JRFillElementGroup elementGrp, JRFillCloneFactory factory) {
factory.put(elementGrp, this);
List list = elementGrp.getChildren();
if (list != null)
for (int i = 0; i < list.size(); i++) {
JRFillCloneable child = list.get(i);
JRFillCloneable clone = child.createClone(factory);
this.children.add(clone);
}
getElements();
this.elementGroup = (JRFillElementGroup)factory.getClone((JRFillElementGroup)elementGrp.getElementGroup());
}
public List getChildren() {
return this.children;
}
public JRElementGroup getElementGroup() {
return this.elementGroup;
}
public JRElement[] getElements() {
if (this.elements == null)
if (this.children != null) {
List allElements = new ArrayList();
Object child = null;
JRElement[] childElementArray = null;
for (int i = 0; i < this.children.size(); i++) {
child = this.children.get(i);
if (child instanceof JRFillElement) {
allElements.add(child);
} else if (child instanceof JRFillElementGroup) {
childElementArray = ((JRFillElementGroup)child).getElements();
if (childElementArray != null)
allElements.addAll(Arrays.asList((Object[])childElementArray));
}
}
this.elements = new JRFillElement[allElements.size()];
allElements.toArray(this.elements);
}
return (JRElement[])this.elements;
}
public JRElement getElementByKey(String key) {
return null;
}
protected void reset() {
this.topElementInGroup = null;
}
protected int getStretchHeightDiff() {
if (this.topElementInGroup == null) {
this.stretchHeightDiff = 0;
setTopBottomElements();
JRElement[] allElements = getElements();
if (allElements != null && allElements.length > 0) {
JRFillElement topElem = null;
JRFillElement bottomElem = null;
for (int i = 0; i < allElements.length; i++) {
JRFillElement element = (JRFillElement)allElements[i];
if (element.isToPrint()) {
if (topElem == null || (topElem != null && element.getRelativeY() + element.getStretchHeight() < topElem.getRelativeY() + topElem.getStretchHeight()))
topElem = element;
if (bottomElem == null || (bottomElem != null && element.getRelativeY() + element.getStretchHeight() > bottomElem.getRelativeY() + bottomElem.getStretchHeight()))
bottomElem = element;
}
}
if (topElem != null)
this.stretchHeightDiff = bottomElem.getRelativeY() + bottomElem.getStretchHeight() - topElem.getRelativeY() - this.bottomElementInGroup.getY() + this.bottomElementInGroup.getHeight() - this.topElementInGroup.getY();
if (this.stretchHeightDiff < 0)
this.stretchHeightDiff = 0;
}
}
return this.stretchHeightDiff;
}
private void setTopBottomElements() {
JRElement[] allElements = getElements();
if (allElements != null && allElements.length > 0)
for (int i = 0; i < allElements.length; i++) {
if (this.topElementInGroup == null || (this.topElementInGroup != null && allElements[i].getY() + allElements[i].getHeight() < this.topElementInGroup.getY() + this.topElementInGroup.getHeight()))
this.topElementInGroup = allElements[i];
if (this.bottomElementInGroup == null || (this.bottomElementInGroup != null && allElements[i].getY() + allElements[i].getHeight() > this.bottomElementInGroup.getY() + this.bottomElementInGroup.getHeight()))
this.bottomElementInGroup = allElements[i];
}
}
public void visit(JRVisitor visitor) {
visitor.visitElementGroup(this);
}
public JRFillCloneable createClone(JRFillCloneFactory factory) {
return new JRFillElementGroup(this, factory);
}
public Object clone() {
return null;
}
public Object clone(JRElementGroup parentGroup) {
return null;
}
}