/** * {@inheritDoc} */ public void initialize() throws IOException { int skipLines = factory.getSkipLines(); // Move past the lines to be skipped ... while (lineNumber < skipLines) { _nextRecordFieldValues(); } // If the fields are defined in the message... read the next record if (factory.fieldsInMessage() || factory.validateHeader()) { List<String> fields = _nextRecordFieldValues(); if (factory.validateHeader()) { validateHeader(fields); } if (factory.fieldsInMessage()) { // In message field definitions do not support variable field definitions... just one record type supported... inMessageRecordMetaData = VariableFieldRecordMetaData.buildRecordMetaData(factory.getRecordElementName(), fields); } } }
protected void validateHeader(List<String> headers) throws IOException { if (factory.isMultiTypeRecordSet()) { throw new IOException("Cannot validate the 'header' field of a Multi-Type Record Set. Reader fields definition defines multiple record definitions."); } RecordMetaData recordMetaData = factory.getRecordMetaData(); if (headers == null) { throw new IOException("Null header."); } if (validateHeader(headers, recordMetaData.getFields())) { return; } throw new IOException("Invalid header."); }
@Initialize public final void fixupRecordDelimiter() { if (recordDelimiter == null) { return; } // Fixup the record delimiter... if (recordDelimiter.startsWith("regex:")) { recordDelimiterPattern = Pattern.compile(recordDelimiter.substring("regex:".length()), (Pattern.MULTILINE | Pattern.DOTALL)); } else { recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\n", '\n'); recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\r", '\r'); recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\t", '\t'); recordDelimiter = XmlUtil.removeEntities(recordDelimiter); } }
recordMetaData = inMessageRecordMetaData; } else { recordMetaData = factory.getRecordMetaData(fieldValues); if (factory.strict() && fieldValues.size() < getUnignoredFieldCount(recordMetaData)) { logger.debug("[CORRUPT] Record #" + recordCount + " invalid [" + fieldValues + "]. The record should contain " + fieldsMetaData.size() + " fields [" if (inMessageRecordMetaData == null && factory.isMultiTypeRecordSet()) {
/** * Get the unignored field count for the specified record. * * @param recordMetaData The record metadata. * @return The unignored field count. */ public int getUnignoredFieldCount(RecordMetaData recordMetaData) { if (factory.isMultiTypeRecordSet()) { // Need to account for the leading identifier field on each // record... return recordMetaData.getUnignoredFieldCount() + 1; } else { return recordMetaData.getUnignoredFieldCount(); } }
addFieldBindings(bean); MapBindingWiringVisitor wiringVisitor = new MapBindingWiringVisitor(bindMapKeyField, bindBeanId); addFieldBindings(recordBean); } else { bean = new Bean(bindBeanClass, bindBeanId, recordElementName); addFieldBindings(bean);
recordMetaData = inMessageRecordMetaData; } else { recordMetaData = factory.getRecordMetaData(fieldValues); if (factory.strict() && fieldValues.size() < getUnignoredFieldCount(recordMetaData)) { logger.debug("[CORRUPT] Record #" + recordCount + " invalid [" + fieldValues + "]. The record should contain " + fieldsMetaData.size() + " fields [" if (inMessageRecordMetaData == null && factory.isMultiTypeRecordSet()) {
/** * Get the unignored field count for the specified record. * * @param recordMetaData The record metadata. * @return The unignored field count. */ public int getUnignoredFieldCount(RecordMetaData recordMetaData) { if (factory.isMultiTypeRecordSet()) { // Need to account for the leading identifier field on each // record... return recordMetaData.getUnignoredFieldCount() + 1; } else { return recordMetaData.getUnignoredFieldCount(); } }
addFieldBindings(bean); MapBindingWiringVisitor wiringVisitor = new MapBindingWiringVisitor(bindMapKeyField, bindBeanId); addFieldBindings(recordBean); } else { bean = new Bean(bindBeanClass, bindBeanId, recordElementName); addFieldBindings(bean);
/** * {@inheritDoc} */ public void initialize() throws IOException { int skipLines = factory.getSkipLines(); // Move past the lines to be skipped ... while (lineNumber < skipLines) { _nextRecordFieldValues(); } // If the fields are defined in the message... read the next record if (factory.fieldsInMessage() || factory.validateHeader()) { List<String> fields = _nextRecordFieldValues(); if (factory.validateHeader()) { validateHeader(fields); } if (factory.fieldsInMessage()) { // In message field definitions do not support variable field definitions... just one record type supported... inMessageRecordMetaData = VariableFieldRecordMetaData.buildRecordMetaData(factory.getRecordElementName(), fields); } } }
protected void validateHeader(List<String> headers) throws IOException { if (factory.isMultiTypeRecordSet()) { throw new IOException("Cannot validate the 'header' field of a Multi-Type Record Set. Reader fields definition defines multiple record definitions."); } RecordMetaData recordMetaData = factory.getRecordMetaData(); if (headers == null) { throw new IOException("Null header."); } if (validateHeader(headers, recordMetaData.getFields())) { return; } throw new IOException("Invalid header."); }
@Initialize public final void fixupRecordDelimiter() { if (recordDelimiter == null) { return; } // Fixup the record delimiter... if (recordDelimiter.startsWith("regex:")) { recordDelimiterPattern = Pattern.compile(recordDelimiter.substring("regex:".length()), (Pattern.MULTILINE | Pattern.DOTALL)); } else { recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\n", '\n'); recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\r", '\r'); recordDelimiter = removeSpecialCharEncodeString(recordDelimiter, "\\t", '\t'); recordDelimiter = XmlUtil.removeEntities(recordDelimiter); } }