use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.
the class DOMOutputCapsule method writeStringSavableMap.
@Override
public void writeStringSavableMap(Map<String, ? extends Savable> map, String name, Map<String, ? extends Savable> defVal) throws IOException {
if (map == null) {
return;
}
if (map.equals(defVal)) {
return;
}
Element stringMap = appendElement(name);
Iterator<String> keyIterator = map.keySet().iterator();
while (keyIterator.hasNext()) {
String key = keyIterator.next();
Element mapEntry = appendElement("MapEntry");
mapEntry.setAttribute("key", key);
Savable s = map.get(key);
write(s, "Savable", null);
currentElement = stringMap;
}
currentElement = (Element) stringMap.getParentNode();
}
use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.
the class DOMOutputCapsule method write.
@Override
public void write(Savable[][] value, String name, Savable[][] defVal) throws IOException {
if (value == null)
return;
if (Arrays.deepEquals(value, defVal))
return;
Element el = appendElement(name);
el.setAttribute("size_outer", String.valueOf(value.length));
el.setAttribute("size_inner", String.valueOf(value[0].length));
for (Savable[] bs : value) {
for (Savable b : bs) {
write(b, b.getClass().getSimpleName(), null);
}
}
currentElement = (Element) currentElement.getParentNode();
}
use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.
the class DOMInputCapsule method readSavable.
public Savable readSavable(String name, Savable defVal) throws IOException {
Savable ret = defVal;
if (name != null && name.equals(""))
logger.warning("Reading Savable String with name \"\"?");
try {
Element tmpEl = null;
if (name != null) {
tmpEl = findChildElement(currentElem, name);
if (tmpEl == null) {
return defVal;
}
} else if (isAtRoot) {
tmpEl = doc.getDocumentElement();
isAtRoot = false;
} else {
tmpEl = findFirstChildElement(currentElem);
}
currentElem = tmpEl;
ret = readSavableFromCurrentElem(defVal);
if (currentElem.getParentNode() instanceof Element) {
currentElem = (Element) currentElem.getParentNode();
} else {
currentElem = null;
}
} catch (IOException ioe) {
throw ioe;
} catch (Exception e) {
IOException io = new IOException(e.toString());
io.initCause(e);
throw io;
}
return ret;
}
use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.
the class DOMInputCapsule method readSavableArray2D.
public Savable[][] readSavableArray2D(String name, Savable[][] defVal) throws IOException {
Savable[][] ret = defVal;
try {
Element tmpEl = findChildElement(currentElem, name);
if (tmpEl == null) {
return defVal;
}
int size_outer = Integer.parseInt(tmpEl.getAttribute("size_outer"));
int size_inner = Integer.parseInt(tmpEl.getAttribute("size_outer"));
Savable[][] tmp = new Savable[size_outer][size_inner];
currentElem = findFirstChildElement(tmpEl);
for (int i = 0; i < size_outer; i++) {
for (int j = 0; j < size_inner; j++) {
tmp[i][j] = (readSavableFromCurrentElem(null));
if (i == size_outer - 1 && j == size_inner - 1) {
break;
}
currentElem = findNextSiblingElement(currentElem);
}
}
ret = tmp;
currentElem = (Element) tmpEl.getParentNode();
return ret;
} catch (IOException ioe) {
throw ioe;
} catch (Exception e) {
IOException io = new IOException(e.toString());
io.initCause(e);
throw io;
}
}
use of com.jme3.export.Savable in project jmonkeyengine by jMonkeyEngine.
the class DOMInputCapsule method readSavableFromCurrentElem.
private Savable readSavableFromCurrentElem(Savable defVal) throws InstantiationException, ClassNotFoundException, IOException, IllegalAccessException {
Savable ret = defVal;
Savable tmp = null;
if (currentElem == null || currentElem.getNodeName().equals("null")) {
return null;
}
String reference = currentElem.getAttribute("ref");
if (reference.length() > 0) {
ret = referencedSavables.get(reference);
} else {
String className = currentElem.getNodeName();
if (defVal != null) {
className = defVal.getClass().getName();
} else if (currentElem.hasAttribute("class")) {
className = currentElem.getAttribute("class");
}
tmp = SavableClassUtil.fromName(className, null);
String versionsStr = currentElem.getAttribute("savable_versions");
if (versionsStr != null && !versionsStr.equals("")) {
String[] versionStr = versionsStr.split(",");
classHierarchyVersions = new int[versionStr.length];
for (int i = 0; i < classHierarchyVersions.length; i++) {
classHierarchyVersions[i] = Integer.parseInt(versionStr[i].trim());
}
} else {
classHierarchyVersions = null;
}
String refID = currentElem.getAttribute("reference_ID");
if (refID.length() < 1)
refID = currentElem.getAttribute("id");
if (refID.length() > 0)
referencedSavables.put(refID, tmp);
if (tmp != null) {
// Allows reading versions from this savable
savable = tmp;
tmp.read(importer);
ret = tmp;
}
}
return ret;
}
Aggregations