]> git.aero2k.de Git - tmp/jakarta-migration.git/commitdiff
CSPACE-1826: Added a Lender repeatable group of four fields to Loan In records, in...
authorAron Roberts <aron@socrates.berkeley.edu>
Sat, 20 Nov 2010 02:10:23 +0000 (02:10 +0000)
committerAron Roberts <aron@socrates.berkeley.edu>
Sat, 20 Nov 2010 02:10:23 +0000 (02:10 +0000)
services/common/src/main/config/services/tenant-bindings.xml
services/loanin/3rdparty/nuxeo-platform-cs-loanin/src/main/resources/OSGI-INF/core-types-contrib.xml
services/loanin/3rdparty/nuxeo-platform-cs-loanin/src/main/resources/schemas/loansin_common.xsd
services/loanin/client/src/test/java/org/collectionspace/services/client/test/LoaninAuthRefsTest.java
services/loanin/client/src/test/java/org/collectionspace/services/client/test/LoaninServiceTest.java
services/loanin/jaxb/src/main/java/org/collectionspace/services/LoaninListItemJAXBSchema.java
services/loanin/jaxb/src/main/resources/loansin-common.xsd
services/loanin/service/src/main/java/org/collectionspace/services/loanin/nuxeo/LoaninDocumentModelHandler.java

index ceb8c364f207d77948730e01a120a4ba0e02be99..e273acddde1970728a1e959d578b9a6efdc0b28d 100644 (file)
                               versionable="true" auditable="false"
                               label="loansin_common" updated="" order="1">
                     <service:properties>
-                        <types:item><types:key>authRef</types:key><types:value>lender</types:value></types:item>
-                        <types:item><types:key>authRef</types:key><types:value>lendersAuthorizer</types:value></types:item>
-                        <types:item><types:key>authRef</types:key><types:value>lendersContact</types:value></types:item>
+                        <!-- Commented out for now, as searching within a field in a complexType breaks searches -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lender</types:value></types:item -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lendersAuthorizer</types:value></types:item -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lendersContact</types:value></types:item -->
                         <types:item><types:key>authRef</types:key><types:value>loanInContact</types:value></types:item>
                         <types:item><types:key>authRef</types:key><types:value>borrowersAuthorizer</types:value></types:item>
                     </service:properties>
                               versionable="true" auditable="false"
                               label="loansin_common" updated="" order="1">
                     <service:properties>
-                        <types:item><types:key>authRef</types:key><types:value>lender</types:value></types:item>
-                        <types:item><types:key>authRef</types:key><types:value>lendersAuthorizer</types:value></types:item>
-                        <types:item><types:key>authRef</types:key><types:value>lendersContact</types:value></types:item>
+                        <!-- Commented out for now, as searching within a field in a complexType breaks searches -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lender</types:value></types:item -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lendersAuthorizer</types:value></types:item -->
+                        <!-- types:item><types:key>authRef</types:key><types:value>lendersContact</types:value></types:item -->
                         <types:item><types:key>authRef</types:key><types:value>loanInContact</types:value></types:item>
                         <types:item><types:key>authRef</types:key><types:value>borrowersAuthorizer</types:value></types:item>
                     </service:properties>
index 534214b109baa1ba32badfe3df10091b4c063c83..16661d86b358e094fdbab594a6db3da810858f34 100644 (file)
@@ -9,9 +9,10 @@
       <schema name="dublincore"/>
       <schema name="collectionspace_core"/>
       <schema name="loansin_common"/>
+      <!-- Removed loansin_common:lender from the list below until we -->
+      <!-- find out if/how to include elements in complexTypes -->
       <prefetch>
        loansin_common:loanInNumber
-       loansin_common:lender
        loansin_common:loanReturnDate
       </prefetch>
     </doctype>
index da97dd42bf9a087de0d916ba08bfd963c292bfb5..b6ec0d8821e7905116b9a0faa48c14c88eb7eeb1 100644 (file)
 \r
     <!--  Loan In Information Group -->\r
     <xs:element name="loanInNumber" type="xs:string"/>\r
-    <xs:element name="lender" type="xs:string"/>\r
-    <xs:element name="lendersAuthorizer" type="xs:string"/>\r
-    <xs:element name="lendersAuthorizationDate" type="xs:string"/>\r
-    <xs:element name="lendersContact" type="xs:string"/>\r
+    <xs:element name="lenderGroupList" type="lenderGroupList"/>\r
     <xs:element name="loanInContact" type="xs:string"/>\r
     <xs:element name="borrowersAuthorizer" type="xs:string"/>\r
     <xs:element name="loanInConditions" type="xs:string"/>\r
     <xs:element name="loanRenewalApplicationDate" type="xs:string"/>\r
     <xs:element name="loanInNote" type="xs:string"/>\r
     <xs:element name="loanPurpose" type="xs:string"/>\r
-    \r
+\r
+    <xs:complexType name="lenderGroupList">\r
+       <xs:sequence>\r
+           <xs:element name="lenderGroup" type="lenderGroup" minOccurs="0"\r
+                   maxOccurs="unbounded"/>\r
+       </xs:sequence>\r
+    </xs:complexType>\r
+\r
+    <xs:complexType name="lenderGroup">\r
+       <xs:sequence>\r
+           <xs:element name="lender" type="xs:string"/>\r
+           <xs:element name="lendersAuthorizer" type="xs:string"/>\r
+           <xs:element name="lendersAuthorizationDate" type="xs:string"/>\r
+           <xs:element name="lendersContact" type="xs:string"/>\r
+       </xs:sequence>\r
+    </xs:complexType>\r
+\r
 </xs:schema>\r
index 365e7c22d8064df02e47c507f8905cdbdfd630f0..fb2a82bdcfb40a06d841cf6051f28e0aadf4d4aa 100644 (file)
@@ -38,6 +38,8 @@ import org.collectionspace.services.client.PersonAuthorityClientUtils;
 import org.collectionspace.services.common.authorityref.AuthorityRefList;
 //import org.collectionspace.services.common.authorityref.AuthorityRefList.AuthorityRefItem;
 import org.collectionspace.services.jaxb.AbstractCommonList;
+import org.collectionspace.services.loanin.LenderGroup;
+import org.collectionspace.services.loanin.LenderGroupList;
 import org.collectionspace.services.loanin.LoansinCommon;
 //import org.collectionspace.services.loanin.LoansinCommonList;
 
@@ -77,9 +79,9 @@ public class LoaninAuthRefsTest extends BaseServiceTest {
     private String lendersContactRefName = null;
     private String loanInContactRefName = null;
     private String borrowersAuthorizerRefName = null;
-    // FIXME: May change when repeatable / multivalue 'lenders' field is added
-    // to tenant-bindings.xml
-    private final int NUM_AUTH_REFS_EXPECTED = 5;
+    // FIXME: Value changed from 5 to 2 when repeatable / multivalue 'lenders'
+    // group was added to tenant-bindings.xml
+    private final int NUM_AUTH_REFS_EXPECTED = 2;
 
     /* (non-Javadoc)
      * @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
@@ -258,9 +260,9 @@ public class LoaninAuthRefsTest extends BaseServiceTest {
             logger.debug(objectAsXmlString(loanin, LoansinCommon.class));
         }
         // Check a couple of fields
-        Assert.assertEquals(loanin.getLender(), lenderRefName);
-        Assert.assertEquals(loanin.getLendersAuthorizer(), lendersAuthorizerRefName);
-        Assert.assertEquals(loanin.getLendersContact(), lendersContactRefName);
+//        Assert.assertEquals(loanin.getLender(), lenderRefName);
+//        Assert.assertEquals(loanin.getLendersAuthorizer(), lendersAuthorizerRefName);
+//        Assert.assertEquals(loanin.getLendersContact(), lendersContactRefName);
         Assert.assertEquals(loanin.getLoanInContact(), loanInContactRefName);
         Assert.assertEquals(loanin.getBorrowersAuthorizer(), borrowersAuthorizerRefName);
         
@@ -375,9 +377,13 @@ public class LoaninAuthRefsTest extends BaseServiceTest {
         LoansinCommon loanin = new LoansinCommon();
         loanin.setLoanInNumber(loaninNumber);
         loanin.setLoanInNumber(returnDate);
-        loanin.setLender(lender);
-        loanin.setLendersAuthorizer(lendersAuthorizer);
-        loanin.setLendersContact(lendersContact);
+        LenderGroupList lenderGroupList =  new LenderGroupList();
+        LenderGroup lenderGroup = new LenderGroup();
+        lenderGroup.setLender(lender);
+        lenderGroup.setLendersAuthorizer(lendersAuthorizer);
+        lenderGroup.setLendersContact(lendersContact);
+        lenderGroupList.getLenderGroup().add(lenderGroup);
+        loanin.setLenderGroupList(lenderGroupList);
         loanin.setLoanInContact(loaninContact);
         loanin.setBorrowersAuthorizer(borrowersAuthorizer);
         MultipartOutput multipart = new MultipartOutput();
index 93d22ec174389c89ff03eb6d1ead960752ed3b6e..44da361ee12000d5e27ea11d15b28cb1070c60e9 100644 (file)
@@ -30,6 +30,8 @@ import javax.ws.rs.core.Response;
 import org.collectionspace.services.client.CollectionSpaceClient;
 import org.collectionspace.services.client.LoaninClient;
 import org.collectionspace.services.jaxb.AbstractCommonList;
+import org.collectionspace.services.loanin.LenderGroup;
+import org.collectionspace.services.loanin.LenderGroupList;
 import org.collectionspace.services.loanin.LoansinCommon;
 import org.collectionspace.services.loanin.LoansinCommonList;
 
@@ -64,6 +66,9 @@ public class LoaninServiceTest extends AbstractServiceTestImpl {
     /** The known resource id. */
     private String knownResourceId = null;
 
+    private String LENDER_REF_NAME =
+            "urn:cspace:org.collectionspace.demo:personauthority:name(TestPersonAuth):person:name(Harry Lender)'Harry Lender'";
+
     /* (non-Javadoc)
      * @see org.collectionspace.services.client.test.BaseServiceTest#getClientInstance()
      */
@@ -311,6 +316,15 @@ public class LoaninServiceTest extends AbstractServiceTestImpl {
         LoansinCommon loanin = (LoansinCommon) extractPart(input,
                 client.getCommonPartName(), LoansinCommon.class);
         Assert.assertNotNull(loanin);
+
+        LenderGroupList lenderGroupList = loanin.getLenderGroupList();
+        Assert.assertNotNull(lenderGroupList);
+        List<LenderGroup> lenderGroups = lenderGroupList.getLenderGroup();
+        Assert.assertNotNull(lenderGroups);
+        Assert.assertTrue(lenderGroups.size() > 0);
+        String lender = lenderGroups.get(0).getLender();
+        Assert.assertEquals(lender, LENDER_REF_NAME);
+
     }
 
     // Failure outcomes
@@ -773,7 +787,11 @@ public class LoaninServiceTest extends AbstractServiceTestImpl {
         LoansinCommon loanin = new LoansinCommon();
         loanin.setLoanInNumber(loaninNumber);
         loanin.setLoanReturnDate(returnDate);
-        loanin.setLender("urn:cspace:org.collectionspace.demo:personauthority:name(TestPersonAuth):person:name(Harry Lender)'Harry Lender'");
+        LenderGroupList lenderGroupList = new LenderGroupList();
+        LenderGroup lenderGroup = new LenderGroup();
+        lenderGroup.setLender(LENDER_REF_NAME);
+        lenderGroupList.getLenderGroup().add(lenderGroup);
+        loanin.setLenderGroupList(lenderGroupList);
         loanin.setLoanPurpose("For Surfboards of the 1960s exhibition.");
         MultipartOutput multipart = new MultipartOutput();
         OutputPart commonPart =
index 7fa960175e0244f27e24356d3aca2821d003ccc9..3cb5db8f41fa6eadbd104b26c049feca6848661e 100644 (file)
@@ -2,6 +2,7 @@ package org.collectionspace.services;
 
 public interface LoaninListItemJAXBSchema {
        final static String LOAN_IN_NUMBER = "loaninNumber";
+       final static String LENDER_GROUP_LIST = "lenderGroupList";
        final static String LENDER = "lender";
        final static String LOAN_RETURN_DATE = "loanReturnDate";
        final static String CSID = "csid";
index 26e3095c637cd86b438698f74977a77f2a0d67e7..a5b742ab5e854eced59bad9c4587f0e1f3eae5e8 100644 (file)
             <xs:sequence>                
                 <!--  Loan In Information Group -->
                 <xs:element name="loanInNumber" type="xs:string"/>
-                <xs:element name="lender" type="xs:string"/>
-                <xs:element name="lendersAuthorizer" type="xs:string"/>
-                <xs:element name="lendersAuthorizationDate" type="xs:string"/>
-                <xs:element name="lendersContact" type="xs:string"/>
+                <xs:element name="lenderGroupList" type="lenderGroupList"/>
                 <xs:element name="loanInContact" type="xs:string"/>
                 <xs:element name="borrowersAuthorizer" type="xs:string"/>
                 <xs:element name="loanInConditions" type="xs:string"/>
             </xs:sequence>
         </xs:complexType>
     </xs:element>
-    
+
+    <xs:complexType name="lenderGroupList">
+       <xs:sequence>
+           <xs:element name="lenderGroup" type="lenderGroup" minOccurs="0"
+                   maxOccurs="unbounded"/>
+       </xs:sequence>
+    </xs:complexType>
+
+    <xs:complexType name="lenderGroup">
+       <xs:sequence>
+           <xs:element name="lender" type="xs:string"/>
+           <xs:element name="lendersAuthorizer" type="xs:string"/>
+           <xs:element name="lendersAuthorizationDate" type="xs:string"/>
+           <xs:element name="lendersContact" type="xs:string"/>
+       </xs:sequence>
+    </xs:complexType>
+
     <!-- This is the base class for paginated lists -->
     <xs:complexType name="abstractCommonList">
         <xs:annotation>
index 4632d323095e930ffe7a244c63ab80ac11209114..17a4e84fa3a1e20426955afb09cd15441ae5426d 100644 (file)
@@ -25,11 +25,13 @@ package org.collectionspace.services.loanin.nuxeo;
 
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
 import org.collectionspace.services.LoaninJAXBSchema;
 import org.collectionspace.services.LoaninListItemJAXBSchema;
 import org.collectionspace.services.common.document.DocumentWrapper;
 import org.collectionspace.services.jaxb.AbstractCommonList;
+import org.collectionspace.services.loanin.LenderGroup;
 import org.collectionspace.services.loanin.LoansinCommon;
 import org.collectionspace.services.loanin.LoansinCommonList;
 import org.collectionspace.services.loanin.LoansinCommonList.LoaninListItem;
@@ -121,7 +123,7 @@ public class LoaninDocumentModelHandler
     public LoansinCommonList extractCommonPartList(DocumentWrapper<DocumentModelList> wrapDoc) throws Exception {
         LoansinCommonList coList = extractPagingInfo(new LoansinCommonList(), wrapDoc);
         AbstractCommonList commonList = (AbstractCommonList) coList;
-        commonList.setFieldsReturned("loanInNumber|lender|loanReturnDate|uri|csid");
+        commonList.setFieldsReturned("loanInNumber|lenderList|loanReturnDate|uri|csid");
         List<LoansinCommonList.LoaninListItem> list = coList.getLoaninListItem();
         Iterator<DocumentModel> iter = wrapDoc.getWrappedObject().iterator();
         String label = getServiceContext().getCommonPartLabel();
@@ -130,8 +132,17 @@ public class LoaninDocumentModelHandler
             LoaninListItem ilistItem = new LoaninListItem();
             ilistItem.setLoanInNumber((String) docModel.getProperty(label,
                     LoaninJAXBSchema.LOAN_IN_NUMBER));
-            ilistItem.setLender((String) docModel.getProperty(label,
-                    LoaninListItemJAXBSchema.LENDER));
+
+            // ilistItem.setLender((String) docModel.getProperty(label,
+            //        LoaninListItemJAXBSchema.LENDER));
+
+            List<Object> lenders =
+                 (List<Object>) docModel.getProperty(label,
+                     LoaninListItemJAXBSchema.LENDER_GROUP_LIST);
+            String primaryLender = primaryValueFromMultivalue(lenders,
+                    LoaninListItemJAXBSchema.LENDER);
+            ilistItem.setLender(primaryLender);
+
             ilistItem.setLoanReturnDate((String) docModel.getProperty(label,
                     LoaninJAXBSchema.LOAN_RETURN_DATE));
             String id = NuxeoUtils.extractId(docModel.getPathAsString());