Update model paths to new directory structure and enhance model loading

This commit is contained in:
extio-de
2026-03-22 18:51:49 +01:00
parent 9d89c2e0af
commit e3551bf6fe
3 changed files with 26 additions and 10 deletions

View File

@@ -1,2 +1,2 @@
models=/home/sb/lm/models/
models=/mnt/data/data/lm/models/gguf/
console=/usr/bin/konsole -e CMD

View File

@@ -91,14 +91,16 @@ public class Data {
static List<String> scanModels() {
final List<String> result = new ArrayList<>();
try {
Files
.list(Path.of(props.getProperty("models")))
try (var paths = Files.walk(Path.of(props.getProperty("models")))) {
paths
.filter(Files::isRegularFile)
.filter(p -> p.getFileName().toString().endsWith(".gguf"))
.map(Path::toAbsolutePath)
.map(Path::toString)
.sorted()
.forEach(result::add);
}
}
catch (final IOException e) {
e.printStackTrace();
}

View File

@@ -5,6 +5,9 @@ import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer;
import javax.swing.DefaultListModel;
@@ -30,6 +33,8 @@ public class SelectModelDialog extends JDialog {
DefaultListModel<String> listModel;
List<String> modelPaths;
/**
* Create the dialog.
*/
@@ -70,7 +75,7 @@ public class SelectModelDialog extends JDialog {
return;
}
SelectModelDialog.this.setVisible(false);
modelPathConsumer.accept(SelectModelDialog.this.listModel.getElementAt(SelectModelDialog.this.list.getSelectedIndex()));
modelPathConsumer.accept(SelectModelDialog.this.modelPaths.get(SelectModelDialog.this.list.getSelectedIndex()));
SelectModelDialog.this.dispose();
}
});
@@ -98,10 +103,19 @@ public class SelectModelDialog extends JDialog {
}
private void initialize() {
final Path modelsRoot = Path.of(Data.props.getProperty("models")).toAbsolutePath().normalize();
this.modelPaths = new ArrayList<>();
Data.scanModels()
.stream()
.filter(p -> Data.modelData.models().stream().noneMatch(m -> m.path().equals(p)))
.forEach(this.listModel::addElement);
.forEach(absolutePath -> {
final Path modelPath = Path.of(absolutePath).toAbsolutePath().normalize();
final String displayPath = modelPath.startsWith(modelsRoot)
? modelsRoot.relativize(modelPath).toString()
: modelPath.toString();
this.modelPaths.add(modelPath.toString());
this.listModel.addElement(displayPath.isEmpty() ? modelPath.getFileName().toString() : displayPath);
});
}
}