Guest User

Untitled

a guest
Jun 12th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.26 KB | None | 0 0
  1. Index: src/org/insightech/er/editor/model/dbimport/ImportFromDBManagerBase.java
  2. ===================================================================
  3. --- src/org/insightech/er/editor/model/dbimport/ImportFromDBManagerBase.java (リビジョン 19)
  4. +++ src/org/insightech/er/editor/model/dbimport/ImportFromDBManagerBase.java (作業コピー)
  5. @@ -18,6 +18,8 @@
  6. import java.util.StringTokenizer;
  7. import java.util.logging.Level;
  8. import java.util.logging.Logger;
  9. +import java.util.regex.Matcher;
  10. +import java.util.regex.Pattern;
  11.  
  12. import org.eclipse.core.runtime.IProgressMonitor;
  13. import org.eclipse.jface.operation.IRunnableWithProgress;
  14. @@ -105,6 +107,8 @@
  15. public String description;
  16.  
  17. public String constraint;
  18. +
  19. + public String enumData;
  20. }
  21.  
  22. private static class ForeignKeyData {
  23. @@ -229,6 +233,25 @@
  24. columnData.defaultValue = columnSet.getString("COLUMN_DEF");
  25. columnData.description = columnSet.getString("REMARKS");
  26.  
  27. + if ((columnData.type.equals("ENUM") || columnData.type.equals("SET")) && metaData.getURL().startsWith("jdbc:mysql:")) {
  28. + String type = columnData.type.toLowerCase();
  29. + PreparedStatement ps = null;
  30. + try {
  31. + ps = metaData.getConnection().prepareStatement("SHOW COLUMNS FROM `" + tableName + "` LIKE ?");
  32. + ps.setString(1, columnData.columnName);
  33. + ResultSet rs = ps.executeQuery();
  34. + if (rs.next()) {
  35. + Pattern p = Pattern.compile(type + "\\((.*)\\)");
  36. + Matcher m = p.matcher(rs.getString("Type"));
  37. + if (m.matches()) {
  38. + columnData.enumData = m.group(1);
  39. + }
  40. + }
  41. + } finally {
  42. + if (ps != null) ps.close();
  43. + }
  44. + }
  45. +
  46. cash.put(columnData.columnName, columnData);
  47.  
  48. if (monitor != null && monitor.isCanceled()) {
  49. @@ -704,7 +727,7 @@
  50. logicalName = this.translationResources.translate(columnName);
  51. }
  52.  
  53. - String args = null;
  54. + String args = columnData.enumData;
  55.  
  56. TypeData typeData = new TypeData(length, decimal, array,
  57. arrayDimension, unsigned, args);
  58. Index: src/org/insightech/er/editor/TranslationResources.java
  59. ===================================================================
  60. --- src/org/insightech/er/editor/TranslationResources.java (リビジョン 19)
  61. +++ src/org/insightech/er/editor/TranslationResources.java (作業コピー)
  62. @@ -6,9 +6,12 @@
  63. import java.io.IOException;
  64. import java.io.InputStream;
  65. import java.io.InputStreamReader;
  66. -import java.util.LinkedHashMap;
  67. +import java.util.Comparator;
  68. import java.util.Map;
  69. import java.util.Map.Entry;
  70. +import java.util.TreeMap;
  71. +import java.util.regex.Matcher;
  72. +import java.util.regex.Pattern;
  73.  
  74. import org.insightech.er.Activator;
  75. import org.insightech.er.ResourceString;
  76. @@ -20,7 +23,7 @@
  77. private Map<String, String> translationMap;
  78.  
  79. public TranslationResources(TranslationSetting translationSettings) {
  80. - this.translationMap = new LinkedHashMap<String, String>();
  81. + this.translationMap = new TreeMap<String, String>(new TranslationResourcesComparator());
  82.  
  83. String defaultFileName = ResourceString
  84. .getResourceString("label.translation.default");
  85. @@ -96,7 +99,7 @@
  86.  
  87. String value = line.substring(index + 1).trim();
  88. this.translationMap.put(key, value);
  89. - this.translationMap.put(key.replaceAll("[aiueo]", ""), value);
  90. + //this.translationMap.put(key.replaceAll("[aiueo]", ""), value);
  91. }
  92. }
  93.  
  94. @@ -111,8 +114,10 @@
  95. for (Entry<String, String> entry : translationMap.entrySet()) {
  96. String key = entry.getKey();
  97. String value = entry.getValue();
  98. - str = str.replaceAll("\\_*" + key + "\\_*", value);
  99. - str = str.replaceAll("\\_*" + key.toUpperCase() + "\\_*", value);
  100. +
  101. + Pattern p = Pattern.compile("_*" + Pattern.quote(key) + "_*", Pattern.CASE_INSENSITIVE);
  102. + Matcher m = p.matcher(str);
  103. + str = m.replaceAll(value);
  104. }
  105.  
  106. return str;
  107. @@ -121,4 +126,19 @@
  108. public boolean contains(String key) {
  109. return this.translationMap.containsKey(key);
  110. }
  111. +
  112. + /**
  113. + * 長い順に並べる。同じ長さなら辞書順。ただし [A-Z] より [_] を優先する。
  114. + */
  115. + private class TranslationResourcesComparator implements Comparator<String> {
  116. + public int compare(String o1, String o2) {
  117. + int diff = o2.length() - o1.length();
  118. + if (diff != 0) {
  119. + return diff;
  120. + }
  121. + else {
  122. + return o1.replace('_', ' ').compareTo(o2.replace('_', ' '));
  123. + }
  124. + }
  125. + }
  126. }
Add Comment
Please, Sign In to add comment