/******************************************************************************* * 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.model.sca.impl; import gov.redhawk.model.sca.ScaModelPlugin; import gov.redhawk.model.sca.ScaPackage; import gov.redhawk.model.sca.ScaSimpleSequenceProperty; import java.lang.reflect.Array; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.List; import mil.jpeojtrs.sca.prf.PrfFactory; import mil.jpeojtrs.sca.prf.SimpleSequence; import mil.jpeojtrs.sca.prf.SimpleSequenceRef; import mil.jpeojtrs.sca.util.AnyUtils; import org.eclipse.core.runtime.Status; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.notify.Notification; import org.eclipse.emf.common.notify.impl.AdapterImpl; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EDataType; import org.eclipse.emf.ecore.util.EDataTypeEList; import org.omg.CORBA.Any; /** * <!-- begin-user-doc --> An implementation of the model object ' <em><b>Simple Sequence Property</b></em>'. * * @since 12.0 * <!-- end-user-doc --> * <p> * The following features are implemented: * </p> * <ul> * <li>{@link gov.redhawk.model.sca.impl.ScaSimpleSequencePropertyImpl#getValues <em>Values</em>}</li> * </ul> * * @generated */ public class ScaSimpleSequencePropertyImpl extends ScaAbstractPropertyImpl<SimpleSequence> implements ScaSimpleSequenceProperty { /** * The cached value of the '{@link #getValues() <em>Values</em>}' attribute list. * <!-- begin-user-doc --> * * @since 13.0 * <!-- end-user-doc --> * @see #getValues() * @generated NOT * @ordered */ protected final ObjectList values = new ObjectList(this); // END GENERATED CODE private Adapter valueListener = new AdapterImpl() { @Override public void notifyChanged(Notification msg) { if (!isIgnoreRemoteSet()) { switch (msg.getFeatureID(ScaSimpleSequenceProperty.class)) { case ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES: pushValueJob.setNewRemoteValue(toAny()); pushValueJob.schedule(); break; default: break; } } } }; { eAdapters().add(valueListener); } /** * @since 14.0 */ protected static class ObjectList extends EDataTypeEList<Object> { private static final long serialVersionUID = 1L; public ObjectList(ScaSimpleSequencePropertyImpl property) { super(Object.class, property, ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES); } private ScaSimpleSequencePropertyImpl getOwner() { return (ScaSimpleSequencePropertyImpl) owner; } private static Object[] getDefaultValues(SimpleSequence definition) { if (definition == null) { return new Object[0]; } List<Object> array = new ArrayList<Object>(); if (definition != null && definition.getValues() != null) { for (String value : definition.getValues().getValue()) { array.add(AnyUtils.convertString(value, definition.getType().getLiteral(), definition.isComplex())); } } return array.toArray(); } @Override protected boolean isInstance(Object object) { if (getOwner().getDefinition() != null) { EDataType dataType = getOwner().getDefinition().getType().toEDataType(getOwner().getDefinition().isComplex()); return dataType.isInstance(object); } else { return super.isInstance(object); } } /** * @since 14.0 */ public boolean isDefaultValue() { return Arrays.equals(toArray(), getDefaultValues(getOwner().getDefinition())); } /** * @since 14.0 */ public void restoreDefaultValue() { Object[] defaultValues = getDefaultValues(getOwner().getDefinition()); clear(); if (defaultValues.length > 0) { addAll(Arrays.asList(defaultValues)); } } } // BEGIN GENERATED CODE /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ protected ScaSimpleSequencePropertyImpl() { super(); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override protected EClass eStaticClass() { return ScaPackage.Literals.SCA_SIMPLE_SEQUENCE_PROPERTY; } /** * <!-- begin-user-doc --> * * @since 14.0 * <!-- end-user-doc --> * @generated NOT */ @Override public ObjectList getValues() { // END GENERATED CODE return values; // BEGIN GENERATED CODE } /** * <!-- begin-user-doc --> * * @since 13.0 * <!-- end-user-doc --> * @generated NOT */ @Override public Object[] getValue() { // END GENERATED CODE Class< ? > type = Object.class; if (getDefinition() != null) { EDataType dataType = getDefinition().getType().toEDataType(getDefinition().isComplex()); type = dataType.getInstanceClass(); } return getValues().toArray((Object[]) Array.newInstance(type, getValues().size())); // BEGIN GENERATED CODE } /** * <!-- begin-user-doc --> * * @since 20.0 * <!-- end-user-doc --> * @generated NOT */ @Override public SimpleSequenceRef createPropertyRef() { // END GENERATED CODE final SimpleSequenceRef simpleSequenceRef = PrfFactory.eINSTANCE.createSimpleSequenceRef(); simpleSequenceRef.setRefID(getId()); simpleSequenceRef.setValues(PrfFactory.eINSTANCE.createValues()); EList<String> value = simpleSequenceRef.getValues().getValue(); for (final Object object : getValues()) { value.add(object.toString()); } return simpleSequenceRef; // BEGIN GENERATED CODE } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public Object eGet(int featureID, boolean resolve, boolean coreType) { switch (featureID) { case ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES: return getValues(); } return super.eGet(featureID, resolve, coreType); } /** * <!-- begin-user-doc --> * * @since 13.0 * <!-- end-user-doc --> * @generated NOT */ @Override public void setValue(Object[] newValue) { // END GENERATED CODE if (Arrays.equals(getValues().toArray(), newValue)) { return; } if (newValue != null && newValue.length > 0) { setIgnoreRemoteSet(true); try { getValues().clear(); } finally { setIgnoreRemoteSet(false); } getValues().addAll(Arrays.asList(newValue)); } else { getValues().clear(); } // BEGIN GENERATED CODE } /** * <!-- begin-user-doc --> <!-- end-user-doc --> * * @generated NOT */ @SuppressWarnings("unchecked") @Override public void eSet(int featureID, Object newValue) { // END GENERATED CODE switch (featureID) { case ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES: setValue(((Collection< ? extends Object>) newValue).toArray()); return; default: break; } super.eSet(featureID, newValue); // BEGIN GENERATED CODE } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public void eUnset(int featureID) { switch (featureID) { case ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES: getValues().clear(); return; } super.eUnset(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public boolean eIsSet(int featureID) { switch (featureID) { case ScaPackage.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES: return values != null && !values.isEmpty(); } return super.eIsSet(featureID); } /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * * @generated */ @Override public String toString() { if (eIsProxy()) return super.toString(); StringBuffer result = new StringBuffer(super.toString()); result.append(" (values: "); result.append(values); result.append(')'); return result.toString(); } // END GENERATED CODE /** * @since 14.0 */ @Override public void setDefinition(SimpleSequence newDefinition) { super.setDefinition(newDefinition); } @Override public Any toAny() { return AnyUtils.toAnySequence(getValues().toArray(), getType(), isComplex()); } @Override public boolean isDefaultValue() { return getValues().isDefaultValue(); } @Override public void restoreDefaultValue() { getValues().restoreDefaultValue(); } @Override protected void internalFromAny(Any newAny) { try { if (newAny != null) { final Object value = AnyUtils.convertAny(newAny); if (value != null && value.getClass().isArray()) { setValue((Object[]) value); } } else { getValues().restoreDefaultValue(); } setStatus(ScaPackage.Literals.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES, Status.OK_STATUS); } catch (Exception e) { setStatus(ScaPackage.Literals.SCA_SIMPLE_SEQUENCE_PROPERTY__VALUES, new Status(Status.ERROR, ScaModelPlugin.ID, "Failed to read property value of:" + getName(), e)); } } /** * @since 18.0 */ protected boolean isComplex() { if (getDefinition() != null) { return getDefinition().isComplex(); } return false; } private String getType() { if (getDefinition() != null && getDefinition().getType() != null) { return getDefinition().getType().getLiteral(); } return null; } // BEGIN GENERATED CODE } // ScaSimpleSequencePropertyImpl