/*
 * Copyright 2004-2019 H2 Group. Multiple-Licensed under the MPL 2.0,
 * and the EPL 1.0 (http://h2database.com/html/license.html).
 * Initial Developer: H2 Group
 */
package org.h2.engine;

import org.h2.message.DbException;
import org.h2.message.Trace;
import org.h2.table.Table;

Represents a role. Roles can be granted to users, and to other roles.
/** * Represents a role. Roles can be granted to users, and to other roles. */
public class Role extends RightOwner { private final boolean system; public Role(Database database, int id, String roleName, boolean system) { super(database, id, roleName, Trace.USER); this.system = system; } @Override public String getCreateSQLForCopy(Table table, String quotedName) { throw DbException.throwInternalError(toString()); } @Override public String getDropSQL() { return null; }
Get the CREATE SQL statement for this object.
Params:
  • ifNotExists – true if IF NOT EXISTS should be used
Returns:the SQL statement
/** * Get the CREATE SQL statement for this object. * * @param ifNotExists true if IF NOT EXISTS should be used * @return the SQL statement */
public String getCreateSQL(boolean ifNotExists) { if (system) { return null; } StringBuilder buff = new StringBuilder("CREATE ROLE "); if (ifNotExists) { buff.append("IF NOT EXISTS "); } getSQL(buff, true); return buff.toString(); } @Override public String getCreateSQL() { return getCreateSQL(false); } @Override public int getType() { return DbObject.ROLE; } @Override public void removeChildrenAndResources(Session session) { for (User user : database.getAllUsers()) { Right right = user.getRightForRole(this); if (right != null) { database.removeDatabaseObject(session, right); } } for (Role r2 : database.getAllRoles()) { Right right = r2.getRightForRole(this); if (right != null) { database.removeDatabaseObject(session, right); } } for (Right right : database.getAllRights()) { if (right.getGrantee() == this) { database.removeDatabaseObject(session, right); } } database.removeMeta(session, getId()); invalidate(); } @Override public void checkRename() { // ok } }