mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-07-24 17:32:48 +00:00
. JavaScript API enhancements checkpoint:
- setMimetype(mimetype) - update or set the mimetype of a content property - specializeType(type) - specialise the type of a node git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@3429 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
@@ -104,8 +104,6 @@ public final class Node implements Serializable, Scopeable
|
|||||||
private Boolean isDocument = null;
|
private Boolean isDocument = null;
|
||||||
private Boolean isContainer = null;
|
private Boolean isContainer = null;
|
||||||
private String displayPath = null;
|
private String displayPath = null;
|
||||||
private String mimetype = null;
|
|
||||||
private Long size = null;
|
|
||||||
private TemplateImageResolver imageResolver = null;
|
private TemplateImageResolver imageResolver = null;
|
||||||
private Node parent = null;
|
private Node parent = null;
|
||||||
private ChildAssociationRef primaryParentAssoc = null;
|
private ChildAssociationRef primaryParentAssoc = null;
|
||||||
@@ -522,66 +520,6 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return allowed;
|
return allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @return true if the node inherits permissions from the parent node, false otherwise
|
|
||||||
*/
|
|
||||||
public boolean inheritsPermissions()
|
|
||||||
{
|
|
||||||
return this.services.getPermissionService().getInheritParentPermissions(this.nodeRef);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set whether this node should inherit permissions from the parent node.
|
|
||||||
*
|
|
||||||
* @param inherit True to inherit parent permissions, false otherwise.
|
|
||||||
*/
|
|
||||||
public void setInheritsPermissions(boolean inherit)
|
|
||||||
{
|
|
||||||
this.services.getPermissionService().setInheritParentPermissions(this.nodeRef, inherit);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply a permission for ALL users to the node.
|
|
||||||
*
|
|
||||||
* @param permission Permission to apply @see org.alfresco.service.cmr.security.PermissionService
|
|
||||||
*/
|
|
||||||
public void setPermission(String permission)
|
|
||||||
{
|
|
||||||
this.services.getPermissionService().setPermission(this.nodeRef, PermissionService.ALL_AUTHORITIES, permission, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Apply a permission for the specified authority (e.g. username or group) to the node.
|
|
||||||
*
|
|
||||||
* @param permission Permission to apply @see org.alfresco.service.cmr.security.PermissionService
|
|
||||||
* @param authority Authority (generally a username or group name) to apply the permission for
|
|
||||||
*/
|
|
||||||
public void setPermission(String permission, String authority)
|
|
||||||
{
|
|
||||||
this.services.getPermissionService().setPermission(this.nodeRef, authority, permission, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a permission for ALL user from the node.
|
|
||||||
*
|
|
||||||
* @param permission Permission to remove @see org.alfresco.service.cmr.security.PermissionService
|
|
||||||
*/
|
|
||||||
public void removePermission(String permission)
|
|
||||||
{
|
|
||||||
this.services.getPermissionService().deletePermission(this.nodeRef, PermissionService.ALL_AUTHORITIES, permission);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Remove a permission for the specified authority (e.g. username or group) from the node.
|
|
||||||
*
|
|
||||||
* @param permission Permission to remove @see org.alfresco.service.cmr.security.PermissionService
|
|
||||||
* @param authority Authority (generally a username or group name) to apply the permission for
|
|
||||||
*/
|
|
||||||
public void removePermission(String permission, String authority)
|
|
||||||
{
|
|
||||||
this.services.getPermissionService().deletePermission(this.nodeRef, authority, permission);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Display path to this node
|
* @return Display path to this node
|
||||||
*/
|
*/
|
||||||
@@ -735,6 +673,10 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return getPrimaryParentAssoc();
|
return getPrimaryParentAssoc();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Content API
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the content String for this node from the default content property
|
* @return the content String for this node from the default content property
|
||||||
* (@see ContentModel.PROP_CONTENT)
|
* (@see ContentModel.PROP_CONTENT)
|
||||||
@@ -819,14 +761,12 @@ public final class Node implements Serializable, Scopeable
|
|||||||
*/
|
*/
|
||||||
public String getMimetype()
|
public String getMimetype()
|
||||||
{
|
{
|
||||||
if (mimetype == null)
|
String mimetype = null;
|
||||||
{
|
|
||||||
ScriptContentData content = (ScriptContentData)this.getProperties().get(ContentModel.PROP_CONTENT);
|
ScriptContentData content = (ScriptContentData)this.getProperties().get(ContentModel.PROP_CONTENT);
|
||||||
if (content != null)
|
if (content != null)
|
||||||
{
|
{
|
||||||
mimetype = content.getMimetype();
|
mimetype = content.getMimetype();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return mimetype;
|
return mimetype;
|
||||||
}
|
}
|
||||||
@@ -836,22 +776,40 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return getMimetype();
|
return getMimetype();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the mimetype encoding for the content attached to the node from the default content property
|
||||||
|
* (@see ContentModel.PROP_CONTENT)
|
||||||
|
*
|
||||||
|
* @param mimetype Mimetype to set
|
||||||
|
*/
|
||||||
|
public void setMimetype(String mimetype)
|
||||||
|
{
|
||||||
|
ScriptContentData content = (ScriptContentData)this.getProperties().get(ContentModel.PROP_CONTENT);
|
||||||
|
if (content != null)
|
||||||
|
{
|
||||||
|
content.setMimetype(mimetype);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void jsSet_mimetype(String mimetype)
|
||||||
|
{
|
||||||
|
setMimetype(mimetype);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return The size in bytes of the content attached to the node from the default content property
|
* @return The size in bytes of the content attached to the node from the default content property
|
||||||
* (@see ContentModel.PROP_CONTENT)
|
* (@see ContentModel.PROP_CONTENT)
|
||||||
*/
|
*/
|
||||||
public long getSize()
|
public long getSize()
|
||||||
{
|
{
|
||||||
if (size == null)
|
long size = 0;
|
||||||
{
|
|
||||||
ScriptContentData content = (ScriptContentData)this.getProperties().get(ContentModel.PROP_CONTENT);
|
ScriptContentData content = (ScriptContentData)this.getProperties().get(ContentModel.PROP_CONTENT);
|
||||||
if (content != null)
|
if (content != null)
|
||||||
{
|
{
|
||||||
size = content.getSize();
|
size = content.getSize();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return size != null ? size.longValue() : 0L;
|
return size;
|
||||||
}
|
}
|
||||||
|
|
||||||
public long jsGet_size()
|
public long jsGet_size()
|
||||||
@@ -868,6 +826,70 @@ public final class Node implements Serializable, Scopeable
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Security API
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if the node inherits permissions from the parent node, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean inheritsPermissions()
|
||||||
|
{
|
||||||
|
return this.services.getPermissionService().getInheritParentPermissions(this.nodeRef);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set whether this node should inherit permissions from the parent node.
|
||||||
|
*
|
||||||
|
* @param inherit True to inherit parent permissions, false otherwise.
|
||||||
|
*/
|
||||||
|
public void setInheritsPermissions(boolean inherit)
|
||||||
|
{
|
||||||
|
this.services.getPermissionService().setInheritParentPermissions(this.nodeRef, inherit);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply a permission for ALL users to the node.
|
||||||
|
*
|
||||||
|
* @param permission Permission to apply @see org.alfresco.service.cmr.security.PermissionService
|
||||||
|
*/
|
||||||
|
public void setPermission(String permission)
|
||||||
|
{
|
||||||
|
this.services.getPermissionService().setPermission(this.nodeRef, PermissionService.ALL_AUTHORITIES, permission, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Apply a permission for the specified authority (e.g. username or group) to the node.
|
||||||
|
*
|
||||||
|
* @param permission Permission to apply @see org.alfresco.service.cmr.security.PermissionService
|
||||||
|
* @param authority Authority (generally a username or group name) to apply the permission for
|
||||||
|
*/
|
||||||
|
public void setPermission(String permission, String authority)
|
||||||
|
{
|
||||||
|
this.services.getPermissionService().setPermission(this.nodeRef, authority, permission, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a permission for ALL user from the node.
|
||||||
|
*
|
||||||
|
* @param permission Permission to remove @see org.alfresco.service.cmr.security.PermissionService
|
||||||
|
*/
|
||||||
|
public void removePermission(String permission)
|
||||||
|
{
|
||||||
|
this.services.getPermissionService().deletePermission(this.nodeRef, PermissionService.ALL_AUTHORITIES, permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove a permission for the specified authority (e.g. username or group) from the node.
|
||||||
|
*
|
||||||
|
* @param permission Permission to remove @see org.alfresco.service.cmr.security.PermissionService
|
||||||
|
* @param authority Authority (generally a username or group name) to apply the permission for
|
||||||
|
*/
|
||||||
|
public void removePermission(String permission, String authority)
|
||||||
|
{
|
||||||
|
this.services.getPermissionService().deletePermission(this.nodeRef, authority, permission);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------
|
||||||
// Create and Modify API
|
// Create and Modify API
|
||||||
|
|
||||||
@@ -956,6 +978,41 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Re-sets the type of the node. Can be called in order specialise a node to a sub-type.
|
||||||
|
*
|
||||||
|
* This should be used with caution since calling it changes the type of the node and thus
|
||||||
|
* implies a different set of aspects, properties and associations. It is the responsibility
|
||||||
|
* of the caller to ensure that the node is in a approriate state after changing the type.
|
||||||
|
*
|
||||||
|
* @param type Type to specialize the node
|
||||||
|
*
|
||||||
|
* @return true if successful, false otherwise
|
||||||
|
*/
|
||||||
|
public boolean specializeType(String type)
|
||||||
|
{
|
||||||
|
QName qnameType = createQName(type);
|
||||||
|
|
||||||
|
// Ensure that we are performing a specialise
|
||||||
|
if (getType().equals(qnameType) == false &&
|
||||||
|
this.services.getDictionaryService().isSubClass(qnameType, getType()) == true)
|
||||||
|
{
|
||||||
|
// Specialise the type of the node
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.nodeService.setType(this.nodeRef, qnameType);
|
||||||
|
this.type = qnameType;
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch (InvalidNodeRefException err)
|
||||||
|
{
|
||||||
|
// fall through to return fase
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a new File (cm:content) node as a child of this node.
|
* Create a new File (cm:content) node as a child of this node.
|
||||||
* <p>
|
* <p>
|
||||||
@@ -1250,6 +1307,33 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return success;
|
return success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Checkout/Checkin Services
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// ------------------------------------------------------------------------------
|
||||||
|
// Helper methods
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override Object.toString() to provide useful debug output
|
||||||
|
*/
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
if (this.nodeService.exists(nodeRef))
|
||||||
|
{
|
||||||
|
return "Node Type: " + getType() +
|
||||||
|
"\nNode Properties: " + this.getProperties().toString() +
|
||||||
|
"\nNode Aspects: " + this.getAspects().toString();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return "Node no longer exists: " + nodeRef;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helper to create a QName from either a fully qualified or short-name QName string
|
* Helper to create a QName from either a fully qualified or short-name QName string
|
||||||
*
|
*
|
||||||
@@ -1285,33 +1369,10 @@ public final class Node implements Serializable, Scopeable
|
|||||||
this.displayPath = null;
|
this.displayPath = null;
|
||||||
this.isDocument = null;
|
this.isDocument = null;
|
||||||
this.isContainer = null;
|
this.isContainer = null;
|
||||||
this.mimetype = null;
|
|
||||||
this.size = null;
|
|
||||||
this.parent = null;
|
this.parent = null;
|
||||||
this.primaryParentAssoc = null;
|
this.primaryParentAssoc = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Override Object.toString() to provide useful debug output
|
|
||||||
*/
|
|
||||||
public String toString()
|
|
||||||
{
|
|
||||||
if (this.nodeService.exists(nodeRef))
|
|
||||||
{
|
|
||||||
return "Node Type: " + getType() +
|
|
||||||
"\nNode Properties: " + this.getProperties().toString() +
|
|
||||||
"\nNode Aspects: " + this.getAspects().toString();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return "Node no longer exists: " + nodeRef;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------
|
|
||||||
// Private Helpers
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return a list or a single Node from executing an xpath against the parent Node.
|
* Return a list or a single Node from executing an xpath against the parent Node.
|
||||||
*
|
*
|
||||||
@@ -1465,6 +1526,20 @@ public final class Node implements Serializable, Scopeable
|
|||||||
return getMimetype();
|
return getMimetype();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMimetype(String mimetype)
|
||||||
|
{
|
||||||
|
this.contentData = ContentData.setMimetype(this.contentData, mimetype);
|
||||||
|
services.getNodeService().setProperty(nodeRef, this.property, this.contentData);
|
||||||
|
|
||||||
|
// update cached variables after putContent()
|
||||||
|
this.contentData = (ContentData)services.getNodeService().getProperty(nodeRef, this.property);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void jsSet_mimetype(String mimetype)
|
||||||
|
{
|
||||||
|
setMimetype(mimetype);
|
||||||
|
}
|
||||||
|
|
||||||
private ContentData contentData;
|
private ContentData contentData;
|
||||||
private QName property;
|
private QName property;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user