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

org.protege.editor.owl.ui.ontology.OntologyPreferences Maven / Gradle / Ivy

package org.protege.editor.owl.ui.ontology;

import org.protege.editor.core.prefs.Preferences;
import org.protege.editor.core.prefs.PreferencesManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;
import java.net.URISyntaxException;
import java.util.Calendar;


/**
 * Author: Matthew Horridge
* The University Of Manchester
* Medical Informatics Group
* Date: 28-Jun-2006

* [email protected]
* www.cs.man.ac.uk/~horridgm

*/ public class OntologyPreferences { public static final String DEFAULT_BASE = "http://www.semanticweb.org"; public static final String PREFERENCES_KEY = "OntologyPreferences"; public static final String BASE_URI_KEY = "BASE_URI"; public static final String INC_YEAR_KEY = "INC_YEAR"; public static final String INC_MONTH_KEY = "INC_MONTH"; public static final String INC_DAY_KEY = "INC_DAY"; public static final String INC_DOCUMENT_COUNTER = "INC_DOCUMENT_COUNTER"; public static final String DOCUMENT_COUNTER = "DOCUMENT_COUNTER"; private static OntologyPreferences instance; public static final String SYSTEM_USER_NAME_PROPERTY = "user.name"; public static final int DOCUMENT_COUNTER_START = 1; private final Logger logger = LoggerFactory.getLogger(OntologyPreferences.class); private URI baseURI; private boolean includeYear = false; private boolean includeMonth = false; private boolean includeDay = false; private boolean useCounter = true; private OntologyPreferences() { StringBuilder sb = new StringBuilder(); sb.append(DEFAULT_BASE); String userName = getNormalisedUserName(); if(!userName.isEmpty()) { sb.append("/"); sb.append(userName); } sb.append("/ontologies"); baseURI = URI.create(sb.toString()); } /** * Gets the name of the logged in user, normalised so that it can appear in a URI. * @return The normalised user name. This may be an empty string of the name could not be normalised for * any reason. */ private String getNormalisedUserName() { String rawUserName = System.getProperty(SYSTEM_USER_NAME_PROPERTY); if(rawUserName == null) { return ""; } String lowerCaseUserName = rawUserName.toLowerCase(); String withoutSpaces = lowerCaseUserName.replaceAll("\\s", ""); try { URI uri = new URI(withoutSpaces); // Had toASCIIString which encodes non-ascii characters. Don't think we need this though. return uri.toString(); } catch (URISyntaxException e) { logger.warn("Could not encode user name for ontology IRI: " + e.getMessage()); return ""; } } public static synchronized OntologyPreferences getInstance() { if (instance == null) { instance = new OntologyPreferences(); instance.restore(); } return instance; } private void restore() { Preferences p = getPreferences(); baseURI = URI.create(p.getString(BASE_URI_KEY, baseURI.toString())); includeYear = p.getBoolean(INC_YEAR_KEY, true); includeMonth = p.getBoolean(INC_MONTH_KEY, true); includeDay = p.getBoolean(INC_DAY_KEY, false); useCounter = p.getBoolean(INC_DOCUMENT_COUNTER, true); } public URI getBaseURI() { return baseURI; } public void setBaseURI(URI baseURI) { this.baseURI = baseURI; save(); } public boolean isIncludeYear() { return includeYear; } public void setIncludeYear(boolean includeYear) { this.includeYear = includeYear; save(); } public boolean isIncludeMonth() { return includeMonth; } public void setIncludeMonth(boolean includeMonth) { this.includeMonth = includeMonth; save(); } public boolean isIncludeDay() { return includeDay; } public void setIncludeDay(boolean includeDay) { this.includeDay = includeDay; save(); } private void save() { Preferences p = getPreferences(); p.putString(BASE_URI_KEY, baseURI.toString()); p.putBoolean(INC_YEAR_KEY, includeYear); p.putBoolean(INC_MONTH_KEY, includeMonth); p.putBoolean(INC_DAY_KEY, includeDay); } private Preferences getPreferences() { return PreferencesManager.getInstance().getApplicationPreferences(PREFERENCES_KEY); } public int getCounter() { return getPreferences().getInt(DOCUMENT_COUNTER, DOCUMENT_COUNTER_START); } public void incrementCounter() { Preferences preferences = getPreferences(); int counter = preferences.getInt(DOCUMENT_COUNTER, DOCUMENT_COUNTER_START); counter++; preferences.putInt(DOCUMENT_COUNTER, counter); save(); } public void resetDocumentCounter() { getPreferences().putInt(DOCUMENT_COUNTER, DOCUMENT_COUNTER_START); save(); } public URI generateNextURI() { incrementCounter(); return generateURI(); } public URI generateURI() { String uriString = baseURI.toString(); if (!uriString.endsWith("/")) { uriString = uriString + "/"; } if (includeYear) { uriString += Calendar.getInstance().get(Calendar.YEAR) + "/"; if (includeMonth) { uriString += Calendar.getInstance().get(Calendar.MONTH) + "/"; if (includeDay) { uriString += Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "/"; } } } String documentName = "untitled-ontology-" + getCounter(); uriString += documentName; return URI.create(uriString); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy