File indexing completed on 2024-04-14 14:11:13

0001 /*
0002     SPDX-FileCopyrightText: 2009 Prakash Mohan <prakash.mohan@kdemail.net>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include "oal/oal.h"
0010 
0011 #include <QString>
0012 #include <QXmlStreamReader>
0013 #include <QXmlStreamWriter>
0014 
0015 #include "dms.h"
0016 #include "skyobjects/skyobject.h"
0017 #include "oal/observer.h"
0018 #include "oal/site.h"
0019 #include "oal/session.h"
0020 #include "oal/scope.h"
0021 #include "oal/dslrlens.h"
0022 #include "oal/eyepiece.h"
0023 #include "oal/filter.h"
0024 #include "oal/lens.h"
0025 #include "oal/observation.h"
0026 
0027 /**
0028  * @class Log
0029  *
0030  * Implementation of <a href="https://code.google.com/p/openastronomylog/">Open Astronomy Log</a> (OAL) XML specifications to record observation logs.
0031  */
0032 class OAL::Log
0033 {
0034     public:
0035         ~Log();
0036         QString writeLog(bool native = true);
0037         void writeBegin();
0038         void writeGeoDate();
0039         void writeObservers();
0040         void writeSites();
0041         void writeSessions();
0042         void writeTargets();
0043         void writeScopes();
0044         void writeDSLRLenses();
0045         void writeEyepieces();
0046         void writeLenses();
0047         void writeFilters();
0048         void writeImagers();
0049         void writeObservations();
0050         inline QList<QSharedPointer<SkyObject>> &targetList()
0051         {
0052             return m_targetList;
0053         }
0054         inline QList<OAL::Scope *> *scopeList()
0055         {
0056             return &m_scopeList;
0057         }
0058         inline QList<OAL::DSLRLens *> *dslrLensList()
0059         {
0060             return &m_dslrLensList;
0061         }
0062         inline QList<OAL::Site *> *siteList()
0063         {
0064             return &m_siteList;
0065         }
0066         inline QList<OAL::Session *> *sessionList()
0067         {
0068             return &m_sessionList;
0069         }
0070         inline QList<OAL::Eyepiece *> *eyepieceList()
0071         {
0072             return &m_eyepieceList;
0073         }
0074         inline QList<OAL::Lens *> *lensList()
0075         {
0076             return &m_lensList;
0077         }
0078         inline QList<OAL::Filter *> *filterList()
0079         {
0080             return &m_filterList;
0081         }
0082         inline QList<OAL::Observation *> *observationList()
0083         {
0084             return &m_observationList;
0085         }
0086         inline QList<OAL::Observer *> *observerList()
0087         {
0088             return &m_observerList;
0089         }
0090         void writeObserver(OAL::Observer *o);
0091         void writeSite(OAL::Site *s);
0092         void writeSession(OAL::Session *s);
0093         void writeTarget(SkyObject *o);
0094         void writeScope(OAL::Scope *s);
0095         void writeDSLRLenses(OAL::DSLRLens *s);
0096         void writeEyepiece(OAL::Eyepiece *ep);
0097         void writeLens(OAL::Lens *l);
0098         void writeFilter(OAL::Filter *f);
0099         void writeObservation(OAL::Observation *o);
0100         //        void writeImager();
0101         void writeEnd();
0102         void readBegin(QString input);
0103         void readLog();
0104         void readUnknownElement();
0105         void readTargets();
0106         void readObservers();
0107         void readSites();
0108         void readSessions();
0109         void readScopes();
0110         void readDSLRLenses();
0111         void readEyepieces();
0112         void readLenses();
0113         void readFilters();
0114         void readObservation(const QString &id);
0115         void readTarget();
0116         void readSite(const QString &id);
0117         void readSession(const QString &id, const QString &lang);
0118         void readAll();
0119         SkyPoint readPosition(bool &Ok);
0120         void readGeoDate();
0121         QString readResult();
0122         OAL::Observer *findObserverByName(const QString &name);
0123         OAL::Observer *findObserverById(const QString &id);
0124         OAL::Site *findSiteByName(const QString &name);
0125         OAL::Site *findSiteById(const QString &id);
0126         OAL::Session *findSessionByName(const QString &id);
0127         OAL::Scope *findScopeByName(const QString &name);
0128         OAL::Scope *findScopeById(const QString &id);
0129         OAL::DSLRLens *findDSLRLensByName(const QString &name);
0130         OAL::DSLRLens *findDSLRLensById(const QString &id);
0131         OAL::Eyepiece *findEyepieceById(const QString &id);
0132         OAL::Lens *findLensById(const QString &id);
0133         OAL::Filter *findFilterById(const QString &id);
0134         OAL::Eyepiece *findEyepieceByName(const QString &name);
0135         OAL::Lens *findLensByName(const QString &name);
0136         OAL::Filter *findFilterByName(const QString &name);
0137         OAL::Observation *findObservationByName(const QString &name);
0138         QHash<QString, QTime> timeHash() const
0139         {
0140             return TimeHash;
0141         }
0142         KStarsDateTime dateTime() const
0143         {
0144             return dt;
0145         }
0146         GeoLocation *geoLocation()
0147         {
0148             return geo;
0149         }
0150         inline QString writtenOutput() const
0151         {
0152             return output;
0153         }
0154 
0155     private:
0156         QList<QSharedPointer<SkyObject>> m_targetList;
0157         QList<OAL::Observer *> m_observerList;
0158         QList<OAL::Eyepiece *> m_eyepieceList;
0159         QList<OAL::Lens *> m_lensList;
0160         QList<OAL::Filter *> m_filterList;
0161         QList<OAL::Site *> m_siteList;
0162         QList<OAL::Session *> m_sessionList;
0163         QList<OAL::Scope *> m_scopeList;
0164         QList<OAL::DSLRLens *> m_dslrLensList;
0165         QList<OAL::Observation *> m_observationList;
0166         QString output;
0167         bool native { false };
0168         dms ra, dec;
0169         QXmlStreamWriter *writer { nullptr };
0170         QXmlStreamReader *reader { nullptr };
0171         QHash<QString, QTime> TimeHash;
0172         KStarsDateTime dt;
0173         GeoLocation *geo { nullptr };
0174 };