001 /* 002 Copyright (c) 2012, Regents of the University of Colorado 003 All rights reserved. 004 005 Redistribution and use in source and binary forms, with or without modification, 006 are permitted provided that the following conditions are met: 007 008 * Redistributions of source code must retain the above copyright notice, this 009 list of conditions and the following disclaimer. 010 011 * Redistributions in binary form must reproduce the above copyright notice, 012 this list of conditions and the following disclaimer in the documentation 013 and/or other materials provided with the distribution. 014 015 * Neither the name of the University of Colorado nor the names of its 016 contributors may be used to endorse or promote products derived from this 017 software without specific prior written permission. 018 019 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 020 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 021 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 022 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR 023 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES 024 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 025 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 026 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 027 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 028 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 029 */ 030 package edu.ucdenver.ccp.nlp.biolemmatizer.uima; 031 032 import org.apache.uima.jcas.JCas; 033 import org.apache.uima.jcas.cas.FSArray; 034 import org.apache.uima.jcas.cas.StringArray; 035 import org.apache.uima.jcas.cas.TOP; 036 037 /** 038 * This class contains a few simple utility methods related to UIMA 039 * 040 * @author Colorado Computational Pharmacology, UC Denver; ccpsupport@ucdenver.edu 041 * 042 */ 043 public class UimaUtil { 044 045 /** 046 * Adds a single feature structure to the input {@link FSArray}. IF the input {@link FSArray} is 047 * null, a new one is initialized 048 * 049 * @param fsArray 050 * @param featureStructureToAdd 051 * @param jcas 052 * @return a copy of the input {@link FSArray} with the input featureStructureToAdd added to it 053 */ 054 public static FSArray addToFSArray(FSArray fsArray, TOP featureStructureToAdd, JCas jcas) { 055 FSArray fsArrayToReturn; 056 if (fsArray == null) { 057 fsArrayToReturn = new FSArray(jcas, 1); 058 } else { 059 fsArrayToReturn = new FSArray(jcas, fsArray.size() + 1); 060 for (int i = 0; i < fsArray.size(); i++) { 061 fsArrayToReturn.set(i, fsArray.get(i)); 062 } 063 } 064 065 fsArrayToReturn.set(fsArrayToReturn.size() - 1, featureStructureToAdd); 066 return fsArrayToReturn; 067 } 068 069 /** 070 * Adds a single String to the input {@link StringArray}. If the input {@link StringArray} is 071 * null, a new one is initialized 072 * 073 * @param stringArray 074 * @param stringToAdd 075 * @param jcas 076 * @return a copy of the input {@link StringArray} with the input stringToAdd added to it 077 */ 078 public static StringArray addToStringArray(StringArray stringArray, String stringToAdd, JCas jcas) { 079 StringArray stringArrayToReturn; 080 if (stringArray == null) { 081 stringArrayToReturn = new StringArray(jcas, 1); 082 } else { 083 stringArrayToReturn = new StringArray(jcas, stringArray.size() + 1); 084 for (int i = 0; i < stringArray.size(); i++) { 085 stringArrayToReturn.set(i, stringArray.get(i)); 086 } 087 } 088 089 stringArrayToReturn.set(stringArrayToReturn.size() - 1, stringToAdd); 090 return stringArrayToReturn; 091 } 092 093 }