• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdeedu API Reference
  • KDE Home
  • Contact Us
 

marble

  • sources
  • kde-4.12
  • kdeedu
  • marble
  • tools
  • osm-sisyphus
jobmanager.cpp
Go to the documentation of this file.
1 //
2 // This file is part of the Marble Virtual Globe.
3 //
4 // This program is free software licensed under the GNU LGPL. You can
5 // find a copy of this license in LICENSE.txt in the top directory of
6 // the source code.
7 //
8 // Copyright 2011 Dennis Nienhüser <earthwings@gentoo.org>
9 //
10 
11 #include "jobmanager.h"
12 
13 #include <QTimer>
14 #include <QFile>
15 #include <QTextStream>
16 #include <QDebug>
17 #include <QProcess>
18 #include <QDomDocument>
19 
20 JobManager::JobManager(QObject *parent) :
21  QObject(parent)
22 {
23  QDir temp = QDir(QDir::tempPath());
24 
25  m_monavSettings = QFileInfo(temp, "monav_settings.ini");
26  QFile settingsFile(m_monavSettings.absoluteFilePath());
27  settingsFile.open(QFile::WriteOnly | QFile::Truncate);
28  QTextStream settingsStream(&settingsFile);
29 
30  settingsStream << "[General]\npackaging=false\ndictionarySize=16384\nblockSize=16384\n";
31  settingsStream << "importer=OpenStreetMap Importer\nrouter=Contraction Hierarchies";
32  settingsStream << "renderer=Mapnik Renderer\ngpsLookup=GPS Grid\naddressLookup=Unicode Tournament Trie\n\n";
33  settingsStream << "[OSM%20Importer]\nlanguages=name\nspeedProfile=:/speed profiles/motorcar.spp\n\n";
34  settingsStream << "[ContractionHierarchies]\nblockSize=12\n";
35  settingsFile.close();
36 }
37 
38 void JobManager::run()
39 {
40  update();
41 }
42 
43 void JobManager::setRegionsFile(const QString &filename)
44 {
45  QFile file(filename);
46  file.open(QFile::ReadOnly);
47 
48  QDomDocument xml;
49  if ( !xml.setContent( &file ) ) {
50  qDebug() << "Cannot parse xml file with regions.";
51  return;
52  }
53 
54  QDomElement root = xml.documentElement();
55  QDomNodeList regions = root.elementsByTagName( "region" );
56  for ( unsigned int i = 0; i < regions.length(); ++i ) {
57  Region region;
58  QDomNode node = regions.item( i );
59  if (!node.namedItem("continent").isNull()) {
60  region.setContinent(node.namedItem("continent").toElement().text());
61  }
62  if (!node.namedItem("country").isNull()) {
63  region.setCountry(node.namedItem("country").toElement().text());
64  }
65  if (!node.namedItem("name").isNull()) {
66  region.setName(node.namedItem("name").toElement().text());
67  }
68  if (!node.namedItem("id").isNull()) {
69  region.setId(node.namedItem("id").toElement().text());
70  }
71  if (!node.namedItem("path").isNull()) {
72  region.setPath(node.namedItem("path").toElement().text());
73  }
74  if (!node.namedItem("pbf").isNull()) {
75  region.setPbfFile(node.namedItem("pbf").toElement().text());
76  }
77  if (!node.namedItem("transport").isNull()) {
78  QStringList input = node.namedItem("transport").toElement().text().split(',', QString::SkipEmptyParts);
79  foreach( const QString &value, input ) {
80  if (!region.continent().isEmpty() && !region.name().isEmpty()) {
81  PendingJob job;
82  job.m_region = region;
83  job.m_transport = value.trimmed();
84  if (job.m_transport == "Motorcar") {
85  job.m_profile = "motorcar";
86  m_pendingJobs << job;
87  } else if (job.m_transport == "Bicycle") {
88  job.m_profile = "bicycle";
89  m_pendingJobs << job;
90  } else if (job.m_transport == "Pedestrian") {
91  job.m_profile = "foot";
92  m_pendingJobs << job;
93  } else {
94  qDebug() << "Invalid transport type " << job.m_transport
95  << " in .xml file, ignoring. Valid types are Motorcar, Bicycle and Pedestrian.";
96  }
97  }
98  }
99  }
100  }
101 }
102 
103 void JobManager::setResumeId(const QString &resumeId)
104 {
105  m_resumeId = resumeId;
106 }
107 
108 void JobManager::setJobParameters(const JobParameters &parameters)
109 {
110  m_jobParameters = parameters;
111 }
112 
113 void JobManager::update()
114 {
115  bool resume = m_resumeId.isEmpty();
116  foreach(const PendingJob &job, m_pendingJobs) {
117  resume = resume || job.m_region.id() == m_resumeId;
118  if (resume) {
119  addJob(job);
120  }
121  }
122 
123  QTimer::singleShot(1000*60*60*24, this, SLOT(update()));
124 }
125 
126 void JobManager::addJob(const PendingJob &job)
127 {
128  Job* countryJob = new Job(job.m_region, m_jobParameters);
130  countryJob->setTransport(job.m_transport);
131  countryJob->setProfile(job.m_profile);
132  countryJob->setMonavSettings(m_monavSettings.absoluteFilePath());
133  m_queue.addJob(countryJob);
134 }
135 
136 #include "jobmanager.moc"
JobManager::setRegionsFile
void setRegionsFile(const QString &filename)
Definition: jobmanager.cpp:43
Job::setTransport
void setTransport(const QString &transport)
Definition: job.cpp:40
Job::setProfile
void setProfile(const QString &profile)
Definition: job.cpp:50
Job::setMonavSettings
void setMonavSettings(const QString &filename)
Definition: job.cpp:55
jobmanager.h
Region::setName
void setName(QString arg)
Definition: region.cpp:35
Job
Definition: job.h:21
JobManager::setJobParameters
void setJobParameters(const JobParameters &parameters)
Definition: jobmanager.cpp:108
JobManager::setResumeId
void setResumeId(const QString &resumeId)
Definition: jobmanager.cpp:103
Region::continent
QString continent
Definition: region.h:20
Region::setPbfFile
void setPbfFile(const QString &pbfFile)
Definition: region.cpp:65
JobManager::JobManager
JobManager(QObject *parent=0)
Definition: jobmanager.cpp:20
QObject
Region
Definition: region.h:18
PendingJob::m_region
Region m_region
Definition: jobmanager.h:22
JobManager::run
void run()
Definition: jobmanager.cpp:38
JobParameters
Definition: jobparameters.h:16
PendingJob::m_transport
QString m_transport
Definition: jobmanager.h:23
Region::setPath
void setPath(const QString &path)
Definition: region.cpp:75
PendingJob
Definition: jobmanager.h:21
Region::setCountry
void setCountry(QString arg)
Definition: region.cpp:45
Region::setId
void setId(const QString &id)
Definition: region.cpp:55
Region::id
QString id
Definition: region.h:24
JobQueue::addJob
void addJob(Job *job)
Definition: jobqueue.cpp:23
PendingJob::m_profile
QString m_profile
Definition: jobmanager.h:24
Region::setContinent
void setContinent(QString arg)
Definition: region.cpp:40
Region::name
QString name
Definition: region.h:22
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:38:50 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

marble

Skip menu "marble"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdeedu API Reference

Skip menu "kdeedu API Reference"
  • Analitza
  •     lib
  • kalgebra
  • kalzium
  •   libscience
  • kanagram
  • kig
  •   lib
  • klettres
  • kstars
  • libkdeedu
  •   keduvocdocument
  • marble
  • parley
  • rocs
  •   App
  •   RocsCore
  •   VisualEditor
  •   stepcore

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal