Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * RHQ Management Platform
   * Copyright (C) 2005-2014 Red Hat, Inc.
   * All rights reserved.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License, version 2, as
   * published by the Free Software Foundation, and/or the GNU Lesser
   * General Public License, version 2.1, also as published by the Free
  * Software Foundation.
  *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  * GNU General Public License and the GNU Lesser General Public License
  * for more details.
  *
  * You should have received a copy of the GNU General Public License
  * and the GNU Lesser General Public License along with this program;
  * if not, write to the Free Software Foundation, Inc.,
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
  */
 
 package org.rhq.bundle.ant.type;
 
 import java.io.File;
 import java.util.List;
 
 

Author(s):
Ian Springer
 
 public abstract class AbstractBundleType extends DataType {
     @Override
     public BundleAntProject getProject() {
         return (BundleAntProjectsuper.getProject();
     }
 
     protected static Pattern getPattern(List<FileSetfileSets) {
         if (fileSets == null || fileSets.isEmpty()) {
             return null;
         }
         boolean first = true;
         StringBuilder regex = new StringBuilder();
         for (FileSet fileSet : fileSets) {
             if (!first) {
                 regex.append("|");
             } else {
                 first = false;
             }
             regex.append("(");
             File dir = fileSet.getDir();
             if (dir != null) {
                 String path = FileUtil.useForwardSlash(dir.getPath());
                 regex.append(path);
                 regex.append('/');
             }
             if (fileSet.getIncludePatterns().length == 0) {
                 regex.append(".*");
             } else {
                 boolean firstIncludePattern = true;
                 for (String includePattern : fileSet.getIncludePatterns()) {
                     if (!firstIncludePattern) {
                         regex.append("|");
                     } else {
                         firstIncludePattern = false;
                     }
                     regex.append("(");
                     buildIncludePatternRegex(includePatternregex);
                     regex.append(")");
                 }
             }
             regex.append(")");
         }
         return Pattern.compile(regex.toString());
     }

    
Builds a regex expression for a single include pattern.

Parameters:
includePattern the single include pattern to build a regex for
regex appends all regex characters to this regex string
 
     protected static void buildIncludePatternRegex(String includePatternStringBuilder regex) {
         for (int i = 0; i < includePattern.length(); i++) {
             char c = includePattern.charAt(i);
             if (c == '?') {
                 regex.append('.');
             } else if (c == '*') {
                 if (i + 1 < includePattern.length()) {
                     char c2 = includePattern.charAt(i + 1);
                     if (c2 == '*') {
                         regex.append(".*");
                         i += 2;
                        continue;
                    }
                }
                regex.append("[^/]*");
            } else if (c == '.') {
                regex.append("\\.");
            } else {
                regex.append(c);
            }
            // TODO: Escape backslashes.
        }
    }
New to GrepCode? Check out our FAQ X