~dhis2-devs-core/dhis2/dhis2-patient-tz

« back to all changes in this revision

Viewing changes to local/tz/dhis-web-caseentry-tz/src/main/java/org/hisp/dhis/reports/util/DBConnection.java

  • Committer: John Francis Mukulu
  • Date: 2011-08-09 06:36:18 UTC
  • mfrom: (4244.1.21 dhis2)
  • Revision ID: john.f.mukulu@gmail.com-20110809063618-wad1pcc9fd1mnc6k
[merge]

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
package org.hisp.dhis.reports.util;
2
 
 
3
 
import java.io.BufferedReader;
4
 
import java.io.File;
5
 
import java.io.FileNotFoundException;
6
 
import java.io.FileReader;
7
 
import java.io.IOException;
8
 
import java.sql.Connection;
9
 
import java.sql.DriverManager;
10
 
import java.util.ArrayList;
11
 
import java.util.List;
12
 
 
13
 
import javax.xml.parsers.DocumentBuilder;
14
 
import javax.xml.parsers.DocumentBuilderFactory;
15
 
 
16
 
import org.hisp.dhis.system.database.DatabaseInfo;
17
 
import org.hisp.dhis.system.database.DatabaseInfoProvider;
18
 
import org.w3c.dom.Document;
19
 
import org.w3c.dom.Element;
20
 
import org.w3c.dom.Node;
21
 
import org.w3c.dom.NodeList;
22
 
import org.xml.sax.SAXException;
23
 
import org.xml.sax.SAXParseException;
24
 
 
25
 
public class DBConnection
26
 
{
27
 
    // -------------------------------------------------------------------------
28
 
    // Dependencies
29
 
    // -------------------------------------------------------------------------
30
 
 
31
 
    private DatabaseInfoProvider provider;
32
 
 
33
 
    public void setProvider( DatabaseInfoProvider provider )
34
 
    {
35
 
        this.provider = provider;
36
 
    }
37
 
    
38
 
    // -------------------------------------------------------------------------
39
 
    // Parameters
40
 
    // -------------------------------------------------------------------------
41
 
    
42
 
    private DatabaseInfo info;
43
 
    
44
 
    public DatabaseInfo getInfo()
45
 
    {
46
 
        return info;
47
 
    }
48
 
 
49
 
    
50
 
    Connection con = null;
51
 
 
52
 
    String dbConnectionXMLFileName = System.getenv( "DHIS2_HOME" ) + File.separator
53
 
        + "db" + File.separator + "DBConnections.xml";
54
 
 
55
 
    /*
56
 
     * To retrieve the db details from xml file
57
 
     */
58
 
    public List<String> getDBDeatilsFromXML()
59
 
    {
60
 
        List<String> li = null;
61
 
        try
62
 
        {
63
 
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
64
 
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
65
 
            Document doc = docBuilder.parse( new File( dbConnectionXMLFileName ) );
66
 
 
67
 
            NodeList listOfDBConnections = doc.getElementsByTagName( "db-connection" );
68
 
 
69
 
            Node dbConnectionsNode = listOfDBConnections.item( 0 );
70
 
            li = new ArrayList<String>();
71
 
            if ( dbConnectionsNode.getNodeType() == Node.ELEMENT_NODE )
72
 
            {
73
 
                Element dbConnectionElement = (Element) dbConnectionsNode;
74
 
 
75
 
                NodeList dbUserNameList = dbConnectionElement.getElementsByTagName( "uname" );
76
 
                Element dbUserNameElement = (Element) dbUserNameList.item( 0 );
77
 
                NodeList textDBUNList = dbUserNameElement.getChildNodes();
78
 
                li.add( 0, ( textDBUNList.item( 0 )).getNodeValue().trim() );
79
 
 
80
 
                NodeList dbUserPwdList = dbConnectionElement.getElementsByTagName( "upwd" );
81
 
                Element dbUserPwdElement = (Element) dbUserPwdList.item( 0 );
82
 
                NodeList textDUPwdList = dbUserPwdElement.getChildNodes();
83
 
                li.add( 1, ( textDUPwdList.item( 0 )).getNodeValue().trim() );
84
 
 
85
 
                NodeList dbURLList = dbConnectionElement.getElementsByTagName( "dburl" );
86
 
                Element dbURLElement = (Element) dbURLList.item( 0 );
87
 
                NodeList textDBURLList = dbURLElement.getChildNodes();
88
 
                li.add( 2, ( textDBURLList.item( 0 )).getNodeValue().trim() );
89
 
 
90
 
                NodeList dbStateNameList = dbConnectionElement.getElementsByTagName( "state-name" );
91
 
                Element dbStateNameElement = (Element) dbStateNameList.item( 0 );
92
 
                NodeList textDBSNameList = dbStateNameElement.getChildNodes();
93
 
                li.add( 3, ( textDBSNameList.item( 0 )).getNodeValue().trim() );
94
 
            }// end of if clause
95
 
        }// try block end
96
 
        catch ( SAXParseException err )
97
 
        {
98
 
            System.out.println( "** Parsing error" + ", line " + err.getLineNumber() + ", uri " + err.getSystemId() );
99
 
            System.out.println( " " + err.getMessage() );
100
 
        }
101
 
        catch ( SAXException e )
102
 
        {
103
 
            Exception x = e.getException();
104
 
            ((x == null) ? e : x).printStackTrace();
105
 
        }
106
 
        catch ( Throwable t )
107
 
        {
108
 
            t.printStackTrace();
109
 
        }
110
 
        return li;
111
 
    }
112
 
 
113
 
    public List<String> getDBDeatilsFromHibernate()
114
 
    {
115
 
        String path = System.getenv( "DHIS2_HOME" ) + File.separator
116
 
            + "hibernate.properties";
117
 
        FileReader fr = null;
118
 
        BufferedReader input = null;
119
 
 
120
 
        List<String> li = new ArrayList<String>();
121
 
        try
122
 
        {
123
 
            fr = new FileReader( path );
124
 
            input = new BufferedReader( fr );
125
 
 
126
 
            String s = input.readLine();
127
 
            while ( s instanceof String )
128
 
            {
129
 
                if ( s.contains( "jdbc:mysql:" ) )
130
 
                {
131
 
                    /*
132
 
                     * String tempS2[] = s.split("/"); String dbName =
133
 
                     * "jdbc:mysql://localhost/"+tempS2[tempS2.length-1].substring(0,
134
 
                     * tempS2[tempS2.length-1].indexOf('?'));
135
 
                     * System.out.println("DBName : "+dbName); li.add(0,dbName);
136
 
                     */
137
 
                    String tempS2[] = s.split( "=" );
138
 
                    String dbName = tempS2[1].substring( 0, tempS2[1].indexOf( '?' ) ).trim();
139
 
                    //System.out.println( "DBName : " + dbName );
140
 
                    li.add( 0, dbName );
141
 
                }
142
 
                if ( s.contains( "hibernate.connection.username" ) )
143
 
                {
144
 
                    String tempS2[] = s.split( "=" );
145
 
                    //System.out.println( "UserName : " + tempS2[tempS2.length - 1].trim() );
146
 
                    li.add( 1, tempS2[tempS2.length - 1].trim() );
147
 
                }
148
 
                if ( s.contains( "hibernate.connection.password" ) )
149
 
                {
150
 
                    String tempS2[] = s.split( "=" );
151
 
                    //System.out.println( "PassWord : " + tempS2[tempS2.length - 1].trim() );
152
 
                    li.add( 2, tempS2[tempS2.length - 1].trim() );
153
 
                }
154
 
                // System.out.println(s);
155
 
                s = input.readLine();
156
 
            }// while loop end
157
 
        }
158
 
        catch ( FileNotFoundException e )
159
 
        {
160
 
            System.out.println( e.getMessage() );
161
 
        }
162
 
        catch ( IOException e )
163
 
        {
164
 
            System.out.println( e.getMessage() );
165
 
        }
166
 
        finally
167
 
        {
168
 
            try
169
 
            {
170
 
                if ( fr != null )
171
 
                    fr.close();
172
 
                if ( input != null )
173
 
                    input.close();
174
 
            }
175
 
            catch ( Exception e )
176
 
            {
177
 
                System.out.println( e.getMessage() );
178
 
            }
179
 
        }
180
 
 
181
 
        return li;
182
 
    }// getDBDeatilsFromHibernate end
183
 
 
184
 
    public List<String> getDBInfo()
185
 
    {
186
 
//        DatabaseInfoProvider provider = new org.hisp.dhis.system.database.HibernateDatabaseInfoProvider();
187
 
        info = provider.getDatabaseInfo();
188
 
        
189
 
        List<String> dbInfoList = new ArrayList<String>();
190
 
        
191
 
        dbInfoList.add( 0, info.getName() );
192
 
        dbInfoList.add( 1, info.getUser() );
193
 
        dbInfoList.add( 2, info.getPassword() );
194
 
        dbInfoList.add( 3, info.getUrl() );
195
 
        
196
 
        //System.out.println("DB URL: "+info.getUrl());
197
 
        
198
 
        return dbInfoList;
199
 
    }
200
 
    
201
 
    public Connection openConnection()
202
 
    {
203
 
 
204
 
        try
205
 
        {
206
 
 
207
 
            // To get From XML File
208
 
            // List li = (ArrayList)getDBDeatilsFromXML();
209
 
            // String userName = (String) li.get(0);
210
 
            // String userPass = (String) li.get(1);
211
 
            // String urlForConnection = (String) li.get(2);
212
 
 
213
 
            // To get From Hibernate.Properties File
214
 
            //List<String> li = (ArrayList) getDBDeatilsFromHibernate();
215
 
            //String urlForConnection = (String) li.get( 0 );
216
 
            //String userName = (String) li.get( 1 );
217
 
            //String userPass = (String) li.get( 2 );
218
 
 
219
 
            List<String> li = new ArrayList<String>( getDBInfo() );
220
 
            String dbName = li.get( 0 );
221
 
            String userName = li.get( 1 );
222
 
            String userPass = li.get( 2 );
223
 
            String urlForConnection = li.get( 3 );
224
 
 
225
 
            // Direct DBConnection
226
 
            // String userName = "dhis";
227
 
            // String userPass = "";
228
 
            // String urlForConnection = "jdbc:mysql://localhost/jh_dhis2";
229
 
 
230
 
            Class.forName( "com.mysql.jdbc.Driver" ).newInstance();
231
 
            con = DriverManager.getConnection( urlForConnection, userName, userPass );
232
 
        }
233
 
        catch ( Exception e )
234
 
        {
235
 
            System.out.println( "Exception while opening connection : " + e.getMessage() );
236
 
            return null;
237
 
        }
238
 
        return con;
239
 
    } // openConnection end
240
 
 
241
 
    public void closeConnection()
242
 
    {
243
 
        try
244
 
        {
245
 
        }
246
 
        finally
247
 
        {
248
 
            try
249
 
            {
250
 
                if ( con != null )
251
 
                    con.close();
252
 
            }
253
 
            catch ( Exception e )
254
 
            {
255
 
                System.out.println( e.getMessage() );
256
 
            }
257
 
        }
258
 
    } // closeConnection end
259
 
 
260
 
}