/*
* Copyright (C) 2009 eXo Platform SAS.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.etk.component.database;
import junit.framework.TestCase;
import org.etk.component.base.event.ListenerService;
import org.etk.component.database.DBTableManager;
import org.etk.component.database.DatabaseService;
import org.etk.component.database.ExoDatasource;
import org.etk.component.database.StandardSQLDAO;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
/**
* Created by The eXo Platform SAS Author : Tuan Nguyen
* tuan.nguyen@exoplatform.com Mar 27, 2007
*/
public class TestDAO extends TestCase
{
public void testDummy()
{
// empty, to doesn't fail during the tests
}
/*
* GA: This Test failed, uncomment to see!!! public void testDAO() throws
* Exception { PortalContainer pcontainer = PortalContainer.getInstance() ;
* DatabaseService service = (DatabaseService)
* pcontainer.getComponentInstance("XAPoolTxSupportDBConnectionService") ;
* PortalContainer manager = PortalContainer.getInstance(); ListenerService
* listenerService = (ListenerService)
* manager.getComponentInstanceOfType(ListenerService.class) ;
* queries(service); testMock(listenerService, service); }
*/
private void testMock(ListenerService listenerService, DatabaseService service) throws Exception
{
ExoDatasource dataSource = service.getDatasource();
DBTableManager dbManager = dataSource.getDBTableManager();
assertEquals(dbManager.hasTable(Mock.class), false);
dbManager.createTable(Mock.class, true);
assertEquals(dbManager.hasTable(Mock.class), true);
StandardSQLDAO<Mock> dao = new StandardSQLDAO<Mock>(dataSource, new Mock.MockMapper(), Mock.class);
Mock mock = new Mock("Benj", 2);
dao.save(mock);
List<Mock> list = new ArrayList<Mock>();
list.add(new Mock("Thuannd", 12));
list.add(new Mock("Hung", 4));
dao.save(list);
Mock savedMock = dao.load(mock.getDBObjectId());
assertEquals(mock.getName(), savedMock.getName());
// reflection mapper
dao = new StandardSQLDAO<Mock>(dataSource, Mock.class);
list.clear();
list.add(new Mock("Ha", 17));
list.add(new Mock("Hoa", 6));
dao.save(list);
}
private String printQueryResult(DatabaseService service) throws Exception
{
Connection conn = service.getConnection();
Statement statement = conn.createStatement();
String output = "\nQuery result: \n";
ResultSet rs = statement.executeQuery("SELECT * FROM ExoLongId");
while (rs.next())
{
output += rs.getString(1) + "\n" + rs.getString(2) + "\n" + rs.getString(3) + "====\n";
}
return output;
}
private void queries(DatabaseService service) throws Exception
{
// ExoLongIDDAO exoLongIDDAO = new ExoLongIDDAO(service.getDatasource());
// assertEquals(sql,
// "INSERT INTO ExoLongId(id, name, start) VALUES(34, ?, ?)");
// System.out.println("\n=========> sql: " + sql +"\n");
//
// sql = exoLongIDDAO.getRemoveQuery(ExoLongID.class, 34L);
// assertEquals(sql, "DELETE FROM ExoLongId WHERE id = '34'");
// sql = exoLongIDDAO.getUpdateQuery(ExoLongID.class, 34L);
// assertEquals(sql,
// "UPDATE ExoLongId SET name = ?, start = ? WHERE id = 34");
//
// Table table = TestTable.class.getAnnotation(Table.class) ;
// String sql = exoLongIDDAO.getInsertQuery(ExoLongID.class, 34L);
//
// Connection conn = service.getConnection() ;
// PreparedStatement ps = conn.prepareStatement(sql) ;
//
// ps.setString(1, "This is name");
// ps.setLong(2, 55L);
// ps.executeUpdate();
// System.out.println(printQueryResult(service));
//
// try {
// ps.setString(1, "This is name");
// ps.setLong(2, 55L);
// ps.executeUpdate();
// } catch (SQLException ex) {
// System.err.println("\n==================> Error in insert: " +
// ex.getMessage() + "\n\n");
// }
//
// String updateSQL = exoLongIDDAO.getUpdateQuery(ExoLongID.class, 34L);
// ps = conn.prepareStatement(updateSQL) ;
// ps.setString(1, "This is updated name");
// ps.setLong(2, 56L);
// ps.executeUpdate();
// System.out.println("After update: " + printQueryResult(service));
//
// sql = exoLongIDDAO.getRemoveQuery(ExoLongID.class, 34L);
// ps = conn.prepareStatement(sql) ;
// // ps.setLong(1, 34L);
// ps.executeUpdate();
// System.out.println("After delete: " + printQueryResult(service));
}
}