Added support for parsing submodules & added dependency utility parser
[yangtools.git] / yang / yang-model-util / src / main / java / org / opendaylight / yangtools / yang / model / util / repo / SourceIdentifier.java
1 package org.opendaylight.yangtools.yang.model.util.repo;
2
3 import com.google.common.base.Optional;
4
5 public final class SourceIdentifier {
6
7     private final String name;
8     private final String revision;
9
10     public SourceIdentifier(String name, Optional<String> formattedRevision) {
11         super();
12         this.name = name;
13         this.revision = formattedRevision.orNull();
14     }
15
16     @Override
17     public int hashCode() {
18         final int prime = 31;
19         int result = 1;
20         result = prime * result + ((name == null) ? 0 : name.hashCode());
21         result = prime * result + ((revision == null) ? 0 : revision.hashCode());
22         return result;
23     }
24
25     @Override
26     public boolean equals(Object obj) {
27         if (this == obj)
28             return true;
29         if (obj == null)
30             return false;
31         if (getClass() != obj.getClass())
32             return false;
33         SourceIdentifier other = (SourceIdentifier) obj;
34         if (name == null) {
35             if (other.name != null)
36                 return false;
37         } else if (!name.equals(other.name))
38             return false;
39         if (revision == null) {
40             if (other.revision != null)
41                 return false;
42         } else if (!revision.equals(other.revision))
43             return false;
44         return true;
45     }
46
47     public String getName() {
48         return name;
49     }
50
51     public String getRevision() {
52         return revision;
53     }
54
55     public static SourceIdentifier create(String moduleName, Optional<String> revision) {
56         return new SourceIdentifier(moduleName, revision);
57     }
58     
59     public String toYangFilename() {
60         return toYangFileName(name, Optional.fromNullable(revision));
61     }
62     
63     @Override
64     public String toString() {
65         return "SourceIdentifier [name=" + name + "@" + revision + "]";
66     }
67
68     public static final String toYangFileName(String moduleName, Optional<String> revision) {
69         StringBuilder filename = new StringBuilder(moduleName);
70         if (revision.isPresent()) {
71             filename.append("@");
72             filename.append(revision.get());
73         }
74         filename.append(".yang");
75         return filename.toString();
76     }
77
78 }