package io.shockah.skylark.permissions.db; import io.shockah.skylark.UnexpectedException; import io.shockah.skylark.db.DbObject; import java.sql.SQLException; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "io_shockah_skylark_permissions_usergrouppermissions") public class UserGroupPermission extends DbObject<UserGroupPermission> { public static final String USERGROUP_COLUMN = "usergroup_id"; @DatabaseField(canBeNull = false) public String permission; @DatabaseField(foreign = true, canBeNull = false, columnName = USERGROUP_COLUMN) private UserGroup userGroup; @Deprecated //ORMLite-only protected UserGroupPermission() { } @Deprecated //ORMLite-only public UserGroupPermission(Dao<UserGroupPermission, Integer> dao) { super(dao); } public UserGroupPermission(Dao<UserGroupPermission, Integer> dao, UserGroup userGroup) { super(dao); this.userGroup = userGroup; } public UserGroup getUserGroup() throws SQLException { try { if (userGroup != null) userGroup.refresh(); return userGroup; } catch (SQLException e) { throw new UnexpectedException(e); } } public void setUserGroup(UserGroup userGroup) { this.userGroup = userGroup; } public boolean permissionGranted(String actionPermission) { String[] spl = permission.split("\\."); String[] splArg = actionPermission.split("\\."); if (spl.length > splArg.length) return false; for (int i = 0; i < spl.length; i++) { String s = spl[i]; String arg = splArg[i]; if (s.equals("*")) return true; if (!s.equals(arg)) return false; } return true; } }