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

152 lines
4.3 KiB
Java

package net.sf.jasperreports.engine;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
public class JRPropertiesMap implements Serializable, Cloneable {
private static final long serialVersionUID = 10200L;
private Map propertiesMap;
private List propertiesList;
private JRPropertiesMap base;
public JRPropertiesMap() {}
public JRPropertiesMap(JRPropertiesMap propertiesMap) {
this();
this.base = propertiesMap.base;
String[] propertyNames = propertiesMap.getPropertyNames();
if (propertyNames != null && propertyNames.length > 0)
for (int i = 0; i < propertyNames.length; i++)
setProperty(propertyNames[i], propertiesMap.getProperty(propertyNames[i]));
}
protected synchronized void ensureInit() {
if (this.propertiesMap == null)
init();
}
private void init() {
this.propertiesMap = new HashMap();
this.propertiesList = new ArrayList();
}
public String[] getPropertyNames() {
String[] names;
if (hasOwnProperties()) {
if (this.base == null) {
names = (String[])this.propertiesList.toArray((Object[])new String[this.propertiesList.size()]);
} else {
LinkedHashSet namesSet = new LinkedHashSet();
collectPropertyNames(namesSet);
names = (String[])namesSet.toArray((Object[])new String[namesSet.size()]);
}
} else if (this.base != null) {
names = this.base.getPropertyNames();
} else {
names = new String[0];
}
return names;
}
protected void collectPropertyNames(Collection names) {
if (this.base != null)
this.base.collectPropertyNames(names);
if (this.propertiesList != null)
names.addAll(this.propertiesList);
}
public String getProperty(String propName) {
String val;
if (hasOwnProperty(propName)) {
val = getOwnProperty(propName);
} else if (this.base != null) {
val = this.base.getProperty(propName);
} else {
val = null;
}
return val;
}
public boolean containsProperty(String propName) {
return (hasOwnProperty(propName) || (this.base != null && this.base.containsProperty(propName)));
}
protected boolean hasOwnProperty(String propName) {
return (this.propertiesMap != null && this.propertiesMap.containsKey(propName));
}
protected String getOwnProperty(String propName) {
return (this.propertiesMap != null) ? (String)this.propertiesMap.get(propName) : null;
}
public void setProperty(String propName, String value) {
ensureInit();
if (!hasOwnProperty(propName))
this.propertiesList.add(propName);
this.propertiesMap.put(propName, value);
}
public void removeProperty(String propName) {
if (hasOwnProperty(propName)) {
this.propertiesList.remove(propName);
this.propertiesMap.remove(propName);
}
}
public JRPropertiesMap cloneProperties() {
return new JRPropertiesMap(this);
}
public Object clone() {
return cloneProperties();
}
public String toString() {
return (this.propertiesMap == null) ? "" : this.propertiesMap.toString();
}
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
if (this.propertiesList == null && this.propertiesMap != null) {
this.propertiesList = new ArrayList(this.propertiesMap.keySet());
this.propertiesMap = new HashMap(this.propertiesMap);
}
}
public boolean hasProperties() {
return (hasOwnProperties() || (this.base != null && this.base.hasProperties()));
}
public boolean hasOwnProperties() {
return (this.propertiesList != null && !this.propertiesList.isEmpty());
}
public static JRPropertiesMap getPropertiesClone(JRPropertiesHolder propertiesHolder) {
JRPropertiesMap clone;
if (propertiesHolder.hasProperties()) {
clone = propertiesHolder.getPropertiesMap().cloneProperties();
} else {
clone = null;
}
return clone;
}
public JRPropertiesMap getBaseProperties() {
return this.base;
}
public void setBaseProperties(JRPropertiesMap base) {
this.base = base;
}
}