package com.farata.cdb.annotations.helper; import java.util.regex.Matcher; import java.util.regex.Pattern; public class PatternPackageNameTransformer extends PatternClassNameTransformer { public PatternPackageNameTransformer(final String arguments) { super(normalizeArguments(arguments)); } public PatternPackageNameTransformer(final Pattern pattern, final String replacement) { super(pattern, replacement); } public static String normalizeArguments(final String arguments) { final Matcher matcher = null == arguments || arguments.length() == 0 ? null : SIMPLE_PACKAGE_RENAME_PATTERN.matcher(arguments); if (null != matcher && matcher.matches()) { return matcher.replaceAll("$4\\$1<<^$1(\\\\.?.*)\\$"); } else { return arguments; } } final private static Pattern SIMPLE_PACKAGE_RENAME_PATTERN = Pattern.compile("^((\\w+\\.)*(\\w+))\\:((\\w+\\.)*(\\w+))$"); protected static class Arguments { final public Pattern pattern; final public String replacement; public Arguments(final Pattern pattern, final String replacement) { this.pattern = pattern; this.replacement = replacement; } } }