accounting-lib/src/main/java/org/gcube/accounting/datamodel/validations/validators/MatcherReplace.java

71 lines
2.2 KiB
Java

package org.gcube.accounting.datamodel.validations.validators;
import java.util.regex.Matcher;
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
import org.gcube.documentstore.exception.InvalidValueException;
import org.gcube.documentstore.records.DSMapper;
public class MatcherReplace {
protected MultiMatcher multiMatcher;
protected Replace replacementRegex;
public MatcherReplace() {}
public MultiMatcher getMultiMatcher() {
return multiMatcher;
}
@JsonSetter(value="match")
public void setMultiMatcher(MultiMatcher multiMatcher) {
this.multiMatcher = multiMatcher;
}
protected Replace getReplacementRegex() {
return replacementRegex;
}
@JsonSetter(value="replace")
public void setReplacementRegex(Replace replacementRegex) {
this.replacementRegex = replacementRegex;
}
public Replace check(String serviceClass, String serviceName, String calledMethod) throws InvalidValueException {
boolean matched = multiMatcher.match(serviceClass, serviceName, calledMethod);
Replace replace;
if(matched) {
replace = new Replace();
Matcher serviceClassMatcher = multiMatcher.getServiceClassPattern().matcher(serviceClass);
String replacementServiceClass = replacementRegex.getServiceClass();
String replaceServiceClass = serviceClassMatcher.replaceFirst(replacementServiceClass);
replace.setServiceClass(replaceServiceClass);
Matcher serviceNameMatcher = multiMatcher.getServiceNamePattern().matcher(serviceName);
String replacementServiceName = replacementRegex.getServiceName();
String replaceServiceName = serviceNameMatcher.replaceFirst(replacementServiceName);
replace.setServiceName(replaceServiceName);
Matcher calledMethodMatcher = multiMatcher.getCalledMethodPattern().matcher(calledMethod);
String replacementCalledMethod = replacementRegex.getCalledMethod();
String replaceCalledMethod = calledMethodMatcher.replaceFirst(replacementCalledMethod);
replace.setCalledMethod(replaceCalledMethod);
}else {
replace = null;
}
return replace;
}
@Override
public String toString() {
try {
return DSMapper.getObjectMapper().writeValueAsString(this);
} catch(Exception e) {
return "MatcherReplace [multiMatcher=" + multiMatcher + ", replacer=" + replacementRegex + "]";
}
}
}