blob: b84cc12fa5aa1c122cb605eb09f963e70eacbd7a [file] [log] [blame]
/**
* <copyright>
*
* Copyright (c) 2013 E.D.Willink and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* E.D.Willink - Initial API and implementation
*/
package org.eclipse.qvto.examples.pivot.imperativeocl.utilities;
import org.eclipse.emf.ecore.resource.ContentHandler;
import org.eclipse.emf.ecore.xmi.impl.RootXMLContentHandlerImpl;
import org.eclipse.jdt.annotation.NonNull;
import org.eclipse.ocl.pivot.internal.prettyprint.PrettyPrintVisitor;
import org.eclipse.ocl.pivot.internal.prettyprint.PrettyPrinter;
import org.eclipse.ocl.pivot.internal.resource.ASResourceFactory;
import org.eclipse.ocl.pivot.internal.resource.ASSaver;
import org.eclipse.ocl.pivot.internal.resource.AbstractASResourceFactory;
import org.eclipse.ocl.pivot.internal.utilities.AS2Moniker;
import org.eclipse.ocl.pivot.internal.utilities.AS2XMIid;
import org.eclipse.ocl.pivot.utilities.AS2MonikerVisitor;
import org.eclipse.ocl.pivot.utilities.AS2XMIidVisitor;
import org.eclipse.ocl.pivot.utilities.ASSaverLocateVisitor;
import org.eclipse.ocl.pivot.utilities.ASSaverResolveVisitor;
import org.eclipse.ocl.pivot.utilities.ToStringVisitor;
import org.eclipse.qvto.examples.pivot.imperativeocl.ImperativeOCLPackage;
/**
* ImperativeOCLASResourceFactory supports creation of a ImperativeOCL AS resource and associated artefacts.
*/
public class ImperativeOCLASResourceFactory extends AbstractASResourceFactory
{
private static final @NonNull String AS_FILE_EXTENSION = "imperativeoclas";
private static final @NonNull String CS_FILE_EXTENSION = "iocl";
private static ImperativeOCLASResourceFactory INSTANCE;
private static final @NonNull ContentHandler CONTENT_HANDLER = new RootXMLContentHandlerImpl(
ImperativeOCLPackage.eCONTENT_TYPE, new String[]{AS_FILE_EXTENSION},
RootXMLContentHandlerImpl.XMI_KIND, ImperativeOCLPackage.eNS_URI, null);
static {
installContentHandler(ContentHandler.Registry.NORMAL_PRIORITY, CONTENT_HANDLER);
}
public static synchronized @NonNull ImperativeOCLASResourceFactory getInstance() {
if (INSTANCE == null) {
INSTANCE = new ImperativeOCLASResourceFactory(); // Create our own singleton
INSTANCE.install(CS_FILE_EXTENSION, null);
}
return INSTANCE;
}
/**
* Creates an instance of the resource factory.
*/
public ImperativeOCLASResourceFactory() {
super(ImperativeOCLPackage.eCONTENT_TYPE);
}
@Override
public @NonNull AS2MonikerVisitor createAS2MonikerVisitor(@NonNull AS2Moniker as2moniker) {
return new ImperativeOCLAS2MonikerVisitor(as2moniker);
}
@Override
public @NonNull AS2XMIidVisitor createAS2XMIidVisitor(@NonNull AS2XMIid as2id) {
return new ImperativeOCLAS2XMIidVisitor(as2id);
}
@Override
public @NonNull ASSaverLocateVisitor createASSaverLocateVisitor(@NonNull ASSaver asSaver) {
return new ImperativeOCLASSaverLocateVisitor(asSaver);
}
@Override
public @NonNull ASSaverResolveVisitor createASSaverResolveVisitor(@NonNull ASSaver asSaver) {
return new ImperativeOCLASSaverResolveVisitor(asSaver);
}
@Override
public @NonNull PrettyPrintVisitor createPrettyPrintVisitor(@NonNull PrettyPrinter printer) {
return new ImperativeOCLPrettyPrintVisitor(printer);
}
@Override
public @NonNull ToStringVisitor createToStringVisitor(@NonNull StringBuilder s) {
return new ImperativeOCLToStringVisitor(s);
}
@Override
@NonNull
public ASResourceFactory getASResourceFactory() {
return getInstance();
}
}