View Javadoc
1   package org.apache.maven.repository.metadata;
2   
3   /*
4    * Licensed to the Apache Software Foundation (ASF) under one
5    * or more contributor license agreements.  See the NOTICE file
6    * distributed with this work for additional information
7    * regarding copyright ownership.  The ASF licenses this file
8    * to you under the Apache License, Version 2.0 (the
9    * "License"); you may not use this file except in compliance
10   * with the License.  You may obtain a copy of the License at
11   *
12   *  http://www.apache.org/licenses/LICENSE-2.0
13   *
14   * Unless required by applicable law or agreed to in writing,
15   * software distributed under the License is distributed on an
16   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17   * KIND, either express or implied.  See the License for the
18   * specific language governing permissions and limitations
19   * under the License.
20   */
21  
22  import org.apache.maven.artifact.ArtifactScopeEnum;
23  
24  /**
25   * metadata graph edge - combination of version, scope and depth define
26   * an edge in the graph
27   *
28   * @author <a href="oleg@codehaus.org">Oleg Gusakov</a>
29   *
30   */
31  
32  public class MetadataGraphEdge
33  {
34      String            version;
35      ArtifactScopeEnum scope;
36      int               depth = -1;
37      int               pomOrder = -1;
38      boolean           resolved = true;
39      String            artifactUri;
40  
41      /**
42       * capturing where this link came from
43       * and where it is linked to.
44       *
45       *   In the first implementation only source used for explanatory function
46       */
47      MetadataGraphVertex  source;
48      MetadataGraphVertex  target;
49  
50      //----------------------------------------------------------------------------
51      public MetadataGraphEdge( String version, boolean resolved, ArtifactScopeEnum scope, String artifactUri, int depth,
52                                int pomOrder )
53      {
54          super();
55          this.version = version;
56          this.scope = scope;
57          this.artifactUri = artifactUri;
58          this.depth = depth;
59          this.resolved = resolved;
60          this.pomOrder = pomOrder;
61      }
62      //----------------------------------------------------------------------------
63      /**
64       * helper for equals
65       */
66      private static boolean objectsEqual( Object o1, Object o2 )
67      {
68          if ( o1 == null && o2 == null )
69          {
70              return true;
71          }
72          if ( o1 == null || o2 == null )
73          {
74              return false; // as they are not both null
75          }
76          return o1.equals( o2 );
77      }
78  
79      //----------------------------------------------------------------------------
80      /**
81       * used to eliminate exact duplicates in the edge list
82       */
83      @Override
84      public boolean equals( Object o )
85      {
86          if ( o instanceof MetadataGraphEdge )
87          {
88              MetadataGraphEdge e = (MetadataGraphEdge) o;
89  
90              return objectsEqual( version, e.version )
91                  && ArtifactScopeEnum.checkScope( scope ).getScope().
92                      equals( ArtifactScopeEnum.checkScope( e.scope ).getScope() )
93                  && depth == e.depth;
94          }
95          return false;
96      }
97  
98      //----------------------------------------------------------------------------
99      public String getVersion()
100     {
101         return version;
102     }
103 
104     public void setVersion( String version )
105     {
106         this.version = version;
107     }
108 
109     public ArtifactScopeEnum getScope()
110     {
111         return scope;
112     }
113 
114     public void setScope( ArtifactScopeEnum scope )
115     {
116         this.scope = scope;
117     }
118 
119     public int getDepth()
120     {
121         return depth;
122     }
123 
124     public void setDepth( int depth )
125     {
126         this.depth = depth;
127     }
128 
129     public boolean isResolved()
130     {
131         return resolved;
132     }
133 
134     public void setResolved( boolean resolved )
135     {
136         this.resolved = resolved;
137     }
138 
139     public int getPomOrder()
140     {
141         return pomOrder;
142     }
143 
144     public void setPomOrder( int pomOrder )
145     {
146         this.pomOrder = pomOrder;
147     }
148 
149     public String getArtifactUri()
150     {
151         return artifactUri;
152     }
153 
154     public void setArtifactUri( String artifactUri )
155     {
156         this.artifactUri = artifactUri;
157     }
158 
159     public MetadataGraphVertex getSource()
160     {
161         return source;
162     }
163 
164     public void setSource( MetadataGraphVertex source )
165     {
166         this.source = source;
167     }
168 
169     public MetadataGraphVertex getTarget()
170     {
171         return target;
172     }
173 
174     public void setTarget( MetadataGraphVertex target )
175     {
176         this.target = target;
177     }
178 
179     @Override
180     public String toString()
181     {
182         return "[ " + "FROM:("
183             + ( source == null ? "no source" : ( source.md == null ? "no source MD" : source.md.toString() ) ) + ") "
184             + "TO:(" + ( target == null ? "no target" : ( target.md == null ? "no target MD" : target.md.toString() ) )
185             + ") " + "version=" + version + ", scope=" + ( scope == null ? "null" : scope.getScope() ) + ", depth="
186             + depth + "]";
187     }
188     //----------------------------------------------------------------------------
189     //----------------------------------------------------------------------------
190 }