package no.ntnu.qos.client.impl;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import no.ntnu.qos.client.SanityChecker;
public class SanityCheckerImpl implements SanityChecker{
private Pattern pattern;
private Matcher matcher;
private static final String USERNAME_PATTERN = "^[a-zA-Z0-9_-]{3,15}$";
private static final String PASSWORD_PATTERN = "^[a-zA-Z0-9_-]{3,15}$";
private static final String ROLE_PATTERN = "^[a-zA-Z0-9_]{3,15}$";
// @Override
// public Runnable isSane(DataObject data) {
//// return new RunningSanityChecker(data);
// }
public boolean isSane(String data) {
return true;
// return data.trim().startsWith("<?") && (data.toLowerCase().contains("s:envelope") || data.toLowerCase().contains("soap:envelope"));
}
@Override
public boolean isSane(String userName, String password, String role) {
//userName
return (validUser(userName) && validPassword(password) && validRole(role));
}
public boolean validUser(String userName){
pattern = Pattern.compile(USERNAME_PATTERN);
matcher = pattern.matcher(userName);
return matcher.matches();
}
public boolean validPassword(String password){
pattern = Pattern.compile(PASSWORD_PATTERN);
matcher = pattern.matcher(password);
return matcher.matches();
}
public boolean validRole(String role){
pattern = Pattern.compile(ROLE_PATTERN);
matcher = pattern.matcher(role);
return matcher.matches();
}
// class RunningSanityChecker implements Runnable {
// DataObject data;
//
// public RunningSanityChecker(DataObject dataObj) {
// data = dataObj;
// }
//
// @Override
// public void run() {
// try {
// if(isSane(data.getSoap())) {
// data.setSane(true);
// } else {
// try {
// ((ReceiveObjectImpl)data.getReceiveObject()).setReply("UnsupportedEncodingException");
// } catch (InterruptedException e) {
// //Should never happen
// e.printStackTrace();
// }
// UnsupportedEncodingException e = new UnsupportedEncodingException("Sanity Check of message failed");
// data.getExceptionHandler().unsupportedEncodingExceptionThrown(e);
// }
// } catch (UnsupportedEncodingException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// }
//
// }
}