View Javadoc

1   package org.openrdf.elmo.base;
2   
3   import org.openrdf.elmo.RdfTypeFactory;
4   import org.openrdf.elmo.RoleMapper;
5   import org.openrdf.elmo.RoleMapperFactory;
6   import org.openrdf.elmo.rolemapper.ComplexMapper;
7   import org.openrdf.elmo.rolemapper.DirectMapper;
8   import org.openrdf.elmo.rolemapper.HierarchicalRoleMapper;
9   import org.openrdf.elmo.rolemapper.RoleClassLoader;
10  import org.openrdf.elmo.rolemapper.RoleMapperImpl;
11  import org.openrdf.elmo.rolemapper.SimpleRoleMapper;
12  import org.openrdf.elmo.rolemapper.TypeMapper;
13  
14  public abstract class RoleMapperFactoryBase<URI> implements
15  		RoleMapperFactory<URI> {
16  	private ClassLoader cl;
17  
18  	public void setClassLoader(ClassLoader cl) {
19  		this.cl = cl;
20  	}
21  
22  	public RoleMapper<URI> createRoleMapper() {
23  		ComplexMapper role = createMapper();
24  		RoleMapperImpl mapper = new RoleMapperImpl(role);
25  		mapper.setRdfTypeFactory(getRdfTypeFactory());
26  		RoleClassLoader loader = new RoleClassLoader();
27  		loader.setClassLoader(cl);
28  		loader.setRoleMapper(mapper);
29  		loader.loadClasses("META-INF/org.openrdf.elmo.roles");
30  		loader.loadClasses("META-INF/org.openrdf.elmo.factories");
31  		return mapper;
32  	}
33  
34  	private ComplexMapper createMapper() {
35  		DirectMapper d = new DirectMapper();
36  		TypeMapper t = new TypeMapper();
37  		SimpleRoleMapper r = new SimpleRoleMapper();
38  		return new ComplexMapper(new HierarchicalRoleMapper(d, t, r));
39  	}
40  
41  	protected abstract RdfTypeFactory<URI> getRdfTypeFactory();
42  }