2019-11-15 13:38:37 +01:00
|
|
|
package org.gcube.accounting.datamodel.validations.validators;
|
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
import java.util.regex.Matcher;
|
|
|
|
|
2020-07-10 18:30:52 +02:00
|
|
|
import org.gcube.com.fasterxml.jackson.annotation.JsonSetter;
|
2019-11-15 13:38:37 +01:00
|
|
|
import org.gcube.documentstore.exception.InvalidValueException;
|
|
|
|
import org.gcube.documentstore.records.DSMapper;
|
|
|
|
|
|
|
|
public class MatcherReplace {
|
|
|
|
|
|
|
|
protected MultiMatcher multiMatcher;
|
2020-01-07 11:07:06 +01:00
|
|
|
protected Replace replacementRegex;
|
2019-11-15 13:38:37 +01:00
|
|
|
|
|
|
|
public MatcherReplace() {}
|
|
|
|
|
|
|
|
public MultiMatcher getMultiMatcher() {
|
|
|
|
return multiMatcher;
|
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSetter(value="match")
|
|
|
|
public void setMultiMatcher(MultiMatcher multiMatcher) {
|
|
|
|
this.multiMatcher = multiMatcher;
|
|
|
|
}
|
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
protected Replace getReplacementRegex() {
|
|
|
|
return replacementRegex;
|
2019-11-15 13:38:37 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@JsonSetter(value="replace")
|
2020-01-07 11:07:06 +01:00
|
|
|
public void setReplacementRegex(Replace replacementRegex) {
|
|
|
|
this.replacementRegex = replacementRegex;
|
2019-11-15 13:38:37 +01:00
|
|
|
}
|
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
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();
|
2020-03-23 12:33:07 +01:00
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
Matcher serviceClassMatcher = multiMatcher.getServiceClassPattern().matcher(serviceClass);
|
2020-03-23 12:33:07 +01:00
|
|
|
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);
|
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
Matcher calledMethodMatcher = multiMatcher.getCalledMethodPattern().matcher(calledMethod);
|
2020-03-23 12:33:07 +01:00
|
|
|
String replacementCalledMethod = replacementRegex.getCalledMethod();
|
|
|
|
String replaceCalledMethod = calledMethodMatcher.replaceFirst(replacementCalledMethod);
|
|
|
|
replace.setCalledMethod(replaceCalledMethod);
|
|
|
|
|
2020-01-07 11:07:06 +01:00
|
|
|
}else {
|
|
|
|
replace = null;
|
|
|
|
}
|
|
|
|
return replace;
|
2019-11-15 13:38:37 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public String toString() {
|
|
|
|
try {
|
|
|
|
return DSMapper.getObjectMapper().writeValueAsString(this);
|
|
|
|
} catch(Exception e) {
|
2020-01-07 11:07:06 +01:00
|
|
|
return "MatcherReplace [multiMatcher=" + multiMatcher + ", replacer=" + replacementRegex + "]";
|
2019-11-15 13:38:37 +01:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|