View Javadoc

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  }