1 package com.imcode.util;
2
3 import org.apache.commons.lang.StringEscapeUtils;
4 import org.apache.commons.lang.StringUtils;
5
6 import java.util.ArrayList;
7 import java.util.List;
8 import java.util.regex.Pattern;
9
10 public class KeywordsParser {
11
12 public String[] parseKeywords( String keywordsString ) {
13 List keywords = new ArrayList();
14 StringBuffer currentKeyword = new StringBuffer();
15 boolean insideString = false;
16 for ( int i = 0; i < keywordsString.length(); ++i ) {
17 char c = keywordsString.charAt( i );
18 if ( '"' == c ) {
19 insideString = !insideString;
20 } else if ( isKeywordCharacter(c) || insideString ) {
21 currentKeyword.append( c );
22 } else if ( 0 < currentKeyword.length() ) {
23 keywords.add( currentKeyword.toString() );
24 currentKeyword.setLength( 0 );
25 }
26 }
27 if ( 0 < currentKeyword.length() ) {
28 keywords.add( currentKeyword.toString() );
29 }
30 return (String[])keywords.toArray( new String[keywords.size()] );
31 }
32
33 protected boolean isKeywordCharacter(char c) {
34 return Character.isLetterOrDigit( c );
35 }
36
37 public String formatKeywords ( String[] keywords ) {
38
39 for ( int i = 0; i < keywords.length; i++ ) {
40 if (Pattern.compile("[^//p{L}//d]").matcher(keywords[i]).find()) {
41 keywords[i] = '"'+keywords[i]+'"' ;
42 }
43 }
44 return StringUtils.join( keywords, ", " ) ;
45 }
46
47
48 }