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,176 @@
package net.sf.jasperreports.engine.design;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;
import net.sf.jasperreports.engine.JRExpressionChunk;
import net.sf.jasperreports.engine.base.JRBaseExpression;
import net.sf.jasperreports.engine.design.events.JRChangeEventsSupport;
import net.sf.jasperreports.engine.design.events.JRPropertyChangeSupport;
public class JRDesignExpression extends JRBaseExpression implements JRChangeEventsSupport {
private static final long serialVersionUID = 10200L;
public static final String PROPERTY_TEXT = "text";
public static final String PROPERTY_VALUE_CLASS_NAME = "valueClassName";
protected List chunks = new ArrayList();
private transient JRPropertyChangeSupport eventSupport;
public JRDesignExpression() {
regenerateId();
}
public void setValueClass(Class clazz) {
setValueClassName(clazz.getName());
}
public void setValueClassName(String className) {
Object old = this.valueClassName;
this.valueClassName = className;
this.valueClass = null;
this.valueClassRealName = null;
getEventSupport().firePropertyChange("valueClassName", old, this.valueClassName);
}
public void setId(int id) {
this.id = id;
}
public JRExpressionChunk[] getChunks() {
JRExpressionChunk[] chunkArray = null;
if (this.chunks != null && this.chunks.size() > 0) {
chunkArray = new JRExpressionChunk[this.chunks.size()];
this.chunks.toArray((Object[])chunkArray);
}
return chunkArray;
}
public void setChunks(List chunks) {
this.chunks.clear();
this.chunks.addAll(chunks);
}
public void addChunk(JRDesignExpressionChunk chunk) {
this.chunks.add(chunk);
}
protected void addChunk(byte type, String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType(type);
chunk.setText(text);
this.chunks.add(chunk);
}
public void addTextChunk(String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType((byte)1);
chunk.setText(text);
this.chunks.add(chunk);
}
public void addParameterChunk(String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType((byte)2);
chunk.setText(text);
this.chunks.add(chunk);
}
public void addFieldChunk(String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType((byte)3);
chunk.setText(text);
this.chunks.add(chunk);
}
public void addVariableChunk(String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType((byte)4);
chunk.setText(text);
this.chunks.add(chunk);
}
public void addResourceChunk(String text) {
JRDesignExpressionChunk chunk = new JRDesignExpressionChunk();
chunk.setType((byte)5);
chunk.setText(text);
this.chunks.add(chunk);
}
public void setText(String text) {
Object old = getText();
this.chunks.clear();
if (text != null) {
StringBuffer textChunk = new StringBuffer();
StringTokenizer tkzer = new StringTokenizer(text, "$", true);
int behindDelims = 0;
while (tkzer.hasMoreTokens()) {
String token = tkzer.nextToken();
if (token.equals("$")) {
if (behindDelims > 0)
textChunk.append("$");
behindDelims++;
continue;
}
byte chunkType = 1;
if (behindDelims > 0)
if (token.startsWith("P{")) {
chunkType = 2;
} else if (token.startsWith("F{")) {
chunkType = 3;
} else if (token.startsWith("V{")) {
chunkType = 4;
} else if (token.startsWith("R{")) {
chunkType = 5;
}
if (chunkType == 1) {
if (behindDelims > 0)
textChunk.append("$");
textChunk.append(token);
} else {
int end = token.indexOf('}');
if (end > 0) {
if (behindDelims > 1) {
textChunk.append(token);
} else {
if (textChunk.length() > 0)
addTextChunk(textChunk.toString());
addChunk(chunkType, token.substring(2, end));
textChunk = new StringBuffer(token.substring(end + 1));
}
} else {
if (behindDelims > 0)
textChunk.append("$");
textChunk.append(token);
}
}
behindDelims = 0;
}
if (behindDelims > 0)
textChunk.append("$");
if (textChunk.length() > 0)
addTextChunk(textChunk.toString());
}
getEventSupport().firePropertyChange("text", old, text);
}
public JRPropertyChangeSupport getEventSupport() {
synchronized (this) {
if (this.eventSupport == null)
this.eventSupport = new JRPropertyChangeSupport(this);
}
return this.eventSupport;
}
public Object clone() {
JRDesignExpression clone = (JRDesignExpression)super.clone();
if (this.chunks != null) {
clone.chunks = new ArrayList(this.chunks.size());
for (int i = 0; i < this.chunks.size(); i++)
clone.chunks.add(((JRExpressionChunk)this.chunks.get(i)).clone());
}
return clone;
}
}