Index: lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java,v
diff -u -r1.4 -r1.5
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java 8 Apr 2005 00:05:32 -0000 1.4
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/CrNodeVersionProperty.java 5 Jul 2005 03:24:58 -0000 1.5
@@ -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 1.4 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 1.3 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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java,v
diff -u -r1.2 -r1.3
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java 21 Feb 2005 06:12:46 -0000 1.2
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IValue.java 5 Jul 2005 03:24:58 -0000 1.3
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java,v
diff -u -r1.2 -r1.3
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java 21 Feb 2005 06:12:46 -0000 1.2
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/IVersionedNodeAdmin.java 5 Jul 2005 03:24:58 -0000 1.3
@@ -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 1.4 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 1.7 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 1.3 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 1.6 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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml,v
diff -u -r1.1 -r1.2
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml 21 Apr 2005 03:39:03 -0000 1.1
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/applicationContext.xml 5 Jul 2005 03:24:58 -0000 1.2
@@ -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/localApplicationContext.xml
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/Attic/localApplicationContext.xml,v
diff -u -r1.1 -r1.2
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/localApplicationContext.xml 21 Apr 2005 03:39:03 -0000 1.1
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/localApplicationContext.xml 5 Jul 2005 03:24:58 -0000 1.2
@@ -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/dao/INodeDAO.java
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java,v
diff -u -r1.4 -r1.5
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java 21 Feb 2005 06:12:45 -0000 1.4
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/INodeDAO.java 5 Jul 2005 03:24:58 -0000 1.5
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java,v
diff -u -r1.4 -r1.5
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java 21 Feb 2005 06:12:45 -0000 1.4
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/dao/hibernate/NodeDAO.java 5 Jul 2005 03:24:59 -0000 1.5
@@ -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/service/IRepositoryService.java
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java,v
diff -u -r1.2 -r1.3
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java 21 Apr 2005 03:39:03 -0000 1.2
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/IRepositoryService.java 5 Jul 2005 03:24:59 -0000 1.3
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java,v
diff -u -r1.1 -r1.2
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java 18 Apr 2005 00:01:49 -0000 1.1
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleRepository.java 5 Jul 2005 03:24:59 -0000 1.2
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java,v
diff -u -r1.1 -r1.2
--- lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 18 Apr 2005 00:01:49 -0000 1.1
+++ lams_contentrepository/src/java/org/lamsfoundation/lams/contentrepository/service/SimpleVersionedNode.java 5 Jul 2005 03:24:59 -0000 1.2
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/Attic/TestSimpleRepository.java,v
diff -u -r1.2 -r1.3
--- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java 9 May 2005 10:32:37 -0000 1.2
+++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleRepository.java 5 Jul 2005 03:24:59 -0000 1.3
@@ -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
===================================================================
RCS file: /usr/local/cvsroot/lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/Attic/TestSimpleVersionedNode.java,v
diff -u -r1.2 -r1.3
--- lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleVersionedNode.java 9 May 2005 10:32:37 -0000 1.2
+++ lams_contentrepository/test/java/org/lamsfoundation/lams/contentrepository/service/TestSimpleVersionedNode.java 5 Jul 2005 03:24:59 -0000 1.3
@@ -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);