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 console=/usr/bin/konsole -e CMD

View File

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

View File

@@ -5,6 +5,9 @@ import java.awt.FlowLayout;
import java.awt.Frame; import java.awt.Frame;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Consumer; import java.util.function.Consumer;
import javax.swing.DefaultListModel; import javax.swing.DefaultListModel;
@@ -30,6 +33,8 @@ public class SelectModelDialog extends JDialog {
DefaultListModel<String> listModel; DefaultListModel<String> listModel;
List<String> modelPaths;
/** /**
* Create the dialog. * Create the dialog.
*/ */
@@ -70,7 +75,7 @@ public class SelectModelDialog extends JDialog {
return; return;
} }
SelectModelDialog.this.setVisible(false); 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(); SelectModelDialog.this.dispose();
} }
}); });
@@ -98,10 +103,19 @@ public class SelectModelDialog extends JDialog {
} }
private void initialize() { private void initialize() {
final Path modelsRoot = Path.of(Data.props.getProperty("models")).toAbsolutePath().normalize();
this.modelPaths = new ArrayList<>();
Data.scanModels() Data.scanModels()
.stream() .stream()
.filter(p -> Data.modelData.models().stream().noneMatch(m -> m.path().equals(p))) .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);
});
} }
} }