1 /** 2 * Copyright 2005-2016 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package edu.sampleu.bookstore.document.attribs; 17 18 import org.apache.log4j.Logger; 19 import org.kuali.rice.core.api.uif.DataType; 20 import org.kuali.rice.core.api.uif.RemotableAttributeError; 21 import org.kuali.rice.core.api.uif.RemotableAttributeField; 22 import org.kuali.rice.kew.api.KewApiConstants; 23 import org.kuali.rice.kew.api.document.DocumentWithContent; 24 import org.kuali.rice.kew.api.document.attribute.DocumentAttribute; 25 import org.kuali.rice.kew.api.document.attribute.DocumentAttributeFactory; 26 import org.kuali.rice.kew.api.document.attribute.WorkflowAttributeDefinition; 27 import org.kuali.rice.kew.api.document.search.DocumentSearchCriteria; 28 import org.kuali.rice.kew.api.extension.ExtensionDefinition; 29 import org.kuali.rice.kew.docsearch.DocumentSearchInternalUtils; 30 import org.kuali.rice.kew.docsearch.SearchableAttributeValue; 31 import org.kuali.rice.kew.framework.document.attribute.SearchableAttribute; 32 import org.kuali.rice.kew.rule.xmlrouting.XPathHelper; 33 import org.kuali.rice.kns.util.FieldUtils; 34 35 import javax.jws.WebParam; 36 import javax.xml.xpath.XPath; 37 import javax.xml.xpath.XPathConstants; 38 import javax.xml.xpath.XPathExpressionException; 39 import java.io.StringReader; 40 import java.util.ArrayList; 41 import java.util.List; 42 43 /** 44 * Searchable attribute for book title 45 * TODO: probably needs to be wired up to extension repository for remote invocation 46 * 47 * <documentContent> 48 <applicationContent> 49 <org.kuali.rice.krad.workflow.KualiDocumentXmlMaterializer> 50 ... 51 <newMaintainableObject class="edu.sampleu.bookstore.maintenance.BookMaintainable"> 52 <businessObject class="edu.sampleu.bookstore.bo.Book"> 53 <title>asdfasdf</title> 54 <typeCode>ROM</typeCode> 55 <isbn/> 56 <publisher>asfdasdd</publisher> 57 <price> 58 <value>1212.00</value> 59 </price> 60 <rating> 61 <value>1</value> 62 </rating> 63 <authors> 64 <edu.sampleu.bookstore.bo.Author> 65 <authorName>asdfasdf</authorName> 66 <email>asdfasdf@gmailc.om</email> 67 <phoneNbr>123-123-1234</phoneNbr> 68 <active>true</active> 69 <addresses/> 70 <books/> 71 <newCollectionRecord>false</newCollectionRecord> 72 <extension class="edu.sampleu.bookstore.bo.Account"> 73 <bankName>asdfasdf</bankName> 74 <accountNumber>12345</accountNumber> 75 <newCollectionRecord>false</newCollectionRecord> 76 </extension> 77 </edu.sampleu.bookstore.bo.Author> 78 </authors> 79 <newCollectionRecord>false</newCollectionRecord> 80 </businessObject> 81 <newCollectionLines/> 82 <inactiveRecordDisplay/> 83 <newCollectionLineNames/> 84 <documentNumber>3020</documentNumber> 85 <dataObject class="edu.sampleu.bookstore.bo.Book" reference="../businessObject"/> 86 <dataObjectClass>edu.sampleu.bookstore.bo.Book</dataObjectClass> 87 <maintenanceAction>New</maintenanceAction> 88 </newMaintainableObject> 89 .. 90 */ 91 public class BookTitleSearchableAttribute extends XPathSearchableAttribute { 92 public BookTitleSearchableAttribute() { 93 super("book_title", KewApiConstants.SearchableAttributeConstants.DATA_TYPE_STRING, "//newMaintainableObject/businessObject/title/text()", "Book Title"); 94 } 95 }