diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-03-29 12:21:56 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-03-29 12:21:56 +0200 |
commit | e69d6e8f3d8a6504135f6d2733a3a42f6a041ed4 (patch) | |
tree | 046483fb628977f62a66cb660d4a09fcd4302e0d /vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java | |
parent | 13100e8dcc72b7c879727e5d96e1fdfceb2d3bcc (diff) |
Validate query feature tensor types
- Validate tensor feature types when a tensor is set programmatically.
- Add a toShortString for messages containing tensors.
- Consistent and nicer spacing in tensor string forms.
Diffstat (limited to 'vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java')
-rw-r--r-- | vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java index 0e919d828ed..89eefeced56 100644 --- a/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java +++ b/vespajlib/src/main/java/com/yahoo/tensor/IndexedTensor.java @@ -219,21 +219,31 @@ public abstract class IndexedTensor implements Tensor { } @Override - public String toString() { - if (type.rank() == 0) return Tensor.toStandardString(this); + public String toString() { return toString(Long.MAX_VALUE); } + + @Override + public String toShortString() { + return toString(Math.max(2, 10 / (type().dimensions().stream().filter(d -> d.isMapped()).count() + 1))); + } + + private String toString(long maxCells) { + if (type.rank() == 0) return Tensor.toStandardString(this, maxCells); if (type.dimensions().stream().anyMatch(d -> d.size().isEmpty())) - return Tensor.toStandardString(this); + return Tensor.toStandardString(this, maxCells); Indexes indexes = Indexes.of(dimensionSizes); StringBuilder b = new StringBuilder(type.toString()).append(":"); - indexedBlockToString(this, indexes, b); + indexedBlockToString(this, indexes, maxCells, b); return b.toString(); } - static void indexedBlockToString(IndexedTensor tensor, Indexes indexes, StringBuilder b) { - for (int index = 0; index < tensor.size(); index++) { + static void indexedBlockToString(IndexedTensor tensor, Indexes indexes, long maxCells, StringBuilder b) { + int index = 0; + for (; index < tensor.size() && index < maxCells; index++) { indexes.next(); + if (index > 0) + b.append(", "); // start brackets for (int i = 0; i < indexes.nextDimensionsAtStart(); i++) @@ -252,9 +262,9 @@ public abstract class IndexedTensor implements Tensor { // end bracket and comma for (int i = 0; i < indexes.nextDimensionsAtEnd(); i++) b.append("]"); - if (index < tensor.size() - 1) - b.append(", "); } + if (index == maxCells && index < tensor.size()) + b.append(", ...]"); } @Override |