View Javadoc

1   package net.sourceforge.argval.packageinfo.impl;
2   
3   
4   import java.util.Set;
5   import java.util.TreeSet;
6   
7   import net.sourceforge.argval.packageinfo.AbstractPackageInfo;
8   
9   
10  /**
11   * A helper class which stores once the <code>Package</code> details and contains a Set 
12   * containing all the related Java language package names (the dot separated package name
13   * like <code>net.sourceforge.argval.packageinfo</code> ).
14   * 
15   * @author <a  href="http://sourceforge.net/users/verhagent/">T. Verhagen</a>
16   */
17  public class PackageInfoImpl extends AbstractPackageInfo {
18      private String specTitle;
19      private String specVendor;
20      private String specVersion;
21      private String implTitle;
22      private String implVendor;
23      private String implVersion;
24      /** This Set contains all the package names associated with this <code>Package</code>. */
25      private Set<String> packageNameSet;
26      
27  
28      /**
29       * Default constructor.
30       */
31      public PackageInfoImpl() {
32          super();
33          packageNameSet = new TreeSet<String>();
34      }
35      /**
36       * Main constructor.
37       * 
38       * @param  specTitle  The specification title.
39       * @param  specVendor  The specification vendor. 
40       * @param  specVersion  The specification version.
41       * @param  implTitle  The implementation title.
42       * @param  implVendor  The implementation vendor.
43       * @param  implVersion  The implementation version.
44       */
45      public PackageInfoImpl(String specTitle, String specVendor, String specVersion, String implTitle, String implVendor, String implVersion) {
46          this();
47          this.specTitle = specTitle;
48          this.specVendor = specVendor;
49          this.specVersion = specVersion;
50          this.implTitle = implTitle;
51          this.implVendor = implVendor;
52          this.implVersion = implVersion;
53      }
54      /**
55       * Creates PackageInfo based on the given <code>Package</code>, and 
56       * adds the package name to the internal Set of package names.
57       *  
58       * @param  pckg  The <code>Package</code> instance.
59       */
60      public PackageInfoImpl(Package pckg) {
61          this(pckg.getSpecificationTitle(), pckg.getSpecificationVendor(), pckg.getSpecificationVersion(),
62                  pckg.getImplementationTitle(), pckg.getImplementationVendor(), pckg.getImplementationVersion());
63          addPackageName(pckg.getName());
64      }
65  
66  //    public PackageInfoImpl(Manifest manifest) {
67  //        this(
68  //                manifest.getMainAttributes().getValue(Attributes.Name.SPECIFICATION_TITLE),
69  //                manifest.getMainAttributes().getValue(Attributes.Name.SPECIFICATION_VENDOR),
70  //                manifest.getMainAttributes().getValue(Attributes.Name.SPECIFICATION_VERSION),
71  //                manifest.getMainAttributes().getValue(Attributes.Name.IMPLEMENTATION_TITLE),
72  //                manifest.getMainAttributes().getValue(Attributes.Name.IMPLEMENTATION_VENDOR),
73  //                manifest.getMainAttributes().getValue(Attributes.Name.IMPLEMENTATION_VERSION)
74  //                );
75  //    }
76      
77      
78      /**
79       * Returns the implementation title.
80       * 
81       * @return  The implementation title.
82       */
83      public String getImplementationTitle() {
84          return implTitle;
85      }
86      /**
87       * Returns the implementation vendor.
88       * 
89       * @return  The implementation vendor.
90       */
91      public String getImplementationVendor() {
92          return implVendor;
93      }
94      /**
95       * Returns the implementation version.
96       * 
97       * @return  The implementation version.
98       */
99      public String getImplementationVersion() {
100         return implVersion;
101     }
102     
103     
104     /**
105      * Returns the specification title.
106      * 
107      * @return  The specification title.
108      */
109     public String getSpecificationTitle() {
110         return specTitle;
111     }
112     /**
113      * Returns the specification vendor.
114      * 
115      * @return  The specification vendor.
116      */
117     public String getSpecificationVendor() {
118         return specVendor;
119     }
120     /**
121      * Returns the specification version.
122      * 
123      * @return  The specification version.
124      */
125     public String getSpecificationVersion() {
126         return specVersion;
127     }
128     
129 
130     /**
131      * Returns all the package names assosiated with this <code>Package</code>.
132      * 
133      * @return  The set with all package names assosiated with this <code>Package</code>.
134      */
135     public Set<String> getNameSet() {
136         return packageNameSet;
137     }
138     /**
139      * Adds the name of the package from the Java language dot notation 
140      * ( <code>net.sourceforge.argval.packageinfo</code> ).
141      * 
142      * @param  name  The name of the package.
143      */
144     public void addPackageName(String name) {
145         packageNameSet.add(name);
146     }
147     
148 }