public synchronized void createTable(Set<String> columns) {
		if(tableName == null || columns == null){
			logger.debug("Cannot create table: the table and column names are not any good to proceed!");
			System.exit(1);
		}
		
		this.columns = columns;
		
		Connection conn = dbMgr.getConnection();
		if(conn != null){
			Statement s = null;
			String sql = null;
			
			sql = "CREATE TABLE " + tableName + " (id INTEGER GENERATED BY DEFAULT AS IDENTITY (START WITH 1), ";
			
			final int NB_COLUMNS = columns.size() - 1;
			
			int colCount = 0;
			for(String column : columns) {
				String colType = "VARCHAR(" + Integer.MAX_VALUE + ")";
				
//				if(column.compareToIgnoreCase(DESCRIPTION_COLUMN) == 0) {
//					colType = "LONGVARBINARY";
//				}
				
				sql += column + " " + colType;
				
				if(colCount == NB_COLUMNS){
					sql += ")"; 
				}
				else {
					sql += ", ";
				}
				colCount++;
			}
			
			logger.debug("Create Table SQL: " + sql);
			try {
				s = conn.createStatement();
				s.execute(sql);
			}
			catch (Exception e) {
				logger.debug("Exception while Creating table " + tableName);
				e.printStackTrace();
			}
			finally {
				try {
					s.close();
					dbMgr.freeConnection(conn);
				}
				catch(Exception e){
					logger.debug("Exception while closing connection - during table creation : " + tableName);
					e.printStackTrace();
				}
			}
		}
	}