1 package com.atlassian.plugins.codegen;
2
3 import static com.google.common.base.Preconditions.checkNotNull;
4
5
6
7
8 public final class ClassId
9 {
10 private final String packageName;
11 private final String className;
12
13 public static ClassId packageAndClass(String packageName, String className)
14 {
15 return new ClassId(packageName, className);
16 }
17
18 public static ClassId fullyQualified(String fullyQualifiedClassName)
19 {
20 checkNotNull(fullyQualifiedClassName);
21 int lastDotPos = fullyQualifiedClassName.lastIndexOf(".");
22 if (lastDotPos > 0)
23 {
24 return new ClassId(fullyQualifiedClassName.substring(0, lastDotPos),
25 fullyQualifiedClassName.substring(lastDotPos + 1));
26 }
27 else
28 {
29 return new ClassId("", fullyQualifiedClassName);
30 }
31 }
32
33 private ClassId(String packageName, String className)
34 {
35 this.packageName = checkNotNull(packageName, "packageName");
36 this.className = checkNotNull(className, "className");
37 }
38
39
40
41
42 public ClassId packageName(String packageName)
43 {
44 return new ClassId(packageName, this.className);
45 }
46
47
48
49
50 public ClassId packageNamePrefix(String prefix)
51 {
52 return new ClassId(packageName.equals("") ? prefix : (prefix + "." + packageName), className);
53 }
54
55
56
57
58 public ClassId className(String className)
59 {
60 return new ClassId(this.packageName, className);
61 }
62
63
64
65
66 public ClassId classNameSuffix(String suffix)
67 {
68 return new ClassId(this.packageName, this.className + suffix);
69 }
70
71 public String getPackage()
72 {
73 return packageName;
74 }
75
76 public String getName()
77 {
78 return className;
79 }
80
81 public String getFullName()
82 {
83 return packageName.equals("") ? className : (packageName + "." + className);
84 }
85
86 @Override
87 public String toString()
88 {
89 return getFullName();
90 }
91
92 @Override
93 public boolean equals(Object other)
94 {
95 if (other instanceof ClassId)
96 {
97 ClassId c = (ClassId) other;
98 return className.equals(c.className) && packageName.equals(c.packageName);
99 }
100 return false;
101 }
102
103 @Override
104 public int hashCode()
105 {
106 return getFullName().hashCode();
107 }
108 }