[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [kstars/gsoc2012-spacetime] /: Implemented UI option to select CSV or Space delimited files
From: Rishab Arora <ra.rishab () gmail ! com>
Date: 2012-09-01 0:00:50
Message-ID: 20120901000050.91A59A60D4 () git ! kde ! org
[Download RAW message or body]
Git commit cbf1cfa31eeba49f83bc2df7c11570cf87b6629b by Rishab Arora.
Committed on 01/09/2012 at 01:30.
Pushed by rishabarora into branch 'gsoc2012-spacetime'.
Implemented UI option to select CSV or Space delimited files
M +21 -5 datahandlers/catalogdb.cpp
M +3 -1 datahandlers/catalogdb.h
M +3 -1 kstars/dialogs/addcatdialog.cpp
M +3 -0 kstars/dialogs/addcatdialog.ui
http://commits.kde.org/kstars/cbf1cfa31eeba49f83bc2df7c11570cf87b6629b
diff --git a/datahandlers/catalogdb.cpp b/datahandlers/catalogdb.cpp
index d36a921..26ced2f 100644
--- a/datahandlers/catalogdb.cpp
+++ b/datahandlers/catalogdb.cpp
@@ -262,8 +262,10 @@ void CatalogDB::AddEntry(const QString& catalog_name, const int ID,
add_query.bindValue("MajorAxis", major_axis);
add_query.bindValue("MinorAxis", minor_axis);
add_query.bindValue("Flux", flux);
- if (!add_query.exec())
+ if (!add_query.exec()) {
+ kWarning() << "Custom Catalog Insert Query FAILED!";
kWarning() << add_query.lastQuery();
+ }
// Find UID of the Row just added
rowuid = add_query.lastInsertId().toInt();
@@ -313,6 +315,7 @@ bool CatalogDB::AddCatalogContents(const QString& fname) {
if (ccFile.open(QIODevice::ReadOnly)) {
QStringList columns; // list of data column descriptors in the header
QString catalog_name;
+ char delimiter;
QTextStream stream(&ccFile);
// TODO(spacetime) : Decide appropriate number of lines to be read
@@ -325,7 +328,7 @@ bool CatalogDB::AddCatalogContents(const QString& fname) {
*/
if (lines.size() < 1 ||
- !ParseCatalogInfoToDB(lines, columns, catalog_name)) {
+ !ParseCatalogInfoToDB(lines, columns, catalog_name, delimiter)) {
kWarning() << "Issue in catalog file header: " << filename;
ccFile.close();
return false;
@@ -344,7 +347,7 @@ bool CatalogDB::AddCatalogContents(const QString& fname) {
buildParserSequence(columns);
// Part 2) Read file and store into DB
- KSParser catalog_text_parser(filename, '#', sequence, ' ');
+ KSParser catalog_text_parser(filename, '#', sequence, delimiter);
QHash<QString, QVariant> row_content;
while (catalog_text_parser.HasNextRow()) {
@@ -363,7 +366,8 @@ bool CatalogDB::AddCatalogContents(const QString& fname) {
bool CatalogDB::ParseCatalogInfoToDB(const QStringList &lines,
QStringList &columns,
- QString &catalog_name) {
+ QString &catalog_name,
+ char &delimiter) {
/*
* Most of the code here is by Thomas Kabelmann from customcatalogcomponent.cpp
* (now catalogcomponent.cpp)
@@ -386,12 +390,14 @@ bool CatalogDB::ParseCatalogInfoToDB(const QStringList &lines,
catFluxFreq.clear();
catFluxUnit.clear();
catEpoch = 0.;
+ delimiter = ' ';
int i = 0;
for (; i < lines.size(); ++i) {
QString d(lines.at(i)); // current data line
if (d.left(1) != "#") break; // no longer in header!
+ int idelimiter = d.indexOf("# Delimiter: ");
int iname = d.indexOf("# Name: ");
int iprefix = d.indexOf("# Prefix: ");
int icolor = d.indexOf("# Color: ");
@@ -399,7 +405,17 @@ bool CatalogDB::ParseCatalogInfoToDB(const QStringList &lines,
int ifluxfreq = d.indexOf("# Flux Frequency: ");
int ifluxunit = d.indexOf("# Flux Unit: ");
- if (iname == 0) { // line contains catalog name
+ if (idelimiter == 0) { // line contains delimiter
+ idelimiter = d.indexOf(":") + 2;
+ if (delimiter == '\0') {
+ delimiter = d.mid(idelimiter).at(0).toAscii();
+ } else { // duplicate name in header
+ if (showerrs)
+ errs.append(i18n("Parsing header: ") +
+ i18n("Extra Delimiter field in header: %1."
+ " Will be ignored", d.mid(idelimiter)));
+ }
+ } else if (iname == 0) { // line contains catalog name
iname = d.indexOf(":")+2;
if (catalog_name.isEmpty()) {
catalog_name = d.mid(iname);
diff --git a/datahandlers/catalogdb.h b/datahandlers/catalogdb.h
index 21b4b7a..e79252b 100644
--- a/datahandlers/catalogdb.h
+++ b/datahandlers/catalogdb.h
@@ -139,10 +139,12 @@ class CatalogDB {
*
* @param lines List of lines to use for extraction of details
* @param Columns Stores the read Columns in this list
+ * @param catalog_name Name retrieved from file header
+ * @param delimiter Delimeter retrieved from file header
* @return bool
**/
bool ParseCatalogInfoToDB(const QStringList &lines, QStringList &columns,
- QString &catalog_name);
+ QString &catalog_name, char &delimiter);
/**
* @brief Add the catalog with given details into the database
diff --git a/kstars/dialogs/addcatdialog.cpp b/kstars/dialogs/addcatdialog.cpp
index f885120..772cfd2 100644
--- a/kstars/dialogs/addcatdialog.cpp
+++ b/kstars/dialogs/addcatdialog.cpp
@@ -140,8 +140,10 @@ bool AddCatDialog::validateDataFile() {
QString AddCatDialog::writeCatalogHeader() {
QString name = ( acd->CatalogName->text().isEmpty() ? i18n("Custom") : acd->CatalogName->text() );
QString pre = ( acd->Prefix->text().isEmpty() ? "CC" : acd->Prefix->text() );
+ char delimiter = ( acd->CSVButton->isChecked() ? ',' : ' ' );
- QString h = QString("# Name: %1\n").arg( name );
+ QString h = QString("# Delimiter: %1\n").arg( delimiter );
+ h += QString("# Name: %1\n").arg( name );
h += QString("# Prefix: %1\n").arg( pre );
h += QString("# Color: %1\n").arg( acd->ColorButton->color().name() );
h += QString("# Epoch: %1\n").arg( acd->Epoch->value() );
diff --git a/kstars/dialogs/addcatdialog.ui b/kstars/dialogs/addcatdialog.ui
index b738755..873dc8f 100644
--- a/kstars/dialogs/addcatdialog.ui
+++ b/kstars/dialogs/addcatdialog.ui
@@ -226,6 +226,9 @@
</item>
<item>
<widget class="QRadioButton" name="SpaceButton">
+ <property name="checked">
+ <bool>true</bool>
+ </property>
<property name="text">
<string>Space Delimited</string>
</property>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic