@Override public void endControlField(Field designator) { try { if (listener != null) { listener.endControlField(designator); } if (designator != null) { String value = designator.data(); if (!value.isEmpty()) { switch (designator.tag()) { case "001": this.id = value; break; case "006": case "007": case "008": // fix fill characters here value = value.replace('^', '|'); break; } if (contentHandler != null) { contentHandler.characters(value.toCharArray(), 0, value.length()); } } } if (contentHandler != null) { contentHandler.endElement(nsUri, CONTROLFIELD, CONTROLFIELD); } } catch (Exception ex) { if (fatalerrors) { throw new RuntimeException(ex); } else if (!silenterrors) { logger.warn(designator + ": " + ex.getMessage(), ex); } } }