]> source.dussan.org Git - archiva.git/blob
5e7d82d3c50c9a545444719f54d49b2ab883f026
[archiva.git] /
1 package org.apache.archiva.metadata.model;
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 java.util.Collection;
23 import java.util.Collections;
24 import java.util.HashMap;
25 import java.util.Map;
26
27 /**
28  * Base class for metadata that is contains facets for storing extensions by various plugins.
29  */
30 public abstract class FacetedMetadata
31 {
32     /**
33      * The facets to store, keyed by the {@linkplain MetadataFacet#getFacetId() Facet ID} of the metadata.
34      */
35     private Map<String, MetadataFacet> facets = new HashMap<String, MetadataFacet>();
36
37     /**
38      * Add a new facet to the metadata. If it already exists, it will be replaced.
39      *
40      * @param metadataFacet the facet to add
41      */
42     public void addFacet( MetadataFacet metadataFacet )
43     {
44         this.facets.put( metadataFacet.getFacetId(), metadataFacet );
45     }
46
47     /**
48      * Get a particular facet of metadata.
49      *
50      * @param facetId the facet ID
51      * @return the facet of the metadata.
52      */
53     public MetadataFacet getFacet( String facetId )
54     {
55         return this.facets.get( facetId );
56     }
57
58     /**
59      * Get all the facets available on this metadata.
60      *
61      * @return the facets of the metadata
62      */
63     public Collection<MetadataFacet> getFacetList()
64     {
65         return this.facets.values();
66     }
67
68     /**
69      * Get all the keys of the facets available on this metadata.
70      *
71      * @return the collection of facet IDs.
72      */
73     public Collection<String> getFacetIds()
74     {
75         return this.facets.keySet();
76     }
77
78     /**
79      * Get all available facets as a Map (typically used by bean rendering, such as in Archiva's JSPs).
80
81      * @return the map of facets
82      * @see #facets
83      */
84     public Map<String, MetadataFacet> getFacets()
85     {
86         return Collections.unmodifiableMap( facets );
87     }
88 }