PageRenderTime 32ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/java/src/java/is/tagomor/woothee/os/Windows.java

http://github.com/tagomoris/woothee
Java | 60 lines | 49 code | 9 blank | 2 comment | 23 complexity | 9d70b8f6ce65fdd9f9a5515264015044 MD5 | raw file
  1. package is.tagomor.woothee.os;
  2. import java.util.Map;
  3. import java.util.regex.Pattern;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.MatchResult;
  6. import is.tagomor.woothee.AgentCategory;
  7. import is.tagomor.woothee.DataSet;
  8. import is.tagomor.woothee.Classifier;
  9. public class Windows extends AgentCategory {
  10. private static Pattern windowsVer = Pattern.compile("Windows ([ .a-zA-Z0-9]+)[;\\)]");
  11. public static boolean challenge(final String ua, final Map<String,String> result) {
  12. int pos = ua.indexOf("Windows");
  13. if (pos < 0)
  14. return false;
  15. Map<String,String> data = DataSet.get("Win");
  16. Matcher win = windowsVer.matcher(ua);
  17. if (! win.find(pos)) {
  18. // windows, but version unknown
  19. updateCategory(result, data.get(DataSet.DATASET_KEY_CATEGORY));
  20. updateOs(result, data.get(DataSet.DATASET_KEY_NAME));
  21. return true;
  22. }
  23. String versionString = win.group(1);
  24. if (versionString.equals("NT 6.3"))
  25. data = DataSet.get("Win8.1");
  26. else if (versionString.equals("NT 6.2"))
  27. data = DataSet.get("Win8");
  28. else if (versionString.equals("NT 6.1"))
  29. data = DataSet.get("Win7");
  30. else if (versionString.equals("NT 6.0"))
  31. data = DataSet.get("WinVista");
  32. else if (versionString.equals("NT 5.1"))
  33. data = DataSet.get("WinXP");
  34. else if (versionString.startsWith("Phone OS"))
  35. data = DataSet.get("WinPhone");
  36. else if (versionString.equals("NT 5.0"))
  37. data = DataSet.get("Win2000");
  38. else if (versionString.equals("NT 4.0"))
  39. data = DataSet.get("WinNT4");
  40. else if (versionString.equals("98")) // wow, WinMe is shown as 'Windows 98; Win9x 4.90', fxxxk
  41. data = DataSet.get("Win98");
  42. else if (versionString.equals("95"))
  43. data = DataSet.get("Win95");
  44. else if (versionString.equals("CE"))
  45. data = DataSet.get("WinCE");
  46. // else, windows, but version unknown
  47. updateCategory(result, data.get(DataSet.DATASET_KEY_CATEGORY));
  48. updateOs(result, data.get(DataSet.DATASET_KEY_NAME));
  49. return true;
  50. }
  51. }