32 writer =
new QXmlStreamWriter(&output);
33 writer->setAutoFormatting(
true );
34 writer->writeStartDocument();
35 writer->writeNamespace(
"http://observation.sourceforge.net/openastronomylog",
"oal" );
36 writer->writeNamespace(
"http://www.w3.org/2001/XMLSchema-instance",
"xsi" );
37 writer->writeNamespace(
"http://observation.sourceforge.net/openastronomylog oal20.xsd",
"schemaLocation" );
38 writer->writeStartElement(
"oal:observations");
39 writer->writeAttribute(
"version",
"2.0");
62 writer->writeEndDocument();
67 writer->writeStartElement(
"observers" );
70 writer->writeEndElement();
74 writer->writeStartElement(
"sites");
77 writer->writeEndElement();
81 writer->writeStartElement(
"sessions");
84 writer->writeEndElement();
88 writer->writeStartElement(
"targets");
92 writer->writeEndElement();
96 writer->writeStartElement(
"scopes");
99 writer->writeEndElement();
103 writer->writeStartElement(
"eyepieces");
106 writer->writeEndElement();
110 writer->writeStartElement(
"lenses");
113 writer->writeEndElement();
117 writer->writeStartElement(
"filters");
120 writer->writeEndElement();
124 writer->writeStartElement(
"imagers");
125 writer->writeEndElement();
130 writeObservation( o );
134 writer->writeStartElement(
"target" );
135 writer->writeAttribute(
"id", o->
name().remove(
' ' ) );
138 writer->writeAttribute(
"type", o->
typeName() );
140 switch( o->
type() ) {
141 case 0: typeString =
"oal:starTargetType";
break;
142 case 1: typeString =
"oal:starTargetType";
break;
143 case 2: typeString =
"oal:PlanetTargetType";
break;
144 case 3: typeString =
"oal:deepSkyOC";
break;
145 case 4: typeString =
"oal:deepSkyGC";
break;
146 case 5: typeString =
"oal:deepSkyGN";
break;
147 case 6: typeString =
"oal:deepSkyPN";
break;
148 case 8: typeString =
"oal:deepSkyGX";
break;
149 case 9: typeString =
"oal:CometTargetType";
break;
150 case 12: typeString =
"oal:MoonTargetType";
break;
151 case 13: typeString =
"oal:deepSkyAS";
break;
152 case 14: typeString =
"oal:deepSkyCG";
break;
153 case 15: typeString =
"oal:deepSkyDN";
break;
154 case 16: typeString =
"oal:deepSkyQS";
break;
155 case 17: typeString =
"oal:deepSkyMS";
break;
156 default: typeString =
"oal:deepSkyNA";
break;
158 writer->writeAttribute(
"xsi:type", typeString );
160 writer->writeStartElement(
"datasource" );
161 writer->writeCDATA(
"KStars" );
162 writer->writeEndElement();
163 writer->writeStartElement(
"name");
164 writer->writeCDATA( o->
name() );
165 writer->writeEndElement();
166 writer->writeStartElement(
"position" );
167 writer->writeStartElement(
"ra" );
168 writer->writeAttribute(
"unit",
"rad" );
169 writer->writeCharacters( QString::number( o->
ra().radians() ) );
170 writer->writeEndElement();
171 writer->writeStartElement(
"dec" );
172 writer->writeAttribute(
"unit",
"rad" );
173 writer->writeCharacters( QString::number( o->
dec().radians() ) );
174 writer->writeEndElement();
175 writer->writeEndElement();
176 if( native && ! ks->observingList()->getTime( o ).isEmpty() ) {
177 writer->writeStartElement(
"time");
178 writer->writeCDATA( ks->observingList()->getTime( o ) );
179 writer->writeEndElement();
181 writer->writeStartElement(
"constellation" );
184 writer->writeEndElement();
185 writer->writeStartElement(
"notes" );
186 writer->writeCDATA( o->
notes() );
187 writer->writeEndElement();
188 writer->writeEndElement();
192 writer->writeStartElement(
"observer" );
193 writer->writeAttribute(
"id", o->
id() );
194 writer->writeStartElement(
"name" );
195 writer->writeCDATA( o->
name() );
196 writer->writeEndElement();
197 writer->writeStartElement(
"surname" );
198 writer->writeCDATA( o->
surname() );
199 writer->writeEndElement();
200 writer->writeStartElement(
"contact" );
201 writer->writeCDATA( o->
contact() );
202 writer->writeEndElement();
203 writer->writeEndElement();
206 writer->writeStartElement(
"site" );
207 writer->writeAttribute(
"id", s->
id() );
208 writer->writeStartElement(
"name" );
209 writer->writeCDATA( s->
name() );
210 writer->writeEndElement();
211 writer->writeStartElement(
"latitude" );
212 writer->writeAttribute(
"unit", s->
latUnit() );
213 writer->writeCharacters( QString::number( s->
latitude() ) );
214 writer->writeStartElement(
"longitude" );
215 writer->writeAttribute(
"unit", s->
lonUnit() );
216 writer->writeCharacters( QString::number( s->
longitude() ) );
217 writer->writeEndElement();
218 writer->writeEndElement();
221 writer->writeStartElement(
"session" );
222 writer->writeAttribute(
"id", s->
id() );
223 writer->writeStartElement(
"begin" );
224 writer->writeCharacters( s->
begin().date().toString(
"yyyy-MM-dd" ) +
'T' + s->
begin().time().toString(
"hh:mm:ss" ) );
225 writer->writeEndElement();
226 writer->writeStartElement(
"end" );
227 writer->writeCharacters( s->
end().date().toString(
"yyyy-MM-dd" ) +
'T' + s->
end().time().toString(
"hh:mm:ss" ) );
228 writer->writeEndElement();
229 writer->writeStartElement(
"site" );
230 writer->writeCharacters( s->
site() );
231 writer->writeEndElement();
232 writer->writeStartElement(
"weather" );
233 writer->writeCDATA( s->
weather() );
234 writer->writeEndElement();
235 writer->writeStartElement(
"equipment" );
237 writer->writeEndElement();
238 writer->writeStartElement(
"comments" );
239 writer->writeCDATA( s->
comments() );
240 writer->writeEndElement();
241 writer->writeEndElement();
244 writer->writeStartElement(
"scope" );
245 writer->writeAttribute(
"id", s->
id() );
246 writer->writeStartElement(
"model" );
247 writer->writeCDATA( s->
model() );
248 writer->writeEndElement();
249 writer->writeStartElement(
"type" );
250 writer->writeCDATA( s->
type().at(0) );
251 writer->writeEndElement();
252 writer->writeStartElement(
"vendor" );
253 writer->writeCDATA( s->
vendor() );
254 writer->writeEndElement();
255 if (s->
driver() != i18n(
"None"))
257 writer->writeStartElement(
"driver" );
258 writer->writeCharacters( s->
driver());
259 writer->writeEndElement();
261 writer->writeStartElement(
"aperture" );
262 writer->writeCharacters( QString::number( s->
aperture() ) );
263 writer->writeEndElement();
264 writer->writeStartElement(
"focalLength" );
265 writer->writeCharacters( QString::number( s->
focalLength() ) );
266 writer->writeEndElement();
267 writer->writeEndElement();
272 writer->writeStartElement(
"eyepiece" );
273 writer->writeAttribute(
"id", ep->
id() );
274 writer->writeStartElement(
"model" );
275 writer->writeCDATA( ep->
model() );
276 writer->writeEndElement();
277 writer->writeStartElement(
"vendor" );
278 writer->writeCDATA( ep->
vendor() );
279 writer->writeEndElement();
280 writer->writeStartElement(
"focalLength" );
281 writer->writeCharacters( QString::number( ep->
focalLength() ) );
282 writer->writeEndElement();
283 writer->writeStartElement(
"apparantFOV" );
284 writer->writeAttribute(
"unit", ep->
fovUnit() );
285 writer->writeCharacters( QString::number( ep->
appFov() ) );
286 writer->writeEndElement();
287 writer->writeEndElement();
290 writer->writeStartElement(
"lens" );
291 writer->writeAttribute(
"id", l->
id() );
292 writer->writeStartElement(
"model" );
293 writer->writeCDATA( l->
model() );
294 writer->writeEndElement();
295 writer->writeStartElement(
"vendor" );
296 writer->writeCDATA( l->
vendor() );
297 writer->writeEndElement();
298 writer->writeStartElement(
"factor" );
299 writer->writeCharacters( QString::number( l->
factor() ) );
300 writer->writeEndElement();
301 writer->writeEndElement();
305 writer->writeStartElement(
"filter" );
306 writer->writeAttribute(
"id", f->
id() );
307 writer->writeStartElement(
"model" );
308 writer->writeCDATA( f->
model() );
309 writer->writeEndElement();
310 writer->writeStartElement(
"vendor" );
311 writer->writeCDATA( f->
vendor() );
312 writer->writeEndElement();
313 writer->writeStartElement(
"type" );
314 writer->writeCDATA( f->
type() );
315 writer->writeEndElement();
316 writer->writeStartElement(
"color" );
317 writer->writeCDATA( f->
color() );
318 writer->writeEndElement();
319 writer->writeEndElement();
323 writer->writeStartElement(
"observation" );
324 writer->writeStartElement(
"observer" );
325 writer->writeCharacters( o->
observer() );
326 writer->writeEndElement();
327 writer->writeStartElement(
"site" );
328 writer->writeCharacters( o->
site() );
329 writer->writeEndElement();
330 writer->writeStartElement(
"session" );
331 writer->writeCharacters( o->
session() );
332 writer->writeEndElement();
333 writer->writeStartElement(
"target" );
334 writer->writeCharacters( o->
target().remove(
' ' ) );
335 writer->writeEndElement();
336 writer->writeStartElement(
"begin" );
337 writer->writeCharacters( o->
begin().date().toString(
"yyyy-MM-dd" ) +
'T' + o->
begin().time().toString(
"hh:mm:ss" ) );
338 writer->writeEndElement();
339 writer->writeStartElement(
"faintestStar" );
340 writer->writeCharacters( QString::number( o->
faintestStar() ) );
341 writer->writeEndElement();
342 writer->writeStartElement(
"seeing" );
343 writer->writeCharacters( QString::number( o->
seeing() ) );
344 writer->writeEndElement();
345 writer->writeStartElement(
"scope" );
346 writer->writeCharacters( o->
scope() );
347 writer->writeEndElement();
348 writer->writeStartElement(
"eyepiece" );
349 writer->writeCharacters( o->
eyepiece() );
350 writer->writeEndElement();
351 writer->writeStartElement(
"lens" );
352 writer->writeCharacters( o->
lens() );
353 writer->writeEndElement();
354 writer->writeStartElement(
"filter" );
355 writer->writeCharacters( o->
filter() );
356 writer->writeEndElement();
357 writer->writeStartElement(
"result" );
358 writer->writeAttribute(
"xsi:type",
"oal:findingsType" );
359 writer->writeAttribute(
"lang", o->
lang() );
360 writer->writeStartElement(
"description" );
361 writer->writeCDATA( o->
result() );
362 writer->writeEndElement();
363 writer->writeEndElement();
364 writer->writeEndElement();
367 writer->writeStartElement(
"geodate" );
368 writer->writeStartElement(
"name" );
369 writer->writeCDATA( ks->observingList()->geoLocation()->name() );
370 writer->writeEndElement();
371 writer->writeStartElement(
"province" );
372 writer->writeCDATA( ks->observingList()->geoLocation()->province() );
373 writer->writeEndElement();
374 writer->writeStartElement(
"country" );
375 writer->writeCDATA( ks->observingList()->geoLocation()->country() );
376 writer->writeEndElement();
377 writer->writeStartElement(
"date" );
378 writer->writeCDATA( ks->observingList()->dateTime().date().toString(
"ddMMyyyy" ) );
379 writer->writeEndElement();
380 writer->writeEndElement();
383 reader =
new QXmlStreamReader( input );
385 while( ! reader->atEnd() ) {
387 if( reader->isStartElement() ) {
395 while( ! reader->atEnd() ) {
398 if( reader->isEndElement() )
401 if( reader->isStartElement() )
402 readUnknownElement();
407 while( ! reader->atEnd() ) {
410 if( reader->isEndElement() )
413 if( reader->isStartElement() ) {
414 if( reader->name() ==
"targets" )
416 else if( reader->name() ==
"sites" )
418 else if( reader->name() ==
"sessions" )
420 else if( reader->name() ==
"observation" )
421 readObservation( reader->attributes().value(
"id" ).toString() );
422 else if( reader->name() ==
"geodate" )
425 readUnknownElement();
431 while( ! reader->atEnd() ) {
434 if( reader->isEndElement() )
437 if( reader->isStartElement() ) {
438 if( reader->name() ==
"target" )
441 readUnknownElement();
451 while( ! reader->atEnd() ) {
454 if( reader->isEndElement() )
457 if( reader->isStartElement() ) {
458 if( reader->name() ==
"site" )
459 readSite( reader->attributes().value(
"id" ).toString() );
461 readUnknownElement();
467 while( ! reader->atEnd() ) {
470 if( reader->isEndElement() )
473 if( reader->isStartElement() ) {
474 if( reader->name() ==
"session" )
475 readSession( reader->attributes().value(
"id" ).toString(), reader->attributes().value(
"lang" ).toString() );
477 readUnknownElement();
500 QString name, time, notes;
501 while( ! reader->atEnd() ) {
504 if( reader->isEndElement() )
507 if( reader->isStartElement() ) {
508 if( reader->name() ==
"name" ) {
509 name = reader->readElementText();
510 if( name !=
"star" ) {
511 o = ks->data()->objectNamed( name );
512 if( ! o ) o = ks->data()->skyComposite()->findStarByGenetiveName( name );
513 if( o ) targetList()->append( o );
515 }
else if( reader->name() ==
"time" ) {
516 time = reader->readElementText();
518 TimeHash.insert( o->
name(), QTime::fromString( time,
"h:mm:ss AP" ) );
519 }
else if( reader->name() ==
"notes" ) {
520 notes = reader->readElementText();
531 readUnknownElement();
538 QString name, latUnit, lonUnit, lat, lon;
539 while( ! reader->atEnd() ) {
542 if( reader->isEndElement() )
545 if( reader->isStartElement() ) {
546 if( reader->name() ==
"name" ) {
547 name = reader->readElementText();
548 }
else if( reader->name() ==
"latitude" ) {
549 lat = reader->readElementText() ;
550 latUnit = reader->attributes().value(
"unit" ).toString();
551 }
else if( reader->name() ==
"longitude" ) {
552 lon = reader->readElementText() ;
553 lonUnit = reader->attributes().value(
"unit" ).toString();
555 readUnknownElement();
558 OAL::Site *o=
new OAL::Site(
id, name, lat.toDouble(), latUnit, lon.toDouble(), lonUnit );
559 m_siteList.append( o );
563 QString site, weather, equipment, comments, begin, end;
565 while( ! reader->atEnd() ) {
568 if( reader->isEndElement() )
571 if( reader->isStartElement() ) {
572 if( reader->name() ==
"site" ) {
573 site = reader->readElementText();
574 }
else if( reader->name() ==
"begin" ) {
575 begin = reader->readElementText() ;
577 }
else if( reader->name() ==
"end" ) {
578 end = reader->readElementText() ;
580 }
else if( reader->name() ==
"weather" ) {
581 weather = reader->readElementText() ;
582 }
else if( reader->name() ==
"equipment" ) {
583 equipment = reader->readElementText() ;
584 }
else if( reader->name() ==
"comments" ) {
585 comments = reader->readElementText() ;
587 readUnknownElement();
591 m_sessionList.append( o );
596 while( ! reader->atEnd() ) {
599 if( reader->isEndElement() )
602 if( reader->isStartElement() ) {
603 if( reader->name() ==
"ra" )
604 kDebug() << reader->readElementText() << reader->attributes().value(
"unit" );
605 else if( reader->name() ==
"dec" )
606 kDebug() << reader->readElementText() << reader->attributes().value(
"unit" );
608 readUnknownElement();
614 QString observer, site, session, target, faintestStar, seeing, scope, eyepiece, lens, filter, result, lang;
616 while( ! reader->atEnd() ) {
618 if( reader->isEndElement() )
620 if( reader->isStartElement() ) {
621 if( reader->name() ==
"observer" )
622 observer = reader->readElementText();
623 else if( reader->name() ==
"site" )
624 site = reader->readElementText();
625 else if( reader->name() ==
"session" )
626 session = reader->readElementText();
627 else if( reader->name() ==
"target" )
628 target = reader->readElementText();
629 else if( reader->name() ==
"begin" )
630 begin.
fromString( reader->readElementText() );
631 else if( reader->name() ==
"faintestStar" )
632 faintestStar = reader->readElementText();
633 else if( reader->name() ==
"seeing" )
634 seeing = reader->readElementText();
635 else if( reader->name() ==
"scope" )
636 scope = reader->readElementText();
637 else if( reader->name() ==
"eyepiece" )
638 eyepiece = reader->readElementText();
639 else if( reader->name() ==
"lens" )
640 lens = reader->readElementText();
641 else if( reader->name() ==
"filter" )
642 filter = reader->readElementText();
643 else if( reader->name() ==
"result" ) {
644 lang = reader->attributes().value(
"lang" ).toString();
645 result = readResult();
647 readUnknownElement();
650 OAL::Observation *o =
new OAL::Observation(
id, observer, site, session, target, begin, faintestStar.toDouble(), seeing.toDouble(), scope, eyepiece, lens, filter, result, lang );
651 m_observationList.append( o );
656 while( ! reader->atEnd() ) {
659 if( reader->isEndElement() )
661 if( reader->isStartElement() ) {
662 if( reader->name() ==
"description" )
663 result = reader->readElementText();
665 readUnknownElement();
672 QString name, province, country, date;
673 while( ! reader->atEnd() ) {
676 if( reader->isEndElement() )
679 if( reader->isStartElement() ) {
680 if( reader->name() ==
"name" )
681 name = reader->readElementText();
682 else if( reader->name() ==
"province" )
683 province = reader->readElementText();
684 else if( reader->name() ==
"country" )
685 country = reader->readElementText();
686 else if( reader->name() ==
"date" ){
687 date = reader->readElementText();
689 readUnknownElement();
692 geo = ks->data()->locationNamed( name, province, country );
693 dt.setDate( QDate::fromString( date,
"ddMMyyyy" ) );
698 if( QString(obs->
name() +
' ' + obs->
surname()) == name )
705 if( obs->
id() == id )
726 if( s->
name() == name )
761 if( s->
name() == name )
768 if( e->
name() == name )
775 if( f->
name() == name )
782 if( l->
name() == name )
void writeObservation(OAL::Observation *o)
QString writeLog(bool native=true)
static KStarsDateTime fromString(const QString &s)
OAL::Lens * findLensByName(QString name)
double faintestStar() const
void readSession(QString id, QString lang)
KStarsDateTime begin() const
static KStarsData * Instance()
void writeFilter(OAL::Filter *f)
static KStars * Instance()
void GetAllObservers(QList< OAL::Observer * > &observer_list)
Updates the passed reference of observer_list with all observers The original content of the list is ...
void writeSession(OAL::Session *s)
void GetAllFilters(QList< OAL::Filter * > &m_filterList)
Populate the reference passed with all filters.
void GetAllScopes(QList< OAL::Scope * > &m_scopeList)
updates the scope list with all scopes from database List is cleared and then filled with content...
void writeTarget(SkyObject *o)
QString equipment() const
OAL::Lens * findLensById(QString id)
OAL::Observer * findObserverById(QString id)
void readSite(QString id)
ObservingList * observingList() const
void GetAllEyepieces(QList< OAL::Eyepiece * > &m_eyepieceList)
Populate the reference passed with all eyepieces.
void GetAllLenses(QList< OAL::Lens * > &m_lensList)
Populate the reference passed with all lenses.
OAL::Site * findSiteById(QString id)
double focalLength() const
KStarsDateTime begin() const
OAL::Observation * findObservationByName(QString name)
OAL::Site * findSiteByName(QString name)
Extension of KDateTime for KStars KStarsDateTime can represent the date/time as a Julian Day...
OAL::Session * findSessionByName(QString id)
void writeSite(OAL::Site *s)
double focalLength() const
OAL::Eyepiece * findEyepieceById(QString id)
OAL::Scope * findScopeById(QString id)
void setNotes(QString _notes)
void writeLens(OAL::Lens *l)
void readUnknownElement()
void writeEyepiece(OAL::Eyepiece *ep)
OAL::Observer * findObserverByName(QString fullName)
KStarsData * data() const
OAL::Scope * findScopeByName(QString name)
OAL::Eyepiece * findEyepieceByName(QString name)
void writeObserver(OAL::Observer *o)
void writeScope(OAL::Scope *s)
virtual QString name(void) const
KStarsDateTime end() const
void readBegin(QString input)
static QString typeName(const int t)
Provides all necessary information about an object in the sky: its coordinates, name(s), type, magnitude, and QStringLists of URLs for images and webpages regarding the object.
OAL::Filter * findFilterByName(QString name)
void readObservation(QString id)
OAL::Filter * findFilterById(QString id)