/*******************************************************************************
* This file is protected by Copyright.
* Please refer to the COPYRIGHT file distributed with this source distribution.
*
* This file is part of REDHAWK IDE.
*
* 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
*******************************************************************************/
// BEGIN GENERATED CODE
package gov.redhawk.ide.debug.impl;
import gov.redhawk.ide.debug.LocalFileManager;
import gov.redhawk.ide.debug.LocalSca;
import gov.redhawk.ide.debug.LocalScaComponent;
import gov.redhawk.ide.debug.LocalScaDevice;
import gov.redhawk.ide.debug.LocalScaDeviceManager;
import gov.redhawk.ide.debug.LocalScaExecutableDevice;
import gov.redhawk.ide.debug.LocalScaLoadableDevice;
import gov.redhawk.ide.debug.LocalScaService;
import gov.redhawk.ide.debug.LocalScaWaveform;
import gov.redhawk.ide.debug.NotifyingNamingContext;
import gov.redhawk.ide.debug.ScaDebugFactory;
import gov.redhawk.ide.debug.ScaDebugPackage;
import gov.redhawk.ide.debug.ScaDebugPlugin;
import gov.redhawk.ide.debug.internal.LocalApplicationFactory;
import gov.redhawk.ide.debug.internal.cf.extended.impl.ApplicationImpl;
import gov.redhawk.model.sca.ScaPackage;
import gov.redhawk.model.sca.ScaWaveform;
import gov.redhawk.model.sca.commands.ScaModelCommand;
import gov.redhawk.model.sca.util.ScaFileSystemUtil;
import java.util.Map.Entry;
import org.eclipse.core.filesystem.IFileStore;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.impl.EFactoryImpl;
import org.eclipse.emf.ecore.plugin.EcorePlugin;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.jacorb.naming.Name;
import org.omg.CosNaming.NamingContext;
import CF.Application;
/**
* <!-- begin-user-doc -->
* An implementation of the model <b>Factory</b>.
* <!-- end-user-doc -->
* @generated
*/
public class ScaDebugFactoryImpl extends EFactoryImpl implements ScaDebugFactory {
/**
* Creates the default factory implementation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public static ScaDebugFactory init() {
try {
ScaDebugFactory theScaDebugFactory = (ScaDebugFactory) EPackage.Registry.INSTANCE.getEFactory(ScaDebugPackage.eNS_URI);
if (theScaDebugFactory != null) {
return theScaDebugFactory;
}
} catch (Exception exception) {
EcorePlugin.INSTANCE.log(exception);
}
return new ScaDebugFactoryImpl();
}
/**
* Creates an instance of the factory.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ScaDebugFactoryImpl() {
super();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public EObject create(EClass eClass) {
switch (eClass.getClassifierID()) {
case ScaDebugPackage.LOCAL_SCA:
return createLocalSca();
case ScaDebugPackage.NOTIFYING_NAMING_CONTEXT:
return createNotifyingNamingContext();
case ScaDebugPackage.NAME_TO_OBJECT_ENTRY:
return (EObject) createNameToObjectEntry();
case ScaDebugPackage.NAME_TO_NAMING_CONTEXT_ENTRY:
return (EObject) createNameToNamingContextEntry();
case ScaDebugPackage.LOCAL_FILE_MANAGER:
return createLocalFileManager();
case ScaDebugPackage.LOCAL_SCA_WAVEFORM:
return createLocalScaWaveform();
case ScaDebugPackage.LOCAL_SCA_COMPONENT:
return createLocalScaComponent();
case ScaDebugPackage.LOCAL_SCA_DEVICE_MANAGER:
return createLocalScaDeviceManager();
case ScaDebugPackage.LOCAL_SCA_EXECUTABLE_DEVICE:
return createLocalScaExecutableDevice();
case ScaDebugPackage.LOCAL_SCA_LOADABLE_DEVICE:
return createLocalScaLoadableDevice();
case ScaDebugPackage.LOCAL_SCA_DEVICE:
return createLocalScaDevice();
case ScaDebugPackage.LOCAL_SCA_SERVICE:
return createLocalScaService();
default:
throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public Object createFromString(EDataType eDataType, String initialValue) {
switch (eDataType.getClassifierID()) {
case ScaDebugPackage.NAME:
return createNameFromString(eDataType, initialValue);
case ScaDebugPackage.NAMING_CONTEXT:
return createNamingContextFromString(eDataType, initialValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public String convertToString(EDataType eDataType, Object instanceValue) {
switch (eDataType.getClassifierID()) {
case ScaDebugPackage.NAME:
return convertNameToString(eDataType, instanceValue);
case ScaDebugPackage.NAMING_CONTEXT:
return convertNamingContextToString(eDataType, instanceValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalSca createLocalSca() {
LocalScaImpl localSca = new LocalScaImpl();
return localSca;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public NotifyingNamingContext createNotifyingNamingContext() {
NotifyingNamingContextImpl notifyingNamingContext = new NotifyingNamingContextImpl();
return notifyingNamingContext;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Entry<Name, org.omg.CORBA.Object> createNameToObjectEntry() {
NameToObjectEntryImpl nameToObjectEntry = new NameToObjectEntryImpl();
return nameToObjectEntry;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Entry<Name, NamingContext> createNameToNamingContextEntry() {
NameToNamingContextEntryImpl nameToNamingContextEntry = new NameToNamingContextEntryImpl();
return nameToNamingContextEntry;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalFileManager createLocalFileManager() {
LocalFileManagerImpl localFileManager = new LocalFileManagerImpl();
return localFileManager;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaWaveform createLocalScaWaveform() {
LocalScaWaveformImpl localScaWaveform = new LocalScaWaveformImpl();
return localScaWaveform;
}
/**
* Creates a {@link LocalScaWaveform} from a {@link ScaWaveform}. This new object is intended to serve as a
* 'proxy' to the actual domain waveform. This is used to 'duplicate' a waveform into the sandbox.
*
* @since 8.0
*/
@Override
public LocalScaWaveform createLocalScaWaveform(final ScaWaveform domainWaveform) {
// Get information from the domain waveform
final String identifier = domainWaveform.getIdentifier();
final String name = domainWaveform.getName();
final Application application = domainWaveform.getObj();
final String profile = domainWaveform.getProfile();
final URI profileURI = domainWaveform.getProfileURI();
// Create a naming context
final NotifyingNamingContext rootContext = ScaDebugPlugin.getInstance().getLocalSca().getRootContext();
final NotifyingNamingContext context;
try {
context = LocalApplicationFactory.createWaveformContext(rootContext, identifier);
} catch (CoreException e) {
throw new IllegalStateException("Failed to create waveform naming context", e);
}
// Create the new local proxy for the waveform
final LocalScaWaveform localScaWaveform = createLocalScaWaveform();
localScaWaveform.setDomainWaveform(domainWaveform);
localScaWaveform.setNamingContext(context);
localScaWaveform.setProfile(profile);
final ApplicationImpl localApp = new ApplicationImpl(localScaWaveform, identifier, name, application);
localScaWaveform.setLocalApp(localApp);
localScaWaveform.setProfileURI(profileURI);
try {
// Set the profile to the new URI generated with the new proxy local application object
IFileStore store = ScaFileSystemUtil.getFileStore(localScaWaveform);
localScaWaveform.setProfileURI(URI.createURI(store.toURI().toString()));
} catch (CoreException e) {
throw new IllegalStateException("Failed to create waveform profile URI", e);
}
// Dispose the local model object if the domain model object is disposed
ScaModelCommand.execute(domainWaveform, new ScaModelCommand() {
@Override
public void execute() {
domainWaveform.eAdapters().add(new AdapterImpl() {
@Override
public void notifyChanged(Notification msg) {
switch (msg.getFeatureID(ScaWaveform.class)) {
case ScaPackage.SCA_WAVEFORM__DISPOSED:
if (msg.getNewBooleanValue()) {
localScaWaveform.dispose();
EcoreUtil.delete(localScaWaveform);
}
break;
default:
break;
}
}
});
}
});
return localScaWaveform;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaComponent createLocalScaComponent() {
LocalScaComponentImpl localScaComponent = new LocalScaComponentImpl();
return localScaComponent;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaDeviceManager createLocalScaDeviceManager() {
LocalScaDeviceManagerImpl localScaDeviceManager = new LocalScaDeviceManagerImpl();
return localScaDeviceManager;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaExecutableDevice createLocalScaExecutableDevice() {
LocalScaExecutableDeviceImpl localScaExecutableDevice = new LocalScaExecutableDeviceImpl();
return localScaExecutableDevice;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaLoadableDevice createLocalScaLoadableDevice() {
LocalScaLoadableDeviceImpl localScaLoadableDevice = new LocalScaLoadableDeviceImpl();
return localScaLoadableDevice;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaDevice createLocalScaDevice() {
LocalScaDeviceImpl localScaDevice = new LocalScaDeviceImpl();
return localScaDevice;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public LocalScaService createLocalScaService() {
LocalScaServiceImpl localScaService = new LocalScaServiceImpl();
return localScaService;
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public Name createNameFromString(EDataType eDataType, String initialValue) {
return (Name) super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String convertNameToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public NamingContext createNamingContextFromString(EDataType eDataType, String initialValue) {
return (NamingContext) super.createFromString(eDataType, initialValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public String convertNamingContextToString(EDataType eDataType, Object instanceValue) {
return super.convertToString(eDataType, instanceValue);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
@Override
public ScaDebugPackage getScaDebugPackage() {
return (ScaDebugPackage) getEPackage();
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @deprecated
* @generated
*/
@Deprecated
public static ScaDebugPackage getPackage() {
return ScaDebugPackage.eINSTANCE;
}
} //ScaDebugFactoryImpl