first commit
This commit is contained in:
151
hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java
Normal file
151
hrmsEjb/net/sf/jasperreports/engine/JRPropertiesMap.java
Normal file
@@ -0,0 +1,151 @@
|
||||
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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user