String decodeAllCodes(StringBuilder buff, int initialPosition) throws NotFoundException, FormatException { int currentPosition = initialPosition; String remaining = null; do { DecodedInformation info = this.decodeGeneralPurposeField(currentPosition, remaining); String parsedFields = FieldParser.parseFieldsInGeneralPurpose(info.getNewString()); if (parsedFields != null) { buff.append(parsedFields); } if (info.isRemaining()) { remaining = String.valueOf(info.getRemainingValue()); } else { remaining = null; } if (currentPosition == info.getNewPosition()) { // No step forward! break; } currentPosition = info.getNewPosition(); } while (true); return buff.toString(); }
@Override public String parseInformation() throws NotFoundException { if (this.getInformation().getSize() < HEADER_SIZE + GTIN_SIZE) { throw NotFoundException.getNotFoundInstance(); } StringBuilder buf = new StringBuilder(); encodeCompressedGtin(buf, HEADER_SIZE); int lastAIdigit = this.getGeneralDecoder() .extractNumericValueFromBitArray(HEADER_SIZE + GTIN_SIZE, LAST_DIGIT_SIZE); buf.append("(392"); buf.append(lastAIdigit); buf.append(')'); DecodedInformation decodedInformation = this.getGeneralDecoder() .decodeGeneralPurposeField(HEADER_SIZE + GTIN_SIZE + LAST_DIGIT_SIZE, null); buf.append(decodedInformation.getNewString()); return buf.toString(); }