View Javadoc

1   package com.ontotext.ordi.mapper.handler;
2   
3   import java.util.Map;
4   
5   import org.openrdf.model.Literal;
6   import org.openrdf.model.Resource;
7   import org.openrdf.model.Value;
8   import org.openrdf.model.impl.BNodeImpl;
9   import org.openrdf.model.impl.URIImpl;
10  
11  import com.ontotext.ordi.mapper.model.DataHandler;
12  
13  public class ResourceImpl implements DataHandler {
14  
15      private String pattern = "urn:ordi:default:%s";
16      private boolean isBNodeSubject = false;
17      private int startIgnoreChars;
18      private int endIgnoreChars;
19  
20      public Value[] sqlToValue(Object object) {
21          Resource[] values = new Resource[1];
22          if (isBNodeSubject)
23              values[0] = new BNodeImpl(String.format(pattern, object.toString()));
24          else
25              values[0] = new URIImpl(String.format(pattern, object.toString()));
26          return values;
27      }
28  
29      public Object valueToSql(Value value) {
30          if (value instanceof Literal) {
31              return null;
32          }
33          return value.stringValue().substring(startIgnoreChars,
34                  value.stringValue().length() - endIgnoreChars);
35      }
36  
37      public void initialize(Map<String, String> params) {
38          if (params.containsKey("hasPattern")) {
39              pattern = params.get("hasPattern");
40          }
41          if (pattern == null || pattern.indexOf("%s") == -1) {
42              throw new IllegalArgumentException(
43                      "The pattern has the be not null and specify %s paramter!");
44          }
45          if (params.containsKey("blankNode")) {
46              isBNodeSubject = true;
47          }
48          startIgnoreChars = pattern.indexOf("%s");
49          endIgnoreChars = pattern.length() - startIgnoreChars - 2;
50      }
51  }