package fr.plil.sio.persistence.jdbc; import org.junit.After; import org.junit.Before; import org.springframework.beans.factory.annotation.Autowired; import javax.sql.DataSource; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public abstract class AbstractServiceSupport { private static final Logger logger = LoggerFactory.getLogger(AbstractServiceSupport.class); private static final String create_table_group = "CREATE TABLE GROUP_T (GROUP_ID INT NOT NULL AUTO_INCREMENT, " + "NAME_C VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(GROUP_ID))"; private static final String create_table_right = "CREATE TABLE RIGHT_T (RIGHT_ID INT NOT NULL AUTO_INCREMENT, "+ "NAME_R VARCHAR(50) NOT NULL, PRIMARY KEY(RIGHT_ID), PARENT INT, FOREIGN KEY(PARENT) REFERENCES RIGHT_T(RIGHT_ID))"; private static final String create_table_user = "CREATE TABLE USER_T (USER_ID INT NOT NULL AUTO_INCREMENT, "+ "NAME_U VARCHAR(50) UNIQUE NOT NULL, PRIMARY KEY(USER_ID), GROUP_U INT, FOREIGN KEY(GROUP_U) REFERENCES GROUP_T(GROUP_ID)) "; private static final String create_table_rg = "CREATE TABLE GROUP_RIGHTS (G_ID INT NOT NULL, R_ID INT NOT NULL,"+ "PRIMARY KEY(G_ID,R_ID),"+ "FOREIGN KEY(G_ID) REFERENCES GROUP_T(GROUP_ID),"+ "FOREIGN KEY(R_ID) REFERENCES RIGHT_T(RIGHT_ID))"; private static final String drop_table_group = "DROP TABLE GROUP_T"; private static final String drop_table_right = "DROP TABLE RIGHT_T"; private static final String drop_table_user = "DROP TABLE USER_T"; private static final String drop_table_rg = "DROP TABLE GROUP_RIGHTS"; @Autowired private DataSource dataSource; private Connection connection; private Statement stmt; @Before public void createTables() throws SQLException { logger.debug("createTables"); openConnection(); stmt.executeUpdate(create_table_group); stmt.executeUpdate(create_table_right); stmt.executeUpdate(create_table_user); stmt.executeUpdate(create_table_rg); closeConnection(); } @After public void cleanupDatabase() throws SQLException { logger.debug("cleanupDatabase"); openConnection(); stmt.executeUpdate(drop_table_group); stmt.executeUpdate(drop_table_right); stmt.executeUpdate(drop_table_user); stmt.executeUpdate(drop_table_rg); closeConnection(); } private void closeConnection() throws SQLException { stmt.close(); connection.close(); } private void openConnection() throws SQLException { connection = dataSource.getConnection(); stmt = connection.createStatement(); } }