package de.hsadmin.mods.db; import javax.persistence.EntityManager; import de.hsadmin.core.model.AbstractEntity; import de.hsadmin.core.qserv.EntityProcessorFactory; import de.hsadmin.core.qserv.Processor; /** * Factory class which creates Processor instances for dealing with UNIX user * accounts. * * @author mi */ public class PgSqlUserProcessorFactory implements EntityProcessorFactory { public Processor createCreateProcessor(EntityManager em, T entity) { DatabaseUser dbu = (DatabaseUser) entity; assert dbu.getInstance().equals("pgsql"); JDBCProcessor aJDBCP = PgSqlDatabaseProcessorFactory.createPostgreSqlAdminProcessor(); String aName = AbstractEntity.escapeString(dbu.getName()); String aPassword = AbstractEntity.escapeString(dbu.getPassword()); aJDBCP.addSQL("CREATE USER " + aName + " NOCREATEDB NOCREATEUSER" + " ENCRYPTED PASSWORD '" + aPassword + "'"); return aJDBCP; } public Processor createUpdateProcessor( EntityManager em, T entity) { DatabaseUser dbu = (DatabaseUser) entity; assert dbu.getInstance().equals("pgsql"); JDBCProcessor aJDBCP = PgSqlDatabaseProcessorFactory.createPostgreSqlAdminProcessor(); String aName = AbstractEntity.escapeString(dbu.getName()); String aPassword = AbstractEntity.escapeString(dbu.getPassword()); aJDBCP.addSQL("ALTER USER " + aName + " WITH ENCRYPTED PASSWORD '" + aPassword + "'"); return aJDBCP; } public Processor createDeleteProcessor( EntityManager em, T entity) { DatabaseUser dbu = (DatabaseUser) entity; assert dbu.getInstance().equals("pgsql"); JDBCProcessor aJDBCP = PgSqlDatabaseProcessorFactory.createPostgreSqlAdminProcessor(); String aName = AbstractEntity.escapeString(dbu.getName()); aJDBCP.addSQL("DROP USER " + aName); return aJDBCP; } }