Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java
===================================================================
diff -u -r5c4aff99a77cb5c5148964f78baa1b54e4ac8552 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java (.../CrNodeVersionProperty.java) (revision 5c4aff99a77cb5c5148964f78baa1b54e4ac8552)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java (.../CrNodeVersionProperty.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -252,8 +252,8 @@
/**
* Returns a boolean representation of the value.
*/
- public boolean getBoolean() throws ValueFormatException {
- return Boolean.valueOf(value).booleanValue();
+ public Boolean getBoolean() throws ValueFormatException {
+ return Boolean.valueOf(value);
}
}
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IRepository.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IRepositoryAdmin.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java
===================================================================
diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java (.../IValue.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java (.../IValue.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -68,5 +68,5 @@
*
* @throws ValueFormatException If able to convert the value to a boolean.
*/
- public boolean getBoolean() throws ValueFormatException;
+ public Boolean getBoolean() throws ValueFormatException;
}
\ No newline at end of file
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java
===================================================================
diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java (.../IVersionedNodeAdmin.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java (.../IVersionedNodeAdmin.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -45,7 +45,7 @@
* is incompatible with the type of the specified property or if
* value is incompatible with (i.e. can not be converted to) type.
*/
- public void setProperty(String name, String value, int type) throws RepositoryCheckedException ;
+ public void setProperty(String name, Object value, int type) throws RepositoryCheckedException ;
/**
* Sets the property to a STRING value.
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/RepositoryProxy.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleRepository.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleTicket.java'.
Fisheye: No comparison available. Pass `N' to diff?
Fisheye: Tag 1492a6385b0f6e855ce08f2fe7570b4af8b53b21 refers to a dead (removed) revision in file `lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/SimpleVersionedNode.java'.
Fisheye: No comparison available. Pass `N' to diff?
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml
===================================================================
diff -u -r76ec9f8751b089a3c39e97bd92e72e4d11b41911 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml (.../applicationContext.xml) (revision 76ec9f8751b089a3c39e97bd92e72e4d11b41911)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml (.../applicationContext.xml) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -126,6 +126,7 @@
PROPAGATION_REQUIRED,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_SUPPORTS,-RepositoryCheckedException,-RepositoryRuntimeException
+ PROPAGATION_SUPPORTS,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,readOnly,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,readOnly,-RepositoryCheckedException,-RepositoryRuntimeException
@@ -169,7 +170,7 @@
- D:\repository
+ /tmp/repository
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java
===================================================================
diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java (.../INodeDAO.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java (.../INodeDAO.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -35,7 +35,7 @@
public Object find(Class objClass, Serializable id);
- public void insert(Object object);
+ public void saveOrUpdate(Object object);
public void update(Object object);
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java
===================================================================
diff -u -rd69fd0c0b6e3af330bb1ddbf3099022feca3f092 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java (.../NodeDAO.java) (revision d69fd0c0b6e3af330bb1ddbf3099022feca3f092)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java (.../NodeDAO.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -45,7 +45,7 @@
return this.getHibernateTemplate().load(objClass,id);
}
- public void insert(Object object) {
+ public void saveOrUpdate(Object object) {
this.getHibernateTemplate().saveOrUpdate(object);
}
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/localApplicationContext.xml
===================================================================
diff -u -r76ec9f8751b089a3c39e97bd92e72e4d11b41911 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/localApplicationContext.xml (.../localApplicationContext.xml) (revision 76ec9f8751b089a3c39e97bd92e72e4d11b41911)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/localApplicationContext.xml (.../localApplicationContext.xml) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -129,6 +129,7 @@
PROPAGATION_REQUIRED,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_SUPPORTS,-RepositoryCheckedException,-RepositoryRuntimeException
+ PROPAGATION_SUPPORTS,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,readOnly,-RepositoryCheckedException,-RepositoryRuntimeException
PROPAGATION_REQUIRED,readOnly,-RepositoryCheckedException,-RepositoryRuntimeException
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java
===================================================================
diff -u -r76ec9f8751b089a3c39e97bd92e72e4d11b41911 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java (.../IRepositoryService.java) (revision 76ec9f8751b089a3c39e97bd92e72e4d11b41911)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java (.../IRepositoryService.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -38,6 +38,8 @@
import org.lamsfoundation.lams.contentrepository.NodeKey;
import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException;
import org.lamsfoundation.lams.contentrepository.RepositoryRuntimeException;
+import org.lamsfoundation.lams.contentrepository.ValidationException;
+import org.lamsfoundation.lams.contentrepository.ValueFormatException;
import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException;
/**
@@ -202,6 +204,19 @@
throws AccessDeniedException, ItemNotFoundException,
FileException, InvalidParameterException ;
+ /**
+ * Sets the property to a value, based on the specified type. Removes the property if the value is null.
+ *
+ * @param name The name of a property of this node
+ * @param value The value to be assigned
+ * @param type The type of the property
+ * @throws ValueFormatException if the type or format of a value
+ * is incompatible with the type of the specified property or if
+ * value is incompatible with (i.e. can not be converted to) type.
+ */
+ public void setProperty(ITicket ticket, Long uuid, Long versionId, String name, Object value, int type)
+ throws AccessDeniedException, ItemNotFoundException, ValidationException ;
+
/**
* Get an item from the repository based on the UUID. This
* may be either a file or package node.
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java
===================================================================
diff -u -raaabbf7372c53eca0a6b1854633729753f56ba4f -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java (.../SimpleRepository.java) (revision aaabbf7372c53eca0a6b1854633729753f56ba4f)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java (.../SimpleRepository.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -723,7 +723,26 @@
}
- /* (non-Javadoc)
+ /**
+ * Sets the property to a value, based on the specified type. Removes the property if the value is null.
+ * Use this for custom properties only - change the filename or mimetype at your own risk.
+ *
+ * @param name The name of a property of this node
+ * @param value The value to be assigned
+ * @param type The type of the property
+ * @throws ValidationException if the call has made the node invalid. This would occur if the
+ * call had set the filename to blank.
+ */
+ public void setProperty(ITicket ticket, Long uuid, Long versionId, String name, Object value, int type)
+ throws AccessDeniedException, ItemNotFoundException, ValidationException {
+
+ // check that the previous version was a file node - error otherwise
+ SimpleVersionedNode node = getNode(ticket.getWorkspaceId(),uuid,versionId);
+ node.setProperty(name, value, type);
+ node.saveDB(null);
+ }
+
+ /* (non-Javadoc)
* @see org.lamsfoundation.lams.contentrepository.IRepository#updatePackageItem(org.lamsfoundation.lams.contentrepository.ITicket, java.lang.Long, java.lang.String, java.lang.String, java.lang.String)
*/
public String[] deleteNode(ITicket ticket, Long uuid)
Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java
===================================================================
diff -u -raaabbf7372c53eca0a6b1854633729753f56ba4f -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision aaabbf7372c53eca0a6b1854633729753f56ba4f)
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java (.../SimpleVersionedNode.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -261,7 +261,7 @@
/* (non-Javadoc)
* @see org.lamsfoundation.lams.contentrepository.IVersionedNode#setProperty(java.lang.String, java.lang.String, int)
*/
- public void setProperty(String name, String value, int type) {
+ public void setProperty(String name, Object value, int type) {
nodeObjectInitilised("Unable to set property "+name+" to value "+value);
nodeVersion.setProperty(name, value, type);
}
@@ -681,8 +681,12 @@
return node.getNodeId();
}
- /** validate node and save the database changes */
- private void saveDB(String versionDescription) throws ValidationException {
+ /** Just save the db changes to the current node.
+ * If files have been added, please call Long save(String versionDescription, List childNodes).
+ * This method will validate the node and save the database changes
+ * @param versionDescription optional. If supplied will set the version description
+ */
+ protected void saveDB(String versionDescription) throws ValidationException {
validateNode();
// nodeDAO to take care of insert or update (uses saveOrUpdate)
@@ -691,7 +695,7 @@
if ( versionDescription != null )
nodeVersion.setVersionDescription(versionDescription);
- nodeDAO.insert(node);
+ nodeDAO.saveOrUpdate(node);
// child nodes are done manually as the set is lazy loaded
// and can't work out how to do that properly using the DAO template!
@@ -700,7 +704,7 @@
Iterator iter = childNodes.iterator();
while ( iter.hasNext() ) {
CrNode node = (CrNode) iter.next();
- nodeDAO.insert(node);
+ nodeDAO.saveOrUpdate(node);
}
}
Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java
===================================================================
diff -u -r4bae0c2d63e539e30d191484a9ee293fb4745a08 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java (.../TestSimpleRepository.java) (revision 4bae0c2d63e539e30d191484a9ee293fb4745a08)
+++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java (.../TestSimpleRepository.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -34,13 +34,15 @@
import org.lamsfoundation.lams.contentrepository.FileException;
import org.lamsfoundation.lams.contentrepository.ICredentials;
import org.lamsfoundation.lams.contentrepository.ITicket;
+import org.lamsfoundation.lams.contentrepository.IValue;
import org.lamsfoundation.lams.contentrepository.IVersionDetail;
import org.lamsfoundation.lams.contentrepository.IVersionedNode;
import org.lamsfoundation.lams.contentrepository.ItemExistsException;
import org.lamsfoundation.lams.contentrepository.ItemNotFoundException;
import org.lamsfoundation.lams.contentrepository.LoginException;
import org.lamsfoundation.lams.contentrepository.NodeKey;
import org.lamsfoundation.lams.contentrepository.NodeType;
+import org.lamsfoundation.lams.contentrepository.PropertyType;
import org.lamsfoundation.lams.contentrepository.RepositoryCheckedException;
import org.lamsfoundation.lams.contentrepository.WorkspaceNotFoundException;
import org.lamsfoundation.lams.contentrepository.dao.IFileDAO;
@@ -463,9 +465,11 @@
}
+ /** Tests that a package item can be created, update and that at property can be set. */
public void testPackageItem() {
NodeKey keys = testPackageItem(null);
testPackageItem(keys.getUuid());
+ testSetProperty(keys);
}
private NodeKey testPackageItem(Long uuid) {
@@ -539,6 +543,42 @@
return keys;
}
+ private void testSetProperty(NodeKey keys) {
+ String propertyName = "CUSTOM";
+ Boolean value = Boolean.TRUE;
+
+ List nodes;
+ try {
+ nodes = repository.getPackageNodes(ticket, keys.getUuid(), keys.getVersion());
+ Iterator iter = nodes.iterator();
+ if ( iter.hasNext() ) {
+ SimpleVersionedNode packageNode = (SimpleVersionedNode) iter.next();
+ assertTrue("First node is the package node. (A)",
+ packageNode.isNodeType(NodeType.PACKAGENODE));
+ repository.setProperty(ticket, keys.getUuid(), keys.getVersion(), propertyName, value, PropertyType.BOOLEAN);
+ } else {
+ fail("No nodes found for package "+keys);
+ }
+
+ // now, is the property set?
+ nodes = repository.getPackageNodes(ticket, keys.getUuid(), keys.getVersion());
+ iter = nodes.iterator();
+ if ( iter.hasNext() ) {
+ SimpleVersionedNode packageNode = (SimpleVersionedNode) iter.next();
+ assertTrue("First node is the package node. (B)",
+ packageNode.isNodeType(NodeType.PACKAGENODE));
+ IValue newValue = packageNode.getProperty(propertyName);
+ assertTrue("newValue is a TRUE Boolean",
+ Boolean.TRUE.equals(newValue.getBoolean()) && newValue.getType()==PropertyType.BOOLEAN);
+ } else {
+ fail("No nodes found for package "+keys);
+ }
+ } catch (RepositoryCheckedException e) {
+ failUnexpectedException("testSetProperty",e);
+ }
+
+ }
+
/**
* @param keys
* @param relPath
Index: lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleVersionedNode.java
===================================================================
diff -u -r4bae0c2d63e539e30d191484a9ee293fb4745a08 -r1492a6385b0f6e855ce08f2fe7570b4af8b53b21
--- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleVersionedNode.java (.../TestSimpleVersionedNode.java) (revision 4bae0c2d63e539e30d191484a9ee293fb4745a08)
+++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleVersionedNode.java (.../TestSimpleVersionedNode.java) (revision 1492a6385b0f6e855ce08f2fe7570b4af8b53b21)
@@ -147,15 +147,15 @@
if ( expectedBoolean != null ) {
try {
- boolean val = iValue.getBoolean();
+ Boolean val = iValue.getBoolean();
assertTrue("Property accessable as boolean ("+val+")",
- val == expectedBoolean.booleanValue());
+ expectedBoolean.equals(val));
} catch (ValueFormatException e1) {
failUnexpectedException(e1);
}
} else {
try {
- boolean val = iValue.getBoolean();
+ Boolean val = iValue.getBoolean();
fail("ValueFormatException exception expected. Value returned as "+val);
} catch (ValueFormatException e1) {
assertTrue("ValueFormatException thrown as expected",true);