package com.stacksync.syncservice.test.benchmark.db; import java.sql.Connection; import java.util.List; import java.util.UUID; import com.stacksync.commons.models.Device; import com.stacksync.commons.models.Item; import com.stacksync.commons.models.ItemVersion; import com.stacksync.commons.models.User; import com.stacksync.commons.models.Workspace; import com.stacksync.syncservice.db.ConnectionPool; import com.stacksync.syncservice.db.ConnectionPoolFactory; import com.stacksync.syncservice.db.DAOFactory; import com.stacksync.syncservice.db.DeviceDAO; import com.stacksync.syncservice.db.ItemDAO; import com.stacksync.syncservice.db.ItemVersionDAO; import com.stacksync.syncservice.db.UserDAO; import com.stacksync.syncservice.db.WorkspaceDAO; import com.stacksync.syncservice.exceptions.dao.DAOException; import com.stacksync.syncservice.util.Config; public class DatabaseHelper { private ConnectionPool pool; private Connection connection; private WorkspaceDAO workspaceDAO; private UserDAO userDao; private DeviceDAO deviceDao; private ItemDAO objectDao; private ItemVersionDAO oversionDao; public DatabaseHelper() throws Exception { Config.loadProperties(); Thread.sleep(100); String datasource = Config.getDatasource(); pool = ConnectionPoolFactory.getConnectionPool(datasource); connection = pool.getConnection(); DAOFactory factory = new DAOFactory(datasource); workspaceDAO = factory.getWorkspaceDao(connection); userDao = factory.getUserDao(connection); deviceDao = factory.getDeviceDAO(connection); objectDao = factory.getItemDAO(connection); oversionDao = factory.getItemVersionDAO(connection); } public void storeObjects(List<Item> objectsLevel) throws IllegalArgumentException, DAOException { long numChunk = 0, totalTimeChunk = 0; long numVersion = 0, totalTimeVersion = 0; long numObject = 0, totalTimeObject = 0; long startTotal = System.currentTimeMillis(); for (Item object : objectsLevel) { // System.out.println("DatabaseHelper -- Put Object -> " + object); long startObjectTotal = System.currentTimeMillis(); objectDao.put(object); for (ItemVersion version : object.getVersions()) { long startVersionTotal = System.currentTimeMillis(); // System.out.println("DatabaseHelper -- Put Version -> " + // version); oversionDao.add(version); long startChunkTotal = System.currentTimeMillis(); if (!version.getChunks().isEmpty()) { oversionDao.insertChunks(version.getChunks(), version.getId()); } totalTimeChunk += System.currentTimeMillis() - startChunkTotal; totalTimeVersion += System.currentTimeMillis() - startVersionTotal; // System.out.println("---- Total Version time --> " + // totalVersionTime + " ms"); numVersion++; } totalTimeObject += System.currentTimeMillis() - startObjectTotal; numObject++; } if (numChunk > 0) { System.out.println("-------- AVG avg Chunk(" + numChunk + ") time --> " + (totalTimeChunk / numChunk) + " ms"); } if (numVersion > 0) { System.out.println("---- AVG Version(" + numVersion + ") time --> " + (totalTimeVersion / numVersion) + " ms"); } if (numObject > 0) { System.out.println("AVG Object(" + numObject + ") time --> " + (totalTimeObject / numObject) + " ms"); } long totalTime = System.currentTimeMillis() - startTotal; System.out.println("Total level time --> " + totalTime + " ms"); } public void addUser(User user) throws IllegalArgumentException, DAOException { userDao.add(user); } public void addWorkspace(User user, Workspace workspace) throws IllegalArgumentException, DAOException { workspaceDAO.add(workspace); workspaceDAO.addUser(user, workspace); } public void addDevice(Device device) throws IllegalArgumentException, DAOException { deviceDao.add(device); } public void deleteUser(UUID id) throws DAOException { userDao.delete(id); } }