View Javadoc
1   package net.sourceforge.pmd.lang;
2   
3   /**
4    * Created by christoferdutz on 21.09.14.
5    */
6   public class LanguageVersion implements Comparable<LanguageVersion> {
7   
8       private final Language language;
9       private final String version;
10      private final LanguageVersionHandler languageVersionHandler;
11  
12      public LanguageVersion(Language language, String version, LanguageVersionHandler languageVersionHandler) {
13          this.language = language;
14          this.version = version;
15          this.languageVersionHandler = languageVersionHandler;
16      }
17  
18      public Language getLanguage() {
19          return language;
20      }
21  
22      public String getVersion() {
23          return version;
24      }
25  
26      public LanguageVersionHandler getLanguageVersionHandler() {
27          return languageVersionHandler;
28      }
29  
30      /**
31       * Get the name of this LanguageVersion.  This is Language name
32       * appended with the LanguageVersion version if not an empty String.
33       * @return The name of this LanguageVersion.
34       */
35      public String getName() {
36          return version.length() > 0 ? language.getName() + ' ' + version : language.getName();
37      }
38  
39      /**
40       * Get the short name of this LanguageVersion.  This is Language short name
41       * appended with the LanguageVersion version if not an empty String.
42       * @return The short name of this LanguageVersion.
43       */
44      public String getShortName() {
45          return version.length() > 0 ? language.getShortName() + ' ' + version : language.getShortName();
46      }
47  
48      /**
49       * Get the terse name of this LanguageVersion.  This is Language terse name
50       * appended with the LanguageVersion version if not an empty String.
51       * @return The terse name of this LanguageVersion.
52       */
53      public String getTerseName() {
54          return version.length() > 0 ? language.getTerseName() + ' ' + version : language.getTerseName();
55      }
56  
57      @Override
58      public int compareTo(LanguageVersion o) {
59          if(o == null) {
60              return 1;
61          }
62  
63          int comp = getName().compareTo(o.getName());
64          if(comp != 0) {
65              return comp;
66          }
67  
68          String[] vals1 = getName().split("\\.");
69          String[] vals2 = o.getName().split("\\.");
70          int i = 0;
71          while (i < vals1.length && i < vals2.length && vals1[i].equals(vals2[i])) {
72              i++;
73          }
74          if (i < vals1.length && i < vals2.length) {
75              int diff = Integer.valueOf(vals1[i]).compareTo(Integer.valueOf(vals2[i]));
76              return Integer.signum(diff);
77          } else {
78              return Integer.signum(vals1.length - vals2.length);
79          }
80      }
81  
82      @Override
83      public String toString() {
84          return language.toString() + "+version:" + version;
85      }
86  }