View Javadoc

1   /*
2    * Copyright (c) 2007, James Leigh All rights reserved.
3    * 
4    * Redistribution and use in source and binary forms, with or without
5    * modification, are permitted provided that the following conditions are met:
6    * 
7    * - Redistributions of source code must retain the above copyright notice, this
8    *   list of conditions and the following disclaimer.
9    * - Redistributions in binary form must reproduce the above copyright notice,
10   *   this list of conditions and the following disclaimer in the documentation
11   *   and/or other materials provided with the distribution. 
12   * - Neither the name of the openrdf.org nor the names of its contributors may
13   *   be used to endorse or promote products derived from this software without
14   *   specific prior written permission.
15   * 
16   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17   * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18   * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19   * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
20   * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21   * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22   * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23   * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24   * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25   * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26   * POSSIBILITY OF SUCH DAMAGE.
27   * 
28   */
29  package org.openrdf.elmo.rolemapper;
30  
31  import java.util.HashMap;
32  import java.util.HashSet;
33  import java.util.Map;
34  import java.util.Set;
35  
36  /**
37   * Tracks recorded roles and maps them to their subject type.
38   * 
39   * @author James Leigh
40   * 
41   */
42  public class DirectMapper<URI> {
43  
44  	private Map<Class<?>, Set<URI>> directTypes;
45  
46  	private Map<URI, Set<Class<?>>> directRoles;
47  
48  	public DirectMapper() {
49  		directTypes = new HashMap<Class<?>, Set<URI>>(256);
50  		directRoles = new HashMap<URI, Set<Class<?>>>(256);
51  	}
52  
53  	public Set<Class<?>> getDirectRoles(URI type) {
54  		return directRoles.get(type);
55  	}
56  
57  	public Set<URI> getDirectTypes(Class<?> role) {
58  		return directTypes.get(role);
59  	}
60  
61  	public void recordRole(Class<?> role, URI rdfType) {
62  		Set<URI> set = directTypes.get(role);
63  		if (set == null)
64  			directTypes.put(role, set = new HashSet<URI>());
65  		if (rdfType != null)
66  			set.add(rdfType);
67  		if (rdfType != null) {
68  			Set<Class<?>> set1 = directRoles.get(rdfType);
69  			if (set1 == null)
70  				directRoles.put(rdfType, set1 = new HashSet<Class<?>>());
71  			if (role != null)
72  				set1.add(role);
73  		}
74  	}
75  }