View Javadoc

1   /* 
2    * Copyright (c) 2007, Fraunhofer-Gesellschaft
3    * All rights reserved.
4    * 
5    * Redistribution and use in source and binary forms, with or without
6    * modification, are permitted provided that the following conditions are
7    * met:
8    * 
9    * (1) Redistributions of source code must retain the above copyright
10   *     notice, this list of conditions and the disclaimer at the end.
11   *     Redistributions in binary form must reproduce the above copyright
12   *     notice, this list of conditions and the following disclaimer in
13   *     the documentation and/or other materials provided with the
14   *     distribution.
15   * 
16   * (2) Neither the name of Fraunhofer nor the names of its
17   *     contributors may be used to endorse or promote products derived
18   *     from this software without specific prior written permission.
19   * 
20   * DISCLAIMER
21   * 
22   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33   *  
34   */
35  package org.ogf.graap.wsag.server.engine;
36  
37  import org.ogf.schemas.graap.wsAgreement.AgreementTemplateType;
38  
39  /**
40   * The template identifier is a unique identifier of a template in one agreement factory instance. It fact it
41   * is a concatenation of the template name and id.
42   * 
43   * @author Oliver Waeldrich
44   * 
45   */
46  public class TemplateIdentifier
47  {
48  
49      private String name;
50  
51      private String version;
52  
53      /**
54       * Creates a new identifier for the given template.
55       * 
56       * @param template
57       *            the agreement template
58       */
59      public TemplateIdentifier( AgreementTemplateType template )
60      {
61          this( template.getName(), template.getTemplateId() );
62      }
63  
64      /**
65       * Creates a new identifier for the given template name and version.
66       * 
67       * @param name
68       *            the template name
69       * 
70       * @param version
71       *            the template version (id)
72       */
73      public TemplateIdentifier( String name, String version )
74      {
75          this.name = ( name == null ) ? "" : name;
76          this.version = ( version == null ) ? "" : version;
77      }
78  
79      /**
80       * {@inheritDoc}
81       * 
82       * @see java.lang.Object#equals(java.lang.Object)
83       */
84      public boolean equals( Object compare )
85      {
86          if ( compare instanceof TemplateIdentifier )
87          {
88              TemplateIdentifier key = (TemplateIdentifier) compare;
89  
90              String templateName1 = key.getName();
91              String templateVersion1 = key.getVersion();
92  
93              templateName1 = ( templateName1 == null ) ? "" : templateName1;
94              templateVersion1 = ( templateVersion1 == null ) ? "" : templateVersion1;
95  
96              return templateName1.equals( name ) && templateVersion1.equals( version );
97          }
98          return false;
99      }
100 
101     /**
102      * {@inheritDoc}
103      * 
104      * @see java.lang.Object#hashCode()
105      */
106     public int hashCode()
107     {
108         return name.hashCode();
109     }
110 
111     /**
112      * @return the name
113      */
114     public String getName()
115     {
116         return name;
117     }
118 
119     /**
120      * @return the version
121      */
122     public String getVersion()
123     {
124         return version;
125     }
126 
127 }