private SMFParseError unparseableVersionList( final List<String> line, final Optional<Exception> exception) { return this.unparseableVersion( line.toJavaStream().collect(Collectors.joining(" ")), exception); }
private static int unsupported( final int bits, final String type, final List<Integer> sizes) { final StringBuilder sb = new StringBuilder(128); sb.append("Unsupported "); sb.append(type); sb.append(" size."); sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(bits); sb.append(System.lineSeparator()); sb.append(" Supported: "); sb.append(sizes.toJavaStream() .map(x -> Integer.toUnsignedString(x.intValue())) .collect(Collectors.joining("|"))); sb.append(System.lineSeparator()); throw new UnsupportedOperationException(sb.toString()); } }
private static int unsupported( final int bits, final String type, final List<Integer> sizes) { final StringBuilder sb = new StringBuilder(128); sb.append("Unsupported "); sb.append(type); sb.append(" size."); sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(bits); sb.append(System.lineSeparator()); sb.append(" Supported: "); sb.append(sizes.toJavaStream() .map(x -> Integer.toUnsignedString(x.intValue())) .collect(Collectors.joining("|"))); sb.append(System.lineSeparator()); throw new UnsupportedOperationException(sb.toString()); } }
sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(text.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator());
private Validation<List<SMFParseError>, SMFSchemaRequireTriangles> parseStatementRequireTriangles( final List<String> line) { if (line.size() == 2) { final String text = line.get(1); switch (text) { case "true": return valid(SMF_TRIANGLES_REQUIRED); case "false": return valid(SMF_TRIANGLES_NOT_REQUIRED); default: break; } } final StringBuilder sb = new StringBuilder(128); sb.append("Could not parse triangle requirement."); sb.append(System.lineSeparator()); sb.append(" Expected: require-triangles (true | false)"); sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(line.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of( this.reader.position(), sb.toString(), Optional.empty()))); }
private Validation<List<SMFParseError>, SMFSchemaRequireVertices> parseStatementRequireVertices( final List<String> line) { if (line.size() == 2) { final String text = line.get(1); switch (text) { case "true": return valid(SMF_VERTICES_REQUIRED); case "false": return valid(SMF_VERTICES_NOT_REQUIRED); default: break; } } final StringBuilder sb = new StringBuilder(128); sb.append("Could not parse vertices requirement."); sb.append(System.lineSeparator()); sb.append(" Expected: require-vertices (true | false)"); sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(line.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of( this.reader.position(), sb.toString(), Optional.empty()))); }
private void parseMetaDataValues( final long vendor_id, final long schema_id, final long lines) throws Exception { final ArrayList<String> saved_lines = new ArrayList<>(); while ((long) saved_lines.size() < lines) { final Optional<List<String>> line_opt = super.reader.line(); if (!line_opt.isPresent()) { this.onEOF(); return; } this.log().trace("line: {}", line_opt.get()); final List<String> line = line_opt.get(); if (line.isEmpty()) { super.failExpectedGot( "Received an empty line.", "A line of Base64 encoded data.", ""); return; } saved_lines.add(line.toJavaStream().collect(Collectors.joining())); } final byte[] decoded = SMFBase64Lines.fromBase64Lines(saved_lines); if (this.events.onMeta(vendor_id, schema_id, (long) decoded.length)) { this.events.onMetaData(vendor_id, schema_id, decoded); } }
private Validation<List<SMFParseError>, SMFSchemaIdentifier> parseStatementIdentifier( final List<String> text) { if (text.length() == 4) { try { final SMFSchemaName schema = SMFSchemaName.of(text.get(1)); final int major = Integer.parseUnsignedInt(text.get(2)); final int minor = Integer.parseUnsignedInt(text.get(3)); return valid(SMFSchemaIdentifier.of(schema, major, minor)); } catch (final NumberFormatException e) { return invalid(List.of(SMFParseError.of( this.reader.position(), e.getMessage(), Optional.of(e)))); } } final StringBuilder sb = new StringBuilder(128); sb.append("Incorrect number of arguments."); sb.append(System.lineSeparator()); sb.append( " Expected: schema <schema> <version-major> <version-minor>"); sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(text.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of( this.reader.position(), sb.toString(), Optional.empty()))); }
sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(line.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of( sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(line.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of(
"Incorrect number of arguments", "triangles", line.toJavaStream().collect(Collectors.joining(" "))); return; "Incorrect number of arguments", "metadata", line.toJavaStream().collect(Collectors.joining(" "))); return; e.getMessage(), "attribute", line.toJavaStream().collect(Collectors.joining(" "))); return; "Incorrect number of arguments", "attribute <attribute-name>", line.toJavaStream().collect(Collectors.joining(" "))); return; "Unrecognized command.", "attribute | metadata | triangles", line.toJavaStream().collect(Collectors.joining(" "))); return;
"The first line must be a version declaration.", "smf <version-major> <version-minor>", line.toJavaStream().collect(Collectors.joining(" "))))); "Incorrect number of arguments.", "smf <version-major> <version-minor>", line.toJavaStream().collect(Collectors.joining(" "))))); "Cannot parse number: " + e.getMessage(), "smf <version-major> <version-minor>", line.toJavaStream().collect(Collectors.joining(" "))))); "Unrecognized command.", "smf <version-major> <version-minor>", line.toJavaStream().collect(Collectors.joining(" ")))));
private void parseHeaderCommandSchema( final List<String> line) { if (line.size() == 5) { try { final int vendor = Integer.parseUnsignedInt(line.get(1), 16); final int schema = Integer.parseUnsignedInt(line.get(2), 16); final int schema_version_major = Integer.parseUnsignedInt(line.get(3)); final int schema_version_minor = Integer.parseUnsignedInt(line.get(4)); this.schema_id = SMFSchemaIdentifier.of( vendor, schema, schema_version_major, schema_version_minor); } catch (final NumberFormatException e) { super.failExpectedGot( "Could not parse number: " + e.getMessage(), "schema <vendor-id> <schema-id> <schema-version-major> <schema-version-minor>", line.toJavaStream().collect(Collectors.joining(" "))); } } else { super.failExpectedGot( "Incorrect number of arguments", "schema <vendor-id> <schema-id> <schema-version-major> <schema-version-minor>", line.toJavaStream().collect(Collectors.joining(" "))); } }
"Expected a meta command.", "meta <vendor-id> <schema-id> <integer-unsigned>", line.toJavaStream().collect(Collectors.joining(" "))); break;
sb.append(System.lineSeparator()); sb.append(" Received: "); sb.append(line.toJavaStream().collect(Collectors.joining(" "))); sb.append(System.lineSeparator()); return invalid(List.of(SMFParseError.of(
"Incorrect number of arguments", "data", line.toJavaStream().collect(Collectors.joining(" "))); return; "Unrecognized command.", "attribute | coordinates | data | meta | triangles | vertices | schema", line.toJavaStream().collect(Collectors.joining(" "))); return;
private void parseMeta( final List<String> line) throws Exception { if (line.length() == 4) { final long vendor_id = (long) Integer.parseUnsignedInt(line.get(1), 16); final long schema_id = (long) Integer.parseUnsignedInt(line.get(2), 16); final long lines = Long.parseUnsignedLong(line.get(3)); this.parseMetaDataValues(vendor_id, schema_id, lines); } else { super.failExpectedGot( "Incorrect number of arguments", "meta <vendor-id> <schema-id> <integer-unsigned>", line.toJavaStream().collect(Collectors.joining(" "))); } }
"Cannot parse number: " + e.getMessage(), "<integer-unsigned> <integer-unsigned> <integer-unsigned>", line.toJavaStream().collect(Collectors.joining(" "))); return; "Incorrect number of arguments", "<integer-unsigned> <integer-unsigned> <integer-unsigned>", line.toJavaStream().collect(Collectors.joining(" "))); return;
e.getMessage(), "coordinates <axis> <axis> <axis> <winding-order>", line.toJavaStream().collect(Collectors.joining(" "))); "Incorrect number of arguments", "coordinates <axis> <axis> <axis> <winding-order>", line.toJavaStream().collect(Collectors.joining(" ")));