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>
<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>
\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
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;
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()
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);
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();
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;
/** 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()
*/
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
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 =
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";
<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>
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;
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();
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());