📄 domoutputcapsule.java
字号:
Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.length)); for (int i=0; i<value.length; i++) { boolean[] array = value[i]; write(array, "array_"+i, defVal==null?null:defVal[i]); } currentElement = (Element) el.getParentNode(); } public void write(String value, String name, String defVal) throws IOException { if (value == null || value.equals(defVal)) { return; } currentElement.setAttribute(name, encodeString(value)); } public void write(String[] value, String name, String[] defVal) throws IOException { Element el = appendElement(name); if (value == null) { value = defVal; } el.setAttribute("size", String.valueOf(value.length)); for (int i=0; i<value.length; i++) { String b = value[i]; appendElement("String_"+i); String val = encodeString(b); currentElement.setAttribute("value", val); currentElement = el; } currentElement = (Element) currentElement.getParentNode(); } public void write(String[][] value, String name, String[][] defVal) throws IOException { if (value == null) return; if(Arrays.deepEquals(value, defVal)) return; Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.length)); for (int i=0; i<value.length; i++) { String[] array = value[i]; write(array, "array_"+i, defVal==null?null:defVal[i]); } currentElement = (Element) el.getParentNode(); } public void write(BitSet value, String name, BitSet defVal) throws IOException { if (value == null || value.equals(defVal)) { return; } StringBuilder buf = new StringBuilder(); for (int i = value.nextSetBit(0); i >= 0; i = value.nextSetBit(i + 1)) { buf.append(i); buf.append(" "); } buf.setLength(Math.max(0, buf.length() - 1)); currentElement.setAttribute(name, buf.toString()); } public void write(Savable object, String name, Savable defVal) throws IOException { if (object == null) { return; } if (object.equals(defVal)) { return; } Element old = currentElement; Element el = writtenSavables.get(object); String className = null; if(!object.getClass().getName().equals(name)){ className = object.getClass().getName(); } try { doc.createElement(name); } catch (DOMException e) { name = "Object"; className = object.getClass().getName(); } if (el != null) { String refID = el.getAttribute("reference_ID"); if (refID.length() == 0) { refID = object.getClassTag().getName() + "@" + object.hashCode(); el.setAttribute("reference_ID", refID); } el = appendElement(name); el.setAttribute("ref", refID); } else { el = appendElement(name); writtenSavables.put(object, el); object.write(exporter); } if(className != null){ el.setAttribute("class", className); } currentElement = old; } public void write(Savable[] objects, String name, Savable[] defVal) throws IOException { if (objects == null) { return; } if (Arrays.equals(objects, defVal)) { return; } Element old = currentElement; Element el = appendElement(name); el.setAttribute("size", String.valueOf(objects.length)); for (int i = 0; i < objects.length; i++) { Savable o = objects[i]; if(o == null){ //renderStateList has special loading code, so we can leave out the null values if(!name.equals("renderStateList")){ Element before = currentElement; appendElement("null"); currentElement = before; } }else{ write(o, o.getClassTag().getName(), null); } } currentElement = old; } 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.getClassTag().getSimpleName(), null); } } currentElement = (Element) currentElement.getParentNode(); } public void writeSavableArrayList(ArrayList array, String name, ArrayList defVal) throws IOException { if (array == null) { return; } if (array.equals(defVal)) { return; } Element old = currentElement; Element el = appendElement(name); currentElement = el; el.setAttribute(XMLExporter.ATTRIBUTE_SIZE, String.valueOf(array.size())); for (Object o : array) { if(o == null) { continue; } else if (o instanceof Savable) { Savable s = (Savable) o; write(s, s.getClassTag().getName(), null); } else { throw new ClassCastException("Not a Savable instance: " + o); } } currentElement = old; } public void writeSavableArrayListArray(ArrayList[] objects, String name, ArrayList[] defVal) throws IOException { if (objects == null) {return;} if (Arrays.equals(objects, defVal)) {return;} Element old = currentElement; Element el = appendElement(name); el.setAttribute(XMLExporter.ATTRIBUTE_SIZE, String.valueOf(objects.length)); for (int i = 0; i < objects.length; i++) { ArrayList o = objects[i]; if(o == null){ Element before = currentElement; appendElement("null"); currentElement = before; }else{ StringBuilder buf = new StringBuilder("SavableArrayList_"); buf.append(i); writeSavableArrayList(o, buf.toString(), null); } } currentElement = old; } public void writeSavableArrayListArray2D(ArrayList[][] value, String name, ArrayList[][] defVal) throws IOException { if (value == null) return; if(Arrays.deepEquals(value, defVal)) return; Element el = appendElement(name); int size = value.length; el.setAttribute(XMLExporter.ATTRIBUTE_SIZE, String.valueOf(size)); for (int i=0; i< size; i++) { ArrayList[] vi = value[i]; writeSavableArrayListArray(vi, "SavableArrayListArray_"+i, null); } currentElement = (Element) el.getParentNode(); } public void writeFloatBufferArrayList(ArrayList<FloatBuffer> array, String name, ArrayList<FloatBuffer> defVal) throws IOException { if (array == null) { return; } if (array.equals(defVal)) { return; } Element el = appendElement(name); el.setAttribute(XMLExporter.ATTRIBUTE_SIZE, String.valueOf(array.size())); for (FloatBuffer o : array) { write(o, XMLExporter.ELEMENT_FLOATBUFFER, null); } currentElement = (Element) el.getParentNode(); } public void writeSavableMap(Map<? extends Savable, ? extends Savable> map, String name, Map<? extends Savable, ? extends Savable> defVal) throws IOException { if (map == null) { return; } if (map.equals(defVal)) { return; } Element stringMap = appendElement(name); Iterator<? extends Savable> keyIterator = map.keySet().iterator(); while(keyIterator.hasNext()) { Savable key = keyIterator.next(); Element mapEntry = appendElement(XMLExporter.ELEMENT_MAPENTRY); write(key, XMLExporter.ELEMENT_KEY, null); Savable value = map.get(key); write(value, XMLExporter.ELEMENT_VALUE, null); currentElement = stringMap; } currentElement = (Element) stringMap.getParentNode(); } 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(); } public void write(FloatBuffer value, String name, FloatBuffer defVal) throws IOException { if (value == null) { return; } Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.limit())); StringBuilder buf = new StringBuilder(); int pos = value.position(); value.rewind(); while (value.hasRemaining()) { buf.append(value.get()); buf.append(" "); } buf.setLength(Math.max(0, buf.length() - 1)); value.position(pos); el.setAttribute(dataAttributeName, buf.toString()); currentElement = (Element) el.getParentNode(); } public void write(IntBuffer value, String name, IntBuffer defVal) throws IOException { if (value == null) { return; } if (value.equals(defVal)) { return; } Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.limit())); StringBuilder buf = new StringBuilder(); int pos = value.position(); value.rewind(); while (value.hasRemaining()) { buf.append(value.get()); buf.append(" "); } buf.setLength(buf.length() - 1); value.position(pos); el.setAttribute(dataAttributeName, buf.toString()); currentElement = (Element) el.getParentNode(); } public void write(ByteBuffer value, String name, ByteBuffer defVal) throws IOException { if (value == null) return; if (value.equals(defVal)) return; Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.limit())); StringBuilder buf = new StringBuilder(); int pos = value.position(); value.rewind(); while (value.hasRemaining()) { buf.append(value.get()); buf.append(" "); } buf.setLength(buf.length() - 1); value.position(pos); el.setAttribute(dataAttributeName, buf.toString()); currentElement = (Element) el.getParentNode(); } public void write(ShortBuffer value, String name, ShortBuffer defVal) throws IOException { if (value == null) { return; } if (value.equals(defVal)) { return; } Element el = appendElement(name); el.setAttribute("size", String.valueOf(value.limit())); StringBuilder buf = new StringBuilder(); int pos = value.position(); value.rewind(); while (value.hasRemaining()) { buf.append(value.get()); buf.append(" "); } buf.setLength(buf.length() - 1); value.position(pos); el.setAttribute(dataAttributeName, buf.toString()); currentElement = (Element) el.getParentNode(); } public void write(Enum value, String name, Enum defVal) throws IOException { if (value == defVal) { return; } currentElement.setAttribute(name, String.valueOf(value)); } public void writeByteBufferArrayList(ArrayList<ByteBuffer> array, String name, ArrayList<ByteBuffer> defVal) throws IOException { if (array == null) { return; } if (array.equals(defVal)) { return; } Element el = appendElement(name); el.setAttribute("size", String.valueOf(array.size())); for (ByteBuffer o : array) { write(o, "ByteBuffer", null); } currentElement = (Element) el.getParentNode(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -