📄 jdbcdescriptorsstore.java
字号:
statement = null;
Enumeration children = object.enumerateChildren();
while (children.hasMoreElements())
{
if (statement == null)
{
statement = connection.prepareStatement
("insert into children values(?, ?)");
}
statement.setString(1, object.getUri());
statement.setString(2, (String)children.nextElement());
statement.execute();
}
closeStatement(statement);
// Updating inbound links
/*
s = "delete from links where linkto='" + object.getUri() + "'";
statement.execute(s);
Enumeration links = object.enumerateLinks();
while (children.hasMoreElements()) {
s = "insert into links values('"
+ (String) links.nextElement() + "', '"
+ object.getUri() + "')";
statement.execute(s);
}
*/
// Updating links
statement = connection.prepareStatement
("delete from links where link= ?");
statement.setString(1, object.getUri());
statement.execute();
closeStatement(statement);
if (object instanceof LinkNode)
{
statement = connection.prepareStatement
("insert into links values(?,?)");
statement.setString(1, object.getUri());
statement.setString(2, ((LinkNode) object).getLinkedUri());
statement.execute();
closeStatement(statement);
}
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
}
/**
* Create a new object.
*
* @param object ObjectNode
* @param uri Uri of the object we want to create
* @exception ServiceAccessException Error accessing the Service
* @exception ObjectAlreadyExistsException An object already exists
* at this Uri
*/
public void createObject(Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectAlreadyExistsException
{
PreparedStatement statement = null;
try
{
String className = object.getClass().getName();
statement = connection.prepareStatement
("select * from objects where uri= ?");
statement.setString(1, uri.toString());
ResultSet res = statement.executeQuery();
// Parsing result set
if (res.next())
{
throw new ObjectAlreadyExistsException(uri.toString());
}
closeStatement(statement);
statement = connection.prepareStatement
("insert into objects values(?,?)");
statement.setString(1, uri.toString());
statement.setString(2, className );
statement.execute();
closeStatement(statement);
statement = null;
// Inserting children
Enumeration children = object.enumerateChildren();
while (children.hasMoreElements())
{
if (statement == null)
{
statement = connection.prepareStatement
("insert into children values(?,?)");
}
statement.setString(1, uri.toString());
statement.setString(2, (String) children.nextElement());
statement.execute();
}
closeStatement(statement);
// Updating inbound links
/*
Enumeration links = object.enumerateLinks();
while (children.hasMoreElements()) {
s = "insert into links values('"
+ (String) links.nextElement() + "', '"
+ object.getUri() + "')";
statement.execute(s);
}
*/
// If the object is a link, also store the link information
if (object instanceof LinkNode)
{
statement = connection.prepareStatement
("insert into links values(?,?)");
statement.setString(1, uri.toString());
statement.setString(2, ((LinkNode) object).getLinkedUri());
statement.execute();
closeStatement(statement);
}
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
}
/**
* Remove an object.
*
* @param object Object to remove
* @exception ServiceAccessException Error accessing the Service
* @exception ObjectNotFoundException The object to remove was not found
*/
public void removeObject(Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectNotFoundException
{
PreparedStatement statement = null;
try
{
// Removing object
statement = connection.prepareStatement
("delete from objects where uri= ?");
statement.setString(1,object.getUri());
statement.execute();
closeStatement(statement);
// Removing children
statement = connection.prepareStatement
("delete from children where uri=?");
statement.setString(1, object.getUri());
statement.execute();
closeStatement(statement);
// Removing inbound links
/*
s = "delete from links where linkto='" + object.getUri() + "'";
statement.execute(s);
*/
// Removing links
statement = connection.prepareStatement
("delete from links where link= ?");
statement.setString(1, object.getUri());
statement.execute();
closeStatement(statement);
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
}
/**
* Grant a new permission.
*
* @param permission Permission we want to create
* @exception ServiceAccessException Error accessing the Service
*/
public void grantPermission(Uri uri, NodePermission permission)
throws ServiceAccessException
{
PreparedStatement statement = null;
try
{
int inheritable = 0;
if (permission.isInheritable())
{
inheritable = 1;
}
int negative = 0;
if (permission.isNegative())
{
negative = 1;
}
NodeRevisionNumber revisionNumber = permission.getRevisionNumber();
String revisionNumberStr =
(revisionNumber == null) ? null : revisionNumber.toString();
statement = connection.prepareStatement
("insert into permissions values(?,?,?,?,?,?)");
statement.setString(1, permission.getObjectUri());
statement.setString(2, revisionNumberStr);
statement.setString(3, permission.getSubjectUri());
statement.setString(4, permission.getActionUri());
statement.setInt(5, inheritable);
statement.setInt(6, negative);
statement.execute();
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
}
/**
* Revoke a permission.
*
* @param permission Permission we want to create
* @exception ServiceAccessException Error accessing the Service
*/
public void revokePermission(Uri uri, NodePermission permission)
throws ServiceAccessException
{
PreparedStatement statement = null;
try
{
NodeRevisionNumber revisionNumber = permission.getRevisionNumber();
if(revisionNumber != null)
{
statement = connection.prepareStatement
("delete from permissions where object= ? and subject = ? and \"ACTION\" = ? and revisionnumber = ? ");
statement.setString(4, revisionNumber.toString());
}
else
{
statement = connection.prepareStatement
("delete from permissions where object = ? and subject = ? and \"ACTION\" = ? and revisionnumber is NULL");
}
statement.setString(1, permission.getObjectUri());
statement.setString(2, permission.getSubjectUri());
statement.setString(3, permission.getActionUri());
statement.execute();
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
}
/**
* Revoke all the permissions on an object.
*
* @param permission Permission we want to create
* @exception ServiceAccessException Error accessing the Service
*/
public void revokePermissions(Uri uri)
throws ServiceAccessException
{
PreparedStatement statement = null;
try
{
statement = connection.prepareStatement
("delete from permissions where object= ?");
statement.setString(1, uri.toString());
statement.execute();
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
}
/**
* Enumerate permissions on an object.
*
* @param permission Permission we want to create
* @exception ServiceAccessException Error accessing the Service
*/
public Enumeration enumeratePermissions(Uri uri)
throws ServiceAccessException
{
Vector permissionVector = new Vector();
PreparedStatement statement = null;
try
{
statement = connection.prepareStatement
("select * from permissions where object= ?");
statement.setString(1, uri.toString());
ResultSet res = statement.executeQuery();
while (res.next())
{
String object = res.getString(PERMISSIONS_OBJECT);
String revision = res.getString(PERMISSIONS_REVISION_NUMBER);
String subject = res.getString(PERMISSIONS_SUBJECT);
String action = res.getString(PERMISSIONS_ACTION);
boolean inheritable = false;
if (res.getInt(PERMISSIONS_INHERITABLE) == 1)
{
inheritable = true;
}
boolean negative = false;
if (res.getInt(PERMISSIONS_NEGATIVE) == 1)
{
negative = true;
}
NodePermission permission =
new NodePermission(object,revision,subject,
action,inheritable,negative);
permissionVector.addElement(permission);
}
}
catch (SQLException e)
{
getLogger().log(e,LOG_CHANNEL,Logger.ERROR);
throw new ServiceAccessException(this, e);
}
finally
{
closeStatement(statement);
}
return permissionVector.elements();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -