Skip to content

Commit

Permalink
https://github.com/StephaneCouturier/Katalog/issues/496
Browse files Browse the repository at this point in the history
  • Loading branch information
StephaneCouturier committed Apr 12, 2024
1 parent 48eb1c1 commit defa5ca
Show file tree
Hide file tree
Showing 8 changed files with 248 additions and 111 deletions.
36 changes: 19 additions & 17 deletions src/catalog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -166,16 +166,18 @@ void Catalog::setDateUpdated(QDateTime dateTime)
//catalog files data operation
void Catalog::generateID()
{//Generate ID
int maxID = 0;
QSqlQuery queryCatalogID;
QString queryCatalogIDSQL = QLatin1String(R"(
SELECT MAX (catalog_id)
FROM catalog
)");
queryCatalogID.prepare(queryCatalogIDSQL);
queryCatalogID.exec();
queryCatalogID.next();
int maxID = queryCatalogID.value(0).toInt();
ID = maxID + 1;
if(queryCatalogID.next()){
maxID = queryCatalogID.value(0).toInt();
ID = maxID + 1;
}
}

void Catalog::insertCatalog()
Expand Down Expand Up @@ -219,19 +221,19 @@ void Catalog::insertCatalog()
insertCatalogQuery.prepare(insertCatalogQuerySQL);
insertCatalogQuery.bindValue(":catalog_id", ID);
insertCatalogQuery.bindValue(":catalog_file_path", filePath);
insertCatalogQuery.bindValue(":catalog_name",name);
insertCatalogQuery.bindValue(":catalog_date_updated",dateUpdated);
insertCatalogQuery.bindValue(":catalog_source_path",sourcePath);
insertCatalogQuery.bindValue(":catalog_file_count",fileCount);
insertCatalogQuery.bindValue(":catalog_total_file_size",totalFileSize);
insertCatalogQuery.bindValue(":catalog_include_hidden",includeHidden);
insertCatalogQuery.bindValue(":catalog_file_type",fileType);
insertCatalogQuery.bindValue(":catalog_storage",storageName);
insertCatalogQuery.bindValue(":catalog_include_symblinks",includeSymblinks);
insertCatalogQuery.bindValue(":catalog_is_full_device",isFullDevice);
insertCatalogQuery.bindValue(":catalog_date_loaded",dateLoaded);
insertCatalogQuery.bindValue(":catalog_include_metadata",includeMetadata);
insertCatalogQuery.bindValue(":catalog_app_version",appVersion);
insertCatalogQuery.bindValue(":catalog_name", name);
insertCatalogQuery.bindValue(":catalog_date_updated", dateUpdated);
insertCatalogQuery.bindValue(":catalog_source_path", sourcePath);
insertCatalogQuery.bindValue(":catalog_file_count", fileCount);
insertCatalogQuery.bindValue(":catalog_total_file_size", totalFileSize);
insertCatalogQuery.bindValue(":catalog_include_hidden", includeHidden);
insertCatalogQuery.bindValue(":catalog_file_type", fileType);
insertCatalogQuery.bindValue(":catalog_storage", storageName);
insertCatalogQuery.bindValue(":catalog_include_symblinks", includeSymblinks);
insertCatalogQuery.bindValue(":catalog_is_full_device", isFullDevice);
insertCatalogQuery.bindValue(":catalog_date_loaded", dateLoaded);
insertCatalogQuery.bindValue(":catalog_include_metadata", includeMetadata);
insertCatalogQuery.bindValue(":catalog_app_version", appVersion);
insertCatalogQuery.exec();
}

Expand Down Expand Up @@ -470,9 +472,9 @@ void Catalog::loadCatalog()
catalog_include_metadata ,
catalog_app_version
FROM catalog
LEFT JOIN storage ON catalog_storage = storage_name
WHERE catalog_id=:catalog_id
)");

query.prepare(querySQL);
query.bindValue(":catalog_id",ID);
query.exec();
Expand Down
73 changes: 18 additions & 55 deletions src/collection.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -288,62 +288,25 @@ void Collection::loadCatalogFilesToTable()
if(catalogValues.length()>0){
//Insert a line in the table with available data

//Prepare insert query for filesall
QSqlQuery insertCatalogQuery;
QString insertCatalogQuerySQL = QLatin1String(R"(
INSERT OR IGNORE INTO catalog (
catalog_id,
catalog_file_path,
catalog_name,
catalog_date_updated,
catalog_source_path,
catalog_file_count,
catalog_total_file_size,
catalog_include_hidden,
catalog_file_type,
catalog_storage,
catalog_include_symblinks,
catalog_is_full_device,
catalog_date_loaded,
catalog_include_metadata,
catalog_app_version
)
VALUES(
:catalog_id,
:catalog_file_path,
:catalog_name,
:catalog_date_updated,
:catalog_source_path,
:catalog_file_count,
:catalog_total_file_size,
:catalog_include_hidden,
:catalog_file_type,
:catalog_storage,
:catalog_include_symblinks,
:catalog_is_full_device,
:catalog_date_loaded,
:catalog_include_metadata,
:catalog_app_version )
)");

insertCatalogQuery.prepare(insertCatalogQuerySQL);
insertCatalogQuery.bindValue(":catalog_id", catalogValues[10]);
insertCatalogQuery.bindValue(":catalog_file_path", catalogFileInfo.filePath());
insertCatalogQuery.bindValue(":catalog_name", catalogFileInfo.completeBaseName());
insertCatalogQuery.bindValue(":catalog_date_updated", catalogFileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss"));
insertCatalogQuery.bindValue(":catalog_source_path", catalogValues[0]);
insertCatalogQuery.bindValue(":catalog_file_count", catalogValues[1].toInt());
insertCatalogQuery.bindValue(":catalog_total_file_size", catalogValues[2].toLongLong());
insertCatalogQuery.bindValue(":catalog_include_hidden", catalogValues[3]);
insertCatalogQuery.bindValue(":catalog_file_type", catalogValues[4]);
insertCatalogQuery.bindValue(":catalog_storage", catalogValues[5]);
insertCatalogQuery.bindValue(":catalog_include_symblinks", catalogValues[6]);
insertCatalogQuery.bindValue(":catalog_is_full_device", catalogValues[7]);
insertCatalogQuery.bindValue(":catalog_date_loaded","");
insertCatalogQuery.bindValue(":catalog_include_metadata", catalogValues[8]);
insertCatalogQuery.bindValue(":catalog_app_version", catalogValues[9]);
insertCatalogQuery.exec();
Catalog newCatalog;
newCatalog.ID = catalogValues[10].toInt(); //catalog_id
newCatalog.filePath = path; //catalog_file_path
newCatalog.name = catalogFileInfo.completeBaseName(); //catalog_name
newCatalog.dateUpdated = catalogFileInfo.lastModified();//.toString("yyyy-MM-dd hh:mm:ss"); //catalog_date_updated
newCatalog.sourcePath = catalogValues[0]; //catalog_source_path
newCatalog.fileCount = catalogValues[1].toLongLong(); //catalog_file_count
newCatalog.totalFileSize = catalogValues[2].toLongLong(); //catalog_total_file_size
newCatalog.includeHidden = catalogValues[3].compare("true", Qt::CaseInsensitive) == 0; //catalog_include_hidden
newCatalog.fileType = catalogValues[4]; //catalog_file_type
newCatalog.storageName = catalogValues[5]; //catalog_storage
newCatalog.includeSymblinks = catalogValues[6].compare("true", Qt::CaseInsensitive) == 0; //catalog_include_symblinks
newCatalog.isFullDevice = catalogValues[7].compare("true", Qt::CaseInsensitive) == 0; //catalog_is_full_device
newCatalog.includeMetadata = catalogValues[8].compare("true", Qt::CaseInsensitive) == 0; //catalog_include_metadata
newCatalog.appVersion = catalogValues[9]; //catalog_app_version

newCatalog.insertCatalog();
}

catalogFile.close();
}
}
Expand Down
1 change: 1 addition & 0 deletions src/collection.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
#include <QAbstractTableModel>
#include <QFile>
#include <QSqlQuery>
#include <QSqlError>>
#include <QSqlRecord>
#include <QMessageBox>
#include <QCoreApplication>
Expand Down
12 changes: 12 additions & 0 deletions src/device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,10 @@ void Device::insertDevice()
device_type,
device_path,
device_external_id,
device_total_file_size,
device_total_file_count,
device_total_space,
device_free_space,
device_group_id)
VALUES(
:device_id,
Expand All @@ -220,6 +224,10 @@ void Device::insertDevice()
:device_type,
:device_path,
:device_external_id,
:device_total_file_size,
:device_total_file_count,
:device_total_space,
:device_free_space,
:device_group_id)
)");
query.prepare(querySQL);
Expand All @@ -229,6 +237,10 @@ void Device::insertDevice()
query.bindValue(":device_type", type);
query.bindValue(":device_path", path);
query.bindValue(":device_external_id", externalID);
query.bindValue(":device_total_file_size", totalFileSize);
query.bindValue(":device_total_file_count", totalFileCount);
query.bindValue(":device_total_space", totalSpace);
query.bindValue(":device_free_space", freeSpace);
query.bindValue(":device_group_id", groupID);
query.exec();
}
Expand Down
4 changes: 2 additions & 2 deletions src/device.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ class Device
QString type;
int externalID = 0;
QString path;
qint64 totalFileSize;
qint64 totalFileCount;
qint64 totalFileSize = 0;
qint64 totalFileCount = 0;
qint64 totalSpace = 0;
qint64 freeSpace = 0;
int groupID = 0;
Expand Down
7 changes: 5 additions & 2 deletions src/mainwindow.h
Original file line number Diff line number Diff line change
Expand Up @@ -286,10 +286,14 @@ class MainWindow : public QMainWindow
int countTreeLevels(const QMap<int, QList<int>>& deviceTree, int parentId);

//Migration 1.22 to 2.0
void importVirtualToDevices();
void importStorageToDevices();
void importCatalogsToDevices();
void generateAndAssociateCatalogMissingIDs();
void importStorageCatalogPathsToDevice();
void importStatistics();

void importStorageCatalogPathsToDevice();

//TAB: Statistics
QStringList typeOfData;
QString selectedTypeOfData;
Expand Down Expand Up @@ -470,7 +474,6 @@ class MainWindow : public QMainWindow
void on_Devices_pushButton_ImportV1_clicked();
void on_Devices_pushButton_TreeExpandCollapse_clicked();
void on_Devices_pushButton_EditList_clicked();
void on_Devices_pushButton_verifStorage_clicked();
void on_Devices_pushButton_SelectPath_clicked();
void on_Devices_pushButton_Snapshot_clicked();
void on_Devices_pushButton_ApplyToSelection_clicked();
Expand Down
5 changes: 2 additions & 3 deletions src/mainwindow_setup.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,8 @@
if (err.type() != QSqlError::NoError) {
QMessageBox msgBox;
msgBox.setWindowTitle("Katalog");
msgBox.setText(tr("The database could not be initialized:<br/>") + err.databaseText());
msgBox.setIcon(QMessageBox::Critical);
msgBox.setText(tr("The database could not be initialized.<br/>Create a new database or select an existing one."));
msgBox.setIcon(QMessageBox::Warning);
msgBox.exec();
return;
}
Expand Down Expand Up @@ -99,7 +99,6 @@
msgBox.setText(tr("The database file could not be found:<br/>") + collection->databaseFilePath);
msgBox.setIcon(QMessageBox::Warning);
msgBox.exec();
selectDatabaseFilePath();
}
else{
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
Expand Down
Loading

0 comments on commit defa5ca

Please sign in to comment.