/* * (non-Javadoc) * * @see * org.javarosa.core.services.storage.utilities.Externalizable#writeExternal * (java.io.DataOutputStream) */ public void writeExternal(BinaryWriter out_renamed) { ExtUtil.writeString(out_renamed, ExtUtil.emptyIfNull(name)); ExtUtil.writeNumeric(out_renamed, multiplicity); ExtUtil.writeBool(out_renamed, repeatable); ExtUtil.write(out_renamed, new ExtWrapNullable(value == null ? null : new ExtWrapTagged(value))); // Jan 22, 2009 - [email protected] // old line: ExtUtil.write(out, new // ExtWrapList(ExtUtil.emptyIfNull(children))); // New Child serialization // 1. write null status as boolean // 2. write number of children // 3. for all child in children // 3.1 if child type == TreeElement write boolean true , then serialize // directly. // 3.2 if child type != TreeElement, write boolean false, then tagged // child if (children == null) { // 1. ExtUtil.writeBool(out_renamed, false); } else { // 1. ExtUtil.writeBool(out_renamed, true); // 2. ExtUtil.writeNumeric(out_renamed, children.Count); // 3. IEnumerator en = children.GetEnumerator(); while (en.MoveNext()) { TreeElement child = (TreeElement)en.Current; if (child.GetType() == typeof(TreeElement)) { // 3.1 ExtUtil.writeBool(out_renamed, true); child.writeExternal(out_renamed); } else { // 3.2 ExtUtil.writeBool(out_renamed, false); ExtUtil.write(out_renamed, new ExtWrapTagged(child)); } } } // end Jan 22, 2009 ExtUtil.writeNumeric(out_renamed, dataType); ExtUtil.writeBool(out_renamed, relevant); ExtUtil.writeBool(out_renamed, required); ExtUtil.writeBool(out_renamed, enabled); ExtUtil.writeBool(out_renamed, relevantInherited); ExtUtil.writeBool(out_renamed, enabledInherited); ExtUtil.write(out_renamed, new ExtWrapNullable(constraint)); // TODO: inefficient for repeats ExtUtil.writeString(out_renamed, ExtUtil.emptyIfNull(preloadHandler)); ExtUtil.writeString(out_renamed, ExtUtil.emptyIfNull(preloadParams)); ArrayList attStrings = getSingleStringAttributeVector(); ArrayList al = ExtUtil.emptyIfNull(attStrings); ExtUtil.write(out_renamed, new ExtWrapList(al)); }