001: /*
002: * Copyright 2006-2007 The Kuali Foundation.
003: *
004: * Licensed under the Educational Community License, Version 1.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.opensource.org/licenses/ecl1.php
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package org.kuali.workflow.attribute;
017:
018: import java.io.BufferedReader;
019: import java.io.FileReader;
020: import java.io.IOException;
021: import java.io.Reader;
022:
023: import org.apache.commons.lang.StringUtils;
024:
025: import edu.iu.uis.eden.doctype.DocumentType;
026: import edu.iu.uis.eden.engine.RouteContext;
027: import edu.iu.uis.eden.exception.InvalidXmlException;
028: import edu.iu.uis.eden.routeheader.DocumentContent;
029: import edu.iu.uis.eden.routeheader.DocumentRouteHeaderValue;
030: import edu.iu.uis.eden.routeheader.StandardDocumentContent;
031:
032: /**
033: * This class contains various utility methods for doing tests on workflow attributes.
034: */
035: public class KualiAttributeTestUtil {
036:
037: public static final String RELATIVE_PATH_IN_PROJECT = "test/src/org/kuali/workflow/attribute/";
038: public static final String RELATIVE_PATH_IN_PROJECT_WORKFLOW = "test/src/org/kuali/workflow/";
039:
040: public static final String TOF_FEMP_SUBCODE_ONELINER = "TransferOfFunds_FEMPSubcode_OneLiner.xml";
041: public static final String TOF_SUB_ACCOUNT_TEST_DOC = "TransferOfFunds_SubAccountTestDoc.xml";
042: public static final String PAYEE_MAINTENANCE_NEWDOC = "PayeeMaintenanceDocument_CreateNew.xml";
043: public static final String PURCHASE_ORDER_DOCUMENT = "PurchaseOrderDocument_AmountTest.xml";
044:
045: /**
046: * This method loads a document XML from a file in this directory, and loads it into a DocumentContent class, which is then
047: * returned.
048: *
049: * @param fileName - file name (no path) of a file in the same directory as the test
050: * @return Returns a DocumentContent instance (StandardDocumentContent) populated with the XML loaded from the file
051: * @throws IOException
052: * @throws InvalidXmlException
053: */
054: public static final DocumentContent getDocumentContentFromXmlFile(
055: String fileName, String docTypeName) throws IOException,
056: InvalidXmlException {
057: return getDocumentContentFromXmlFileAndPath(fileName,
058: KualiAttributeTestUtil.RELATIVE_PATH_IN_PROJECT,
059: docTypeName);
060: }
061:
062: public static final DocumentContent getDocumentContentFromXmlFileAndPath(
063: String fileName, String path, String docTypeName)
064: throws IOException, InvalidXmlException {
065: if (StringUtils.isBlank(fileName)) {
066: throw new IllegalArgumentException(
067: "The fileName parameter passed in was blank.");
068: }
069: BufferedReader reader = new BufferedReader(new FileReader(path
070: + fileName));
071: RouteContext routeContext = RouteContext
072: .getCurrentRouteContext();
073: DocumentRouteHeaderValue docRouteHeaderValue = new DocumentRouteHeaderValue();
074: DocumentType docType = new DocumentType();
075: docType.setName(docTypeName);
076: docRouteHeaderValue.setDocumentTypeId(docType
077: .getDocumentTypeId());
078: routeContext.setDocument(docRouteHeaderValue);
079: StandardDocumentContent newContent = new StandardDocumentContent(
080: readerToString(reader), routeContext);
081: routeContext.setDocumentContent(newContent);
082: return newContent;
083: }
084:
085: private static String readerToString(Reader is) throws IOException {
086:
087: StringBuffer sb = new StringBuffer();
088: char[] charBytes = new char[8192];
089: int charsRead;
090:
091: // read a block, if it gets any chars, append them
092: while ((charsRead = is.read(charBytes)) > 0) {
093: sb.append(charBytes, 0, charsRead);
094: }
095:
096: // only construct the string once, here
097: return sb.toString();
098: }
099:
100: }
|