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 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/eplv10.html
7  */
8 package org.opendaylight.yangtools.yang.model.util.repo;
9
10 import com.google.common.base.Optional;
11
12 public final class SourceIdentifier {
13
14     private final String name;
15     private final String revision;
16
17     public SourceIdentifier(String name, Optional<String> formattedRevision) {
18         super();
19         this.name = name;
20         this.revision = formattedRevision.orNull();
21     }
22
23     @Override
24     public int hashCode() {
25         final int prime = 31;
26         int result = 1;
27         result = prime * result + ((name == null) ? 0 : name.hashCode());
28         result = prime * result + ((revision == null) ? 0 : revision.hashCode());
29         return result;
30     }
31
32     @Override
33     public boolean equals(Object obj) {
34         if (this == obj)
35             return true;
36         if (obj == null)
37             return false;
38         if (getClass() != obj.getClass())
39             return false;
40         SourceIdentifier other = (SourceIdentifier) obj;
41         if (name == null) {
42             if (other.name != null)
43                 return false;
44         } else if (!name.equals(other.name))
45             return false;
46         if (revision == null) {
47             if (other.revision != null)
48                 return false;
49         } else if (!revision.equals(other.revision))
50             return false;
51         return true;
52     }
53
54     public String getName() {
55         return name;
56     }
57
58     public String getRevision() {
59         return revision;
60     }
61
62     public static SourceIdentifier create(String moduleName, Optional<String> revision) {
63         return new SourceIdentifier(moduleName, revision);
64     }
65     
66     public String toYangFilename() {
67         return toYangFileName(name, Optional.fromNullable(revision));
68     }
69     
70     @Override
71     public String toString() {
72         return "SourceIdentifier [name=" + name + "@" + revision + "]";
73     }
74
75     public static final String toYangFileName(String moduleName, Optional<String> revision) {
76         StringBuilder filename = new StringBuilder(moduleName);
77         if (revision.isPresent()) {
78             filename.append("@");
79             filename.append(revision.get());
80         }
81         filename.append(".yang");
82         return filename.toString();
83     }
84
85 }