| /******************************************************************************* |
| * Copyright (c) 2007, 2010 Willink Transformations and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * E.D.Willink - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.ocl.examples.modelregistry.environment; |
| |
| import java.io.File; |
| import java.io.IOException; |
| import java.net.URISyntaxException; |
| import java.net.URL; |
| |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.ocl.examples.modelregistry.model.NamespaceRegistry; |
| import org.eclipse.ocl.examples.modelregistry.standalone.JavaModelRegistryEnvironment; |
| |
| /** |
| * The ModelRegistryEnvironment defines the singleton facilities of the Model Registry and |
| * their initialisation. |
| * |
| * Derived StandaloneModelRegistryEnvironment and EclipseModelRegistryEnvironment |
| * define environments that are initialised programmatically or by plug-in extensions. |
| */ |
| public abstract class ModelRegistryEnvironment |
| { |
| // The plug-in ID |
| public static final String PLUGIN_ID = "org.eclipse.ocl.examples.modelregistry"; |
| |
| // The shared instance |
| private static ModelRegistryEnvironment INSTANCE = null; |
| |
| public static ModelRegistryEnvironment getInstance() { |
| if (INSTANCE == null) |
| INSTANCE = new JavaModelRegistryEnvironment(); |
| return INSTANCE; |
| } |
| |
| public static void logError(String string, Throwable e) { |
| getInstance().logTheError(string, e); |
| } |
| |
| private NamespaceRegistry namespaceRegistry = null; |
| private ModelSerializationRegistry modelSerializationRegistry = null; |
| |
| protected ModelRegistryEnvironment() { |
| INSTANCE = this; |
| } |
| |
| protected ModelSerializationRegistry createModelSerializationRegistry() { |
| return new ModelSerializationRegistry(); |
| } |
| |
| protected NamespaceRegistry createNamespaceRegistry() { |
| return new NamespaceRegistry(); |
| } |
| |
| /** |
| * Return a File to access the URI, or null if the URI cannot be |
| * resolved to a file protocol. |
| * |
| * @return the File |
| * @throws URISyntaxException if the URI syntax is bad |
| * @throws IOException if URL resolution fails |
| */ |
| public File getFile(URI uri) throws URISyntaxException, IOException { |
| String fileString = uri.toString(); |
| URL url = new URL(fileString); |
| if (!"file".equals(url.getProtocol())) |
| return null; |
| return new File(url.toString().substring(5)); |
| } |
| |
| public ModelSerializationRegistry getModelSerializationRegistry() { |
| if (modelSerializationRegistry == null) { |
| modelSerializationRegistry = createModelSerializationRegistry(); |
| initializeModelSerializationRegistry(modelSerializationRegistry); |
| } |
| return modelSerializationRegistry; |
| } |
| |
| public NamespaceRegistry getNamespaceRegistry() { |
| if (namespaceRegistry == null) { |
| namespaceRegistry = createNamespaceRegistry(); |
| initializeNamespaceRegistry(namespaceRegistry); |
| } |
| return namespaceRegistry; |
| } |
| |
| /** |
| * Install any required content in the ModelSerializationRegistry. |
| */ |
| protected abstract void initializeModelSerializationRegistry(ModelSerializationRegistry modelSerializationRegistry); |
| |
| /** |
| * Install any required content in the NamespaceRegistry. |
| */ |
| protected abstract void initializeNamespaceRegistry(NamespaceRegistry namespaceRegistry); |
| |
| public abstract void logTheError(String string, Throwable e); |
| } |