0,0 → 1,97 |
/* |
* Copyright 2012 Brian Rosenberger (Brutex Network) |
* |
* Licensed under the Apache License, Version 2.0 (the "License"); |
* you may not use this file except in compliance with the License. |
* You may obtain a copy of the License at |
* |
* http://www.apache.org/licenses/LICENSE-2.0 |
* |
* Unless required by applicable law or agreed to in writing, software |
* distributed under the License is distributed on an "AS IS" BASIS, |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
* See the License for the specific language governing permissions and |
* limitations under the License. |
*/ |
package net.brutex.xservices.ws.impl; |
|
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
|
import javax.jws.WebService; |
|
import net.brutex.xservices.types.StringMatchType; |
import net.brutex.xservices.types.StringReplaceType; |
import net.brutex.xservices.util.BrutexNamespaces; |
import net.brutex.xservices.ws.StringService; |
import net.brutex.xservices.ws.XServicesFault; |
|
/** |
* @author Brian Rosenberger |
* @since 0.5.0 |
* |
*/ |
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES, endpointInterface = "net.brutex.xservices.ws.StringService", serviceName = StringService.SERVICE_NAME) |
public class StringServiceImpl implements StringService { |
|
public StringReplaceType replaceRegEx(String res, String search, |
String replace, String flags) throws XServicesFault { |
try { |
int allflags = getFlags(flags); |
Pattern pattern = Pattern.compile(search, allflags); |
Matcher matcher = pattern.matcher(res); |
int count = 0; |
while (matcher.find()) { |
count++; |
} |
if (flags.contains("g")) { |
return new StringReplaceType(matcher.replaceAll(replace), count); |
} else { |
if (count > 1) |
count = 1; |
return new StringReplaceType(matcher.replaceFirst(replace), |
count); |
} |
} catch (Exception e) { |
throw new XServicesFault(e); |
} |
|
} |
|
@Override |
public StringMatchType matchRegEx(String res, String search, String flags) |
throws XServicesFault { |
int allflags = getFlags(flags); |
Pattern pattern = Pattern.compile(search, allflags); |
Matcher matcher = pattern.matcher(res); |
StringMatchType rm = new StringMatchType(); |
while (matcher.find()) { |
rm.addStringMatch(matcher.start(), matcher.end(), matcher.group()); |
} |
return rm; |
} |
|
private int getFlags(String flags) { |
int allflags = 0; |
if(flags.contains("i")) { |
allflags = allflags + Pattern.CASE_INSENSITIVE; |
} |
if(flags.contains("m")) { |
allflags = allflags + Pattern.MULTILINE; |
} |
if(flags.contains("u")) { |
allflags = allflags + Pattern.UNICODE_CASE; |
} |
if(flags.contains("s")) { |
allflags = allflags + Pattern.DOTALL; |
} |
if(flags.contains("d")) { |
allflags = allflags + Pattern.UNIX_LINES; |
} |
if(flags.contains("x")) { |
allflags = allflags + Pattern.COMMENTS; |
} |
return allflags; |
} |
|
} |
Property changes: |
Added: svn:mime-type |
+text/plain |
\ No newline at end of property |