All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.semantictools.uml.api.UmlFileManager Maven / Gradle / Ivy

Go to download

A library used to generate documentation for media types associated with a JSON-LD context

The newest version!
/*******************************************************************************
 * Copyright 2012 Pearson Education
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package org.semantictools.uml.api;

import java.io.File;

import org.semantictools.frame.api.LinkManager;
import org.semantictools.frame.model.RdfType;
import org.semantictools.uml.model.UmlClass;

import com.hp.hpl.jena.rdf.model.Property;

public class UmlFileManager extends LinkManager {
  
  
  private File rootDir;
  private String ontologyURI;
  private File ontologyDir;
  private File imagesDir;
  
  public UmlFileManager(File rootDir) {
    this.rootDir = rootDir;
  }
  
  /**
   * Set the current ontology.  This establishes the base directory, and
   * subsequent operations are relative to this base.
   */
  public void setOntology(String ontologyURI) {
    this.ontologyURI = ontologyURI;
    String path = getOntologyPath(ontologyURI);
    ontologyDir = new File(rootDir, path);
    imagesDir = new File(ontologyDir, "images");
    imagesDir.mkdirs();
    
    String baseURI = ontologyDir.toString().replace('\\', '/') + "/";
    setBaseURI(baseURI);
  }
  
  public File getOntologyAllFile() {
    return createOntologyAllFile(ontologyDir);
  }
  
  
  private File createOntologyAllFile(File ontDir) {
    return new File(ontDir, "index.html");
  }
  
  public File getUmlClassImageFile(UmlClass umlClass) {
    return new File(imagesDir, umlClass.getLocalName() + ".png");
  }
  
  public File getRootDir() {
    return rootDir;
  }
  
  public File getOntologyDir() {
    return ontologyDir;
  }
  
  public File getImagesDir() {
    return imagesDir;
  }

  private String getOntologyPath(String uri) {
    int slash = uri.indexOf('/')+2;
    String path = uri.substring(slash, uri.length()-1);
    return path;
  }


  public String getTypeId(RdfType umlClass) {
    return umlClass.getLocalName();
  }
  
  public String getPropertyId(UmlClass declaringClass, Property rdfProperty) {
    if (rdfProperty == null) return null;
    
    return declaringClass.getLocalName() + '.' + rdfProperty.getLocalName();
  }
  
  public String getPropertyHref(UmlClass declaringClass, Property rdfProperty) {
    String classURI = declaringClass.getURI();
    String prefix = classURI.startsWith(ontologyURI) ? "" : getTypeHref(declaringClass.getType());
    return prefix + "#" + getPropertyId(declaringClass, rdfProperty);
  }
  
  public String getTypeHref(RdfType type) {
    String uri = type.getUri();
    if (uri.startsWith(ontologyURI)) {
      return "#" + getTypeId(type);
    }
    String ontURI = type.getNamespace();
    String filePath = createOntologyAllFile(ontURI).toString().replace('\\', '/');
    String anchorPath =  filePath + "#" + getTypeId(type);
    return relativize(anchorPath);
    
  }
  
  /**
   * Returns the URI for the documentation of the specified RDF type, relative
   * to the given source file.
   */
  public String getTypeRelativePath(File sourceFile, RdfType type) {
    File ontologyFile = createOntologyAllFile(type.getNamespace());
   
    LinkManager linkManager = new LinkManager(sourceFile);
    String uri = linkManager.relativize(ontologyFile) + "#" + getTypeId(type);
    return uri;
  }
  
  public String getTypeLink(RdfType type) {
    return "" + type.getLocalName() + "";
  }
  

  private File createOntologyAllFile(String ontologyURI) {
    String path = getOntologyPath(ontologyURI);
    File dir = new File(rootDir, path);
    return createOntologyAllFile(dir);
  }

  
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy