Update model paths to new directory structure and enhance model loading
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user