Package org.wikier.trioo.jtrioo

Source Code of org.wikier.trioo.jtrioo.AbstractSession

package org.wikier.trioo.jtrioo;

import java.util.HashMap;
import java.util.Map;

import org.apache.log4j.Logger;
import org.wikier.trioo.jtrioo.common.Configuration;
import org.wikier.trioo.jtrioo.exceptions.NotRegistrableRDFClassException;
import org.wikier.trioo.jtrioo.helpers.TypeHelper;
import org.wikier.trioo.jtrioo.introspection.ResourceInstrospector;
import org.wikier.trioo.jtrioo.rdf.meta.RDFMetaResource;

public abstract class AbstractSession implements Session {

  private static final Logger logger = Logger.getLogger(AbstractSession.class);
  private Map<String,RDFMetaResource> resources;
  private Configuration configuration;
 
  public AbstractSession() {
    this.resources = new HashMap<String,RDFMetaResource>();
  }

  @SuppressWarnings("rawtypes")
  public void registerClass(Class resourceClass) throws NotRegistrableRDFClassException {
    RDFMetaResource resource = ResourceInstrospector.getRDFMetaResource(resourceClass);
    resources.put(resourceClass.getCanonicalName(), resource);
    logger.debug("Registered RDF Resource for class " + resourceClass.getCanonicalName());
  }
 
  @SuppressWarnings("rawtypes")
  public RDFMetaResource getMetaRDFResource(Class resourceClass) {
    if (TypeHelper.isPrimitive(resourceClass)) {
      logger.debug("Primitive types can not be registered");
      return null;
    } else {
      String canonicalNane = resourceClass.getCanonicalName();
      if (!resources.containsKey(canonicalNane)) {
        logger.debug(canonicalNane + " was not previously registered, try to do it now...");
        try {
          this.registerClass(resourceClass);
        } catch (NotRegistrableRDFClassException e) {
          logger.error("Error registering class " + canonicalNane + ": " + e);
          return null;
        }
      }
      return resources.get(canonicalNane); //FIXME return an unmodifiable RDFMetaResource
    }
  }
 
  @SuppressWarnings("rawtypes")
  public Class getAssociatedClass(RDFMetaResource metaResource) {
    for (RDFMetaResource mr : this.resources.values()) {
      if (metaResource.compareTo(mr) == 0) {
        return mr.getResourceClass();
      }
    }
    return null;
  }

  public Configuration getConfiguration() {
    return this.configuration;
  }

  public void setConfiguration(Configuration conf) {
    this.configuration = conf;
  }
 
}
TOP

Related Classes of org.wikier.trioo.jtrioo.AbstractSession

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.