<HTML>
<BODY BGCOLOR="white">
<PRE>
<FONT color="green">001</FONT>    // =================== DO NOT EDIT THIS FILE ====================<a name="line.1"></a>
<FONT color="green">002</FONT>    // Generated by Modello 1.7,<a name="line.2"></a>
<FONT color="green">003</FONT>    // any modifications will be overwritten.<a name="line.3"></a>
<FONT color="green">004</FONT>    // ==============================================================<a name="line.4"></a>
<FONT color="green">005</FONT>    <a name="line.5"></a>
<FONT color="green">006</FONT>    package org.apache.archiva.configuration;<a name="line.6"></a>
<FONT color="green">007</FONT>    <a name="line.7"></a>
<FONT color="green">008</FONT>    /**<a name="line.8"></a>
<FONT color="green">009</FONT>     * Class LegacyArtifactPath.<a name="line.9"></a>
<FONT color="green">010</FONT>     * <a name="line.10"></a>
<FONT color="green">011</FONT>     * @version $Revision$ $Date$<a name="line.11"></a>
<FONT color="green">012</FONT>     */<a name="line.12"></a>
<FONT color="green">013</FONT>    @SuppressWarnings( "all" )<a name="line.13"></a>
<FONT color="green">014</FONT>    public class LegacyArtifactPath<a name="line.14"></a>
<FONT color="green">015</FONT>        implements java.io.Serializable<a name="line.15"></a>
<FONT color="green">016</FONT>    {<a name="line.16"></a>
<FONT color="green">017</FONT>    <a name="line.17"></a>
<FONT color="green">018</FONT>          //--------------------------/<a name="line.18"></a>
<FONT color="green">019</FONT>         //- Class/Member Variables -/<a name="line.19"></a>
<FONT color="green">020</FONT>        //--------------------------/<a name="line.20"></a>
<FONT color="green">021</FONT>    <a name="line.21"></a>
<FONT color="green">022</FONT>        /**<a name="line.22"></a>
<FONT color="green">023</FONT>         * <a name="line.23"></a>
<FONT color="green">024</FONT>         *             The legacy path.<a name="line.24"></a>
<FONT color="green">025</FONT>         *           <a name="line.25"></a>
<FONT color="green">026</FONT>         */<a name="line.26"></a>
<FONT color="green">027</FONT>        private String path;<a name="line.27"></a>
<FONT color="green">028</FONT>    <a name="line.28"></a>
<FONT color="green">029</FONT>        /**<a name="line.29"></a>
<FONT color="green">030</FONT>         * <a name="line.30"></a>
<FONT color="green">031</FONT>         *             The artifact reference, as " [groupId] :<a name="line.31"></a>
<FONT color="green">032</FONT>         * [artifactId] : [version] : [classifier] : [type] ".<a name="line.32"></a>
<FONT color="green">033</FONT>         *           <a name="line.33"></a>
<FONT color="green">034</FONT>         */<a name="line.34"></a>
<FONT color="green">035</FONT>        private String artifact;<a name="line.35"></a>
<FONT color="green">036</FONT>    <a name="line.36"></a>
<FONT color="green">037</FONT>    <a name="line.37"></a>
<FONT color="green">038</FONT>          //-----------/<a name="line.38"></a>
<FONT color="green">039</FONT>         //- Methods -/<a name="line.39"></a>
<FONT color="green">040</FONT>        //-----------/<a name="line.40"></a>
<FONT color="green">041</FONT>    <a name="line.41"></a>
<FONT color="green">042</FONT>        /**<a name="line.42"></a>
<FONT color="green">043</FONT>         * Get the artifact reference, as " [groupId] : [artifactId] :<a name="line.43"></a>
<FONT color="green">044</FONT>         * [version] : [classifier] : [type] ".<a name="line.44"></a>
<FONT color="green">045</FONT>         * <a name="line.45"></a>
<FONT color="green">046</FONT>         * @return String<a name="line.46"></a>
<FONT color="green">047</FONT>         */<a name="line.47"></a>
<FONT color="green">048</FONT>        public String getArtifact()<a name="line.48"></a>
<FONT color="green">049</FONT>        {<a name="line.49"></a>
<FONT color="green">050</FONT>            return this.artifact;<a name="line.50"></a>
<FONT color="green">051</FONT>        } //-- String getArtifact()<a name="line.51"></a>
<FONT color="green">052</FONT>    <a name="line.52"></a>
<FONT color="green">053</FONT>        /**<a name="line.53"></a>
<FONT color="green">054</FONT>         * Get the legacy path.<a name="line.54"></a>
<FONT color="green">055</FONT>         * <a name="line.55"></a>
<FONT color="green">056</FONT>         * @return String<a name="line.56"></a>
<FONT color="green">057</FONT>         */<a name="line.57"></a>
<FONT color="green">058</FONT>        public String getPath()<a name="line.58"></a>
<FONT color="green">059</FONT>        {<a name="line.59"></a>
<FONT color="green">060</FONT>            return this.path;<a name="line.60"></a>
<FONT color="green">061</FONT>        } //-- String getPath()<a name="line.61"></a>
<FONT color="green">062</FONT>    <a name="line.62"></a>
<FONT color="green">063</FONT>        /**<a name="line.63"></a>
<FONT color="green">064</FONT>         * Set the artifact reference, as " [groupId] : [artifactId] :<a name="line.64"></a>
<FONT color="green">065</FONT>         * [version] : [classifier] : [type] ".<a name="line.65"></a>
<FONT color="green">066</FONT>         * <a name="line.66"></a>
<FONT color="green">067</FONT>         * @param artifact<a name="line.67"></a>
<FONT color="green">068</FONT>         */<a name="line.68"></a>
<FONT color="green">069</FONT>        public void setArtifact( String artifact )<a name="line.69"></a>
<FONT color="green">070</FONT>        {<a name="line.70"></a>
<FONT color="green">071</FONT>            this.artifact = artifact;<a name="line.71"></a>
<FONT color="green">072</FONT>        } //-- void setArtifact( String )<a name="line.72"></a>
<FONT color="green">073</FONT>    <a name="line.73"></a>
<FONT color="green">074</FONT>        /**<a name="line.74"></a>
<FONT color="green">075</FONT>         * Set the legacy path.<a name="line.75"></a>
<FONT color="green">076</FONT>         * <a name="line.76"></a>
<FONT color="green">077</FONT>         * @param path<a name="line.77"></a>
<FONT color="green">078</FONT>         */<a name="line.78"></a>
<FONT color="green">079</FONT>        public void setPath( String path )<a name="line.79"></a>
<FONT color="green">080</FONT>        {<a name="line.80"></a>
<FONT color="green">081</FONT>            this.path = path;<a name="line.81"></a>
<FONT color="green">082</FONT>        } //-- void setPath( String )<a name="line.82"></a>
<FONT color="green">083</FONT>    <a name="line.83"></a>
<FONT color="green">084</FONT>        <a name="line.84"></a>
<FONT color="green">085</FONT>        public boolean match( String path )<a name="line.85"></a>
<FONT color="green">086</FONT>        {<a name="line.86"></a>
<FONT color="green">087</FONT>            return path.equals( this.path );<a name="line.87"></a>
<FONT color="green">088</FONT>        }<a name="line.88"></a>
<FONT color="green">089</FONT>    <a name="line.89"></a>
<FONT color="green">090</FONT>        public String getGroupId()<a name="line.90"></a>
<FONT color="green">091</FONT>        {<a name="line.91"></a>
<FONT color="green">092</FONT>            return artifact.split( ":" )[0];<a name="line.92"></a>
<FONT color="green">093</FONT>        }<a name="line.93"></a>
<FONT color="green">094</FONT>    <a name="line.94"></a>
<FONT color="green">095</FONT>        public String getArtifactId()<a name="line.95"></a>
<FONT color="green">096</FONT>        {<a name="line.96"></a>
<FONT color="green">097</FONT>            return artifact.split( ":" )[1];<a name="line.97"></a>
<FONT color="green">098</FONT>        }<a name="line.98"></a>
<FONT color="green">099</FONT>            <a name="line.99"></a>
<FONT color="green">100</FONT>        public String getVersion()<a name="line.100"></a>
<FONT color="green">101</FONT>        {<a name="line.101"></a>
<FONT color="green">102</FONT>            return artifact.split( ":" )[2];<a name="line.102"></a>
<FONT color="green">103</FONT>        }<a name="line.103"></a>
<FONT color="green">104</FONT>        <a name="line.104"></a>
<FONT color="green">105</FONT>        public String getClassifier()<a name="line.105"></a>
<FONT color="green">106</FONT>        {<a name="line.106"></a>
<FONT color="green">107</FONT>            String classifier = artifact.split( ":" )[3];<a name="line.107"></a>
<FONT color="green">108</FONT>            return classifier.length() &gt; 0 ? classifier : null;<a name="line.108"></a>
<FONT color="green">109</FONT>        }<a name="line.109"></a>
<FONT color="green">110</FONT>        <a name="line.110"></a>
<FONT color="green">111</FONT>        public String getType()<a name="line.111"></a>
<FONT color="green">112</FONT>        {<a name="line.112"></a>
<FONT color="green">113</FONT>            return artifact.split( ":" )[4];<a name="line.113"></a>
<FONT color="green">114</FONT>        }<a name="line.114"></a>
<FONT color="green">115</FONT>    <a name="line.115"></a>
<FONT color="green">116</FONT>        @Override<a name="line.116"></a>
<FONT color="green">117</FONT>        public boolean equals( Object o )<a name="line.117"></a>
<FONT color="green">118</FONT>        {<a name="line.118"></a>
<FONT color="green">119</FONT>            if ( this == o )<a name="line.119"></a>
<FONT color="green">120</FONT>            {<a name="line.120"></a>
<FONT color="green">121</FONT>                return true;<a name="line.121"></a>
<FONT color="green">122</FONT>            }<a name="line.122"></a>
<FONT color="green">123</FONT>            if ( o == null || getClass() != o.getClass() )<a name="line.123"></a>
<FONT color="green">124</FONT>            {<a name="line.124"></a>
<FONT color="green">125</FONT>                return false;<a name="line.125"></a>
<FONT color="green">126</FONT>            }<a name="line.126"></a>
<FONT color="green">127</FONT>    <a name="line.127"></a>
<FONT color="green">128</FONT>            LegacyArtifactPath that = (LegacyArtifactPath) o;<a name="line.128"></a>
<FONT color="green">129</FONT>    <a name="line.129"></a>
<FONT color="green">130</FONT>            if ( path != null ? !path.equals( that.path ) : that.path != null )<a name="line.130"></a>
<FONT color="green">131</FONT>            {<a name="line.131"></a>
<FONT color="green">132</FONT>                return false;<a name="line.132"></a>
<FONT color="green">133</FONT>            }<a name="line.133"></a>
<FONT color="green">134</FONT>    <a name="line.134"></a>
<FONT color="green">135</FONT>            return true;<a name="line.135"></a>
<FONT color="green">136</FONT>        }<a name="line.136"></a>
<FONT color="green">137</FONT>    <a name="line.137"></a>
<FONT color="green">138</FONT>        @Override<a name="line.138"></a>
<FONT color="green">139</FONT>        public int hashCode()<a name="line.139"></a>
<FONT color="green">140</FONT>        {<a name="line.140"></a>
<FONT color="green">141</FONT>            return path != null ? 37 + path.hashCode() : 0;<a name="line.141"></a>
<FONT color="green">142</FONT>        }<a name="line.142"></a>
<FONT color="green">143</FONT>           <a name="line.143"></a>
<FONT color="green">144</FONT>    }<a name="line.144"></a>




























































</PRE>
</BODY>
</HTML>