Here is one example:
static public String handleReturnString2 (String stringData) {
if (stringData==null) {
return "No handler found!";
} else if (stringData.contains("ERROR") ) {
return "Error case handled!";
} else if (stringData.contains("FAILED") ) {
return "Failed case handled!";
} else if (stringData.contains("SKIPPED") ) {
return "Skipped case handled!";
} else if (stringData.contains("PASSED") ) {
return "Passed case handled!";
}
return "No handler found!";
}
Here is one way to replace it. There is trick to use Pattern match to replace string.contains():
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
// object oriented way to handle if then else
public class SwitchOnSubstring {
// define all ReturnCode enum
public static enum ReturnCode {
PASSED, SKIPPED, FAILED, ERROR;
// build pattern string, for string contains
static String getAllStringPattern() {
StringBuilder sb = new StringBuilder(16);
boolean firstone = true;
for (ReturnCode p : ReturnCode.values()) {
if (firstone) {
firstone = false;
} else {
sb.append("|");
}
sb.append(p.name());
}
return sb.toString();
}
}
// define handler interface
static private interface CaseHandler {
public String handleReturn ();
}
static private class PassedCaseHandler implements CaseHandler {
public String handleReturn () {
return "Passed case handled!";
}
}
// default handler
final private static CaseHandler HandlerNone = new CaseHandler() {
public String handleReturn () {
return "No handler found!";
}
};
final private static Pattern ReturnCodePattern = Pattern.compile( ReturnCode.getAllStringPattern());
// use java regex to match string containing "PASSED" or "SKIPPED" "FAILED" "ERROR" to enum PASSED, SKIPPED, FAILED, ERROR;
static private ReturnCode matchStringToReturnCode (String stringData) {
String strRequest = null;
Matcher matcher = ReturnCodePattern.matcher(stringData);
if (matcher.find()) {
if (matcher.start()>=0 && matcher.end()>matcher.start()) {
strRequest = stringData.substring(matcher.start(), matcher.end());
}
}
return strRequest==null? null : ReturnCode.valueOf(strRequest);
}
// setup the map structure to map enum PASSED, SKIPPED, FAILED, ERROR to their corresponding handlers
static private Map<ReturnCode, CaseHandler> mapHandlers = new HashMap<ReturnCode, CaseHandler> () {
private static final long serialVersionUID = -80L;
{
// ErrorCaseHandler for string contains "ERROR"
put(ReturnCode.ERROR , new CaseHandler() {
public String handleReturn () {
return "Error case handled!";
}
});
// FailedCaseHandler for string contains "FAILED"
put(ReturnCode.FAILED , new CaseHandler() {
public String handleReturn () {
return "Failed case handled!";
}
});
// SkippedCaseHandler for string contains "SKIPPED"
put(ReturnCode.SKIPPED , new CaseHandler() {
public String handleReturn () {
return "Skipped case handled!";
}
});
// PassedCaseHandler for string contains "PASSED"
put(ReturnCode.PASSED, new CaseHandler() {
public String handleReturn () {
return "Passed case handled!";
}
});
}
};
// main method to handle the string
// if string contains PASSED, return PassedCaseHandler's result
// if string contains ERROR, return ErrorCaseHandler's result
// if string contains FAILED, return FailedCaseHandler's result
// if string contains SKIPPED, return SkippedCaseHandler's result
static public String handleReturnString (String stringData) {
ReturnCode code = stringData==null ? null : matchStringToReturnCode (stringData);
CaseHandler handle = ( code==null ) ? HandlerNone : mapHandlers.get(code);
return handle.handleReturn() ;
}
}
If you want the source, you can get it from github and perform the following step to compile & test:
git clone https://github.com/leizou123/SwitchOnSubstring.git cd SwitchOnSubstring mvn compile test
Casino de L'Auberge de Casino de LA. de la Casino de L'Auberge de Casino de L'Auberge
ReplyDeleteCasino de L'Auberge de Casino de https://deccasino.com/review/merit-casino/ L'Auberge de Casino de L'Auberge de Casino ventureberg.com/ de L'Auberge de Casino de L'Auberge de 1등 사이트 Casino de L'Auberge de Casino de Casino de L'Auberge de 토토사이트 Casino de