1 /***************************************************************************
2              unitmanager  -
3                              -------------------
4     begin                : 2004-05-05
5     copyright            : (C) 2004 by Klaas Freitag
6     email                : freitag@kde.org
7  ***************************************************************************/
8 
9 /***************************************************************************
10  *                                                                         *
11  *   This program is free software; you can redistribute it and/or modify  *
12  *   it under the terms of the GNU General Public License as published by  *
13  *   the Free Software Foundation; either version 2 of the License, or     *
14  *   (at your option) any later version.                                   *
15  *                                                                         *
16  ***************************************************************************/
17 
18 #include <QSqlQuery>
19 
20 // include files for KDE
21 #include <kraftdb.h>
22 #include <QDebug>
23 
24 #include "unitmanager.h"
25 #include "einheit.h"
26 
Q_GLOBAL_STATIC(UnitManager,mSelf)27 Q_GLOBAL_STATIC(UnitManager, mSelf)
28 
29 UnitManager* UnitManager::self()
30 {
31   return mSelf;
32 }
33 
UnitManager()34 UnitManager::UnitManager( )
35 {
36 
37 }
38 
load()39 void UnitManager::load()
40 {
41   QSqlQuery q( "SELECT unitID, unitShort, unitLong, unitPluShort, unitPluLong FROM units");
42 
43   while( q.next())
44   {
45     int unitID = q.value(0).toInt();
46     Einheit e( unitID,
47                q.value(1).toString(),
48                q.value(2).toString(),
49                q.value(3).toString(),
50                q.value(4).toString() );
51     mUnits.append(e);
52   }
53 }
54 
nextFreeId()55 int UnitManager::nextFreeId()
56 {
57     int id = 0;
58     if( mUnits.size() == 0 ) {
59         load();
60     }
61     foreach( Einheit u, mUnits ) {
62         if( u.id() > id ) {
63             id = u.id();
64         }
65     }
66     return id+1;
67 }
68 
allUnits()69 QStringList UnitManager::allUnits()
70 {
71   QStringList list;
72 
73   if(mUnits.size() == 0 ) load();
74   foreach( Einheit e, mUnits ) {
75     QString uSing = e.einheitSingular();
76     if( !uSing.isEmpty())
77       list << uSing;
78   }
79   return list;
80 }
81 
getPauschUnit()82 Einheit UnitManager::getPauschUnit()
83 {
84     int id = getUnitIDSingular(QStringLiteral("pausch."));
85     if (id > -1)
86         return getUnit(id);
87     return Einheit();
88 }
89 
getUnit(int id)90 Einheit UnitManager::getUnit( int id )
91 {
92   if( mUnits.size() == 0 ) load();
93 
94   // qDebug() << "Searching unit ID " << id << endl;
95   foreach( Einheit e, mUnits ) {
96     if( e.id() == id ) return e;
97   }
98   return Einheit();
99 }
100 
getUnitIDSingular(const QString & einheitStr)101 int UnitManager::getUnitIDSingular( const QString& einheitStr )
102 {
103   if( mUnits.size() == 0 ) load();
104 
105   foreach( Einheit tmp, mUnits ) {
106 
107     if( tmp.einheitSingular() == einheitStr ||
108         tmp.einheitPlural()   == einheitStr ) {
109       // qDebug() << "Thats it, returning " << tmp.id() << endl;
110       return tmp.id();
111     }
112   }
113   return -1;
114 }
115 
~UnitManager()116 UnitManager::~UnitManager( )
117 {
118 }
119 
120 /* END */
121 
122 
123