private boolean writeViewMembers(StringBuilder sb, int[] members) throws SAXException { boolean isPastFirstElement = false; int nextBreak = (((sb.length() - 1) / CasSerializerSupport.PP_LINE_LENGTH) + 1) * CasSerializerSupport.PP_LINE_LENGTH; for (int member : members) { int xmiId = cds.getXmiIdAsInt(member); if (xmiId != 0) { // to catch filtered FS if (isPastFirstElement) { sb.append(' '); } else { isPastFirstElement = true; } sb.append(xmiId); if (cds.isFormattedOutput && (sb.length() > nextBreak)) { sb.append(SYSTEM_LINE_FEED); nextBreak += CasSerializerSupport.PP_LINE_LENGTH; } } } return isPastFirstElement; }
/** * Get the XMI ID to use for an FS. * * @param addr * address of FS * @return XMI ID. If addr == CASImpl.NULL, returns null */ public String getXmiId(int addr) { int v = getXmiIdAsInt(addr); return (v == 0) ? null : Integer.toString(v); }
@Override protected void writeFsRef(TOP fs) throws Exception { jg.writeNumber(cds.getXmiIdAsInt(fs)); }
/** * for arrays and lists, * recursively write one FS, * as actual FS, * if dynamic embedding and single ref * OR, just write the reference id * If trying to write the null FS (due to filtering for instance), write 0 * @param addr * @throws IOException */ private void writeFsOrRef(TOP fs) throws IOException { if (fs == null || !cds.isDynamicMultiRef || cds.multiRefFSs.contains(fs)) { jg.writeNumber(cds.getXmiIdAsInt(fs)); } else { isEmbeddedFromFsFeature = false; writeEmbeddedFs(fs); } }
private void writeFsOrRef(TOP fs, FeatureImpl fi) throws IOException { if (fs == null || !cds.isDynamicMultiRef || cds.multiRefFSs.contains(fs)) { jg.writeFieldName(getShortFeatureName(fi)); jg.writeNumber(cds.getXmiIdAsInt(fs)); } else { jch.writeNlJustBeforeNext(); jg.writeFieldName(getShortFeatureName(fi)); isEmbeddedFromFsFeature = true; // Use cases: can write embed, which has embed, which has non-embed // once hit non-embed, this flag would be turned off, // But it's only tested at the beginning of writeEmbeddedFs, so subsequent fields reset this // This flag only used to control new lines for embedded case writeEmbeddedFs(fs); isEmbeddedFromFsFeature = false; // restore default } }
private void writeViewMembers(Collection<TOP> members) throws IOException { int nextBreak = CasSerializerSupport.PP_ELEMENTS; int i = 0; for (TOP member : members) { int xmiId = cds.getXmiIdAsInt(member); if (xmiId == 0) { continue; } if (i++ > nextBreak) { jch.writeNlJustBeforeNext(); nextBreak += CasSerializerSupport.PP_ELEMENTS; } jg.writeNumber(xmiId); } }
private void writeList(TOP fs, FeatureImpl fi, int featureClass, boolean isListAsFSs) throws IOException { assert(fs != null); TOP list = fs._getFeatureValueNc(fi); if (list == null) return; jg.writeFieldName(getShortFeatureName(fi)); if (isDynamicOrStaticMultiRef(fi, list, isListAsFSs)) { jg.writeNumber(cds.getXmiIdAsInt(list)); } else { writeJsonListValues(list); } }
private void writeArray(TOP fs, FeatureImpl fi, int featureClass) throws IOException { assert(fs != null); TOP array = fs._getFeatureValueNc(fi); if (array == null) return; jg.writeFieldName(getShortFeatureName(fi)); if (isDynamicOrStaticMultiRef(fi, array)) { jg.writeNumber(cds.getXmiIdAsInt(array)); } else { writeJsonArrayValues(array, featureClass); } }