@SuppressWarnings({ "rawtypes", "unchecked" }) private EObject from(JsonParser jp, EClass eClass) throws JsonParseException, IOException { EObject result = eClass.getEPackage().getEFactoryInstance().create(eClass); Map<String, EStructuralFeature> fieldFeatureMap = JsonMetadata.INSTANCE.getJsonFeatures(eClass); EDataType dataType = (EDataType) feature.getEType(); if (feature.isMany()) { if (nextToken == JsonToken.START_ARRAY) { EList values = new BasicEList(); while (jp.nextToken() != JsonToken.END_ARRAY) { values.add(parseValueForDataType(jp, dataType)); result.eSet(feature, values); result.eSet(feature, parseValueForDataType(jp, dataType)); if (!eRef.isContainment()) { continue; // Non-containment references are currently ignored if (feature.isMany() && nextToken == JsonToken.START_ARRAY) { EList values = new BasicEList(); while (jp.nextToken() != JsonToken.END_ARRAY) { values.add(from(jp, eRef.getEReferenceType())); result.eSet(feature, values); result.eSet(feature, from(jp, eRef.getEReferenceType()));
if (eReference.isMany()) { importManager.getImport("java.util.List"); importManager.getImport("java.util.ArrayList"); if (eReference.getEAnnotation("embedsreference") != null) { stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_19); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_25); stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_21); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_27); if (eReference.getEAnnotation("embedsreference") != null) { stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_16); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_17); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_29); if (eReference.isMany()) { if (eReference.getEAnnotation("embedsreference") != null) { stringBuffer.append(eReference.getEType().getName());
protected EStructuralFeature.Internal.SettingDelegate eSettingDelegate(EStructuralFeature eFeature) { SettingDelegate eSettingDelegate = super.eSettingDelegate(eFeature); if (useInverses) { return eSettingDelegate; } if (eFeature instanceof EReference && ((EReference)eFeature).getEOpposite() != null) { // TODO cache/pre-generate the objects created in this block if (eFeature.isMany()) { if (eFeature.isUnsettable()) { return new InternalSettingDelegateMany(InternalSettingDelegateMany.EOBJECT_UNSETTABLE, eFeature); } else { return new InternalSettingDelegateMany(InternalSettingDelegateMany.EOBJECT, eFeature); } } else { if (eFeature.isUnsettable()) { return new InternalSettingDelegateSingleEObjectUnsettable((EClass) eFeature.getEType(), eFeature); } else { return new InternalSettingDelegateSingleEObject((EClass) eFeature.getEType(), eFeature); } } } else { return eSettingDelegate; } }
private boolean isException(EReference eReference) { if (eReference.getEContainingClass().getName().contentEquals("IfcRepresentationItem") && eReference.getName().contentEquals("StyledByItem")) { return true; } return false; } }
private int fixMisMatchInstance(Mismatch mismatch, IdEObject entityToBeFixed, IdEObject referenced) { int nrFixes = 0; for(EReference inverse: mismatch.inverse) if(inverse.getEContainingClass().isInstance(referenced)){ if(inverse.isMany()) ((EList<IdEObject>) referenced.eGet(inverse)).add(entityToBeFixed); else referenced.eSet(inverse, entityToBeFixed); nrFixes++; } return nrFixes; }
private void initOppositeInfo() { for (EClassifier eClassifier : ePackage.getEClassifiers()) { if (eClassifier instanceof EClass) { EClass eClass = (EClass)eClassifier; boolean hasOpposites = false; boolean hasManyOpposites = false; for (EReference eReference : eClass.getEAllReferences()) { if (eReference.getEOpposite() != null) { hasOpposites = true; if (eReference.isMany()) { hasManyOpposites = true; } } } oppositeInfos.put(eClass, new OppositeInfo(hasOpposites, hasManyOpposites)); } } }
@Override public void addTo(EObject container, EStructuralFeature feature, Collection<? extends Object> elements) throws ModelManipulationException { EClass containerClass = container.eClass(); Preconditions .checkArgument( !(containerClass.getEAllStructuralFeatures().contains(container)), "The container of EClass %s does neither define or inherit an EReference or EAttribute named %s.", containerClass.getName(), feature.getName()); Preconditions.checkArgument(feature.isMany(), "The EAttribute %s must have an upper bound larger than 1.", feature.getName()); Preconditions .checkArgument( !(feature instanceof EReference && ((EReference)feature).isContainment()), "Adding existing elements into the containment reference %s is not supported.", feature.getName()); doAdd(container, feature, elements); }
private void addInverseAttribute(Attribute attrib, EClass cls) { InverseAttribute inverseAttribute = (InverseAttribute) attrib; EReference eRef = eFactory.createEReference(); eRef.setUnsettable(true); // Inverses are always optional? eRef.getEAnnotations().add(createInverseAnnotation()); eRef.setName(attrib.getName()); if (inverseAttribute.getMax_cardinality() != null) { IntegerBound max_cardinality = (IntegerBound) inverseAttribute.getMax_cardinality(); if (max_cardinality.getBound_value() == -1) { eRef.setUpperBound(max_cardinality.getBound_value()); } else { eRef.setUpperBound(max_cardinality.getBound_value() + 1); eRef.setEType(classifier); String reverseName = inverseAttribute.getInverted_attr().getName(); EReference reference = (EReference) classifier.getEStructuralFeature(reverseName); reference.getEAnnotations().add(createInverseAnnotation()); if (eRef.getEType() == classifier && reference.getEType() == cls) { if (eRef.isMany()) { eRef.setUnique(true); if (reference.isMany()) { reference.setUnique(true); reference.setEOpposite(eRef); eRef.setEOpposite(reference); } else { System.out.println("Inverse mismatch"); System.out.println(classifier.getName() + "." + reference.getName() + " => " + cls.getName() + "." + eRef.getName());
@Override public EObject createChild(EObject container, EReference reference, EClass clazz) throws ModelManipulationException { EClass containerClass = container.eClass(); Preconditions .checkArgument( !(containerClass.getEAllReferences().contains(container)), "The container of EClass %s does neither define or inherit an EReference %s.", containerClass.getName(), reference.getName()); Preconditions .checkArgument(reference.isContainment(), "Created elements must be inserted directly into the containment hierarchy."); Preconditions.checkArgument(!clazz.isAbstract(), "Cannot instantiate abstract EClass %s.", clazz.getName()); return doCreate(container, reference, clazz); }
for (Long key : map.keySet()) { EObject object = map.get(key); System.out.println("#" + key + " " + object.eClass().getName()); for (EAttribute attribute : object.eClass().getEAllAttributes()) { System.out.println("\t" + attribute.getName() + "(" + attribute.getEType().getName() + "): " + object.eGet(attribute)); for (EReference reference : object.eClass().getEAllReferences()) { System.out.println("\t" + reference.getName() + "(" + reference.getEReferenceType().getName() + "): "); if (object.eGet(reference) instanceof EObjectResolvingEList) { EObjectResolvingEList<EObject> referencedObjectList = (EObjectResolvingEList<EObject>)object.eGet(reference); if (referencedObjectList != null && referencedObjectList.size() > 0) { if (reference.getEReferenceType().getEStructuralFeature("wrappedValue") != null) { for (Object obj : referencedObjectList) { Object wrappedValue = ((EObject)obj).eGet(reference.getEReferenceType().getEStructuralFeature("wrappedValue")); System.out.println(wrappedValue.toString()); if (referencedObjectList.get(referencedObjectList.size()-1) != obj) { System.out.println(); System.out.println("\t" + reference.getName() + "(" + reference.getEReferenceType().getName() + "): "); } else if (reference.getEReferenceType().getEStructuralFeature("wrappedValue") != null) {
@SuppressWarnings("unchecked") public void updateNode(T expressId, EClass ec, IdEObject eObject) throws DeserializeException { for (WaitingObject waitingObject : waitingObjects.get(expressId)) { if (waitingObject.getEReference().isMany()) { AbstractEList<EObject> list = (AbstractEList<EObject>) waitingObject.getObject().eGet(waitingObject.getEReference()); if (waitingObject instanceof SingleWaitingObject) { list.addUnique(eObject); } else { ListWaitingObject listWaitingObject = (ListWaitingObject)waitingObject; if (((EClass) waitingObject.getEReference().getEType()).isSuperTypeOf(eObject.eClass())) { while (list.size() <= listWaitingObject.getIndex()) { EObject create = ec.getEPackage().getEFactoryInstance().create(eObject.eClass()); ((IdEObjectImpl)create).setOid(-2); list.addUnique(create); throw new DeserializeException(waitingObject.getLineNumber(), "Field " + waitingObject.getEReference().getName() + " of " + waitingObject.getEReference().getEContainingClass().getName() + " cannot contain a " + eObject.eClass().getName()); if (((EClass) waitingObject.getEReference().getEType()).isSuperTypeOf(eObject.eClass())) { waitingObject.getObject().eSet(waitingObject.getEReference(), eObject); } else { throw new DeserializeException(waitingObject.getLineNumber(), "Field " + waitingObject.getEReference().getName() + " of " + waitingObject.getEReference().getEContainingClass().getName() + " cannot contain a " + eObject.eClass().getName() + "/" + eObject.getOid());
@SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected void doMoveTo(EObject what, EObject newContainer, EReference reference, int index) throws ModelManipulationException { if (reference.isMany()) { ((EList)newContainer.eGet(reference)).add(index, what); } else{ newContainer.eSet(reference, what); } }
throw new UserException("Only objects from the following schemas are allowed to be changed: Ifc2x3tc1 and IFC4, this object (" + eClass.getName() + ") is from the \"" + eClass.getEPackage().getName() + "\" package"); throw new UserException("No object of type \"" + eClass.getName() + "\" with oid " + oid + " found in project with pid " + transaction.getProject().getId()); EReference eReference = packageMetaData.getEReference(eClass.getName(), attributeName); if (value instanceof List && eReference.isMany()) { List sourceList = (List)value; if (!eReference.isMany()) { throw new UserException("Attribute is not of type 'many'"); if (eReference.getEType() == EcorePackage.eINSTANCE.getEDouble()) { List asStringList = (List)object.eGet(object.eClass().getEStructuralFeature(attributeName + "AsString")); asStringList.add(String.valueOf(o)); if (eReference.isMany()) { throw new UserException("Attribute is not of type 'single'"); if (eReference.getEType() instanceof EEnum) { EEnum eEnum = (EEnum) eReference.getEType(); object.set(eReference.getName(), eEnum.getEEnumLiteral(((String) value).toUpperCase()).getInstance()); } else { EClass typeEClass = (EClass) packageMetaData.getEClassifier(type); wrappedObject.set(wrappedObject.eClass().getEStructuralFeature("wrappedValue").getName(), value); object.set(eReference.getName(), wrappedObject); if (value instanceof Double) { wrappedObject.set(wrappedObject.eClass().getEStructuralFeature("wrappedValueAsString").getName(), String.valueOf((Double)value));
if (eReference.isMany()) { if (eReference.getEAnnotation("embedsreference") != null) { stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_44); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_45); stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_9); stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_46); stringBuffer.append(StringUtils.firstUpperCase(eReference.getName())); stringBuffer.append(TEXT_47); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_48); stringBuffer.append(StringUtils.firstUpperCase(eReference.getName())); stringBuffer.append(TEXT_49); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_50); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_52); stringBuffer.append(eReference.getEType().getName()); stringBuffer.append(TEXT_46); stringBuffer.append(StringUtils.firstUpperCase(eReference.getName())); stringBuffer.append(TEXT_47); stringBuffer.append(eReference.getName()); stringBuffer.append(TEXT_53); stringBuffer.append(StringUtils.firstUpperCase(eReference.getName()));
public EObject resolveShortFragment(Resource res, String shortFragment) { List<String> split = Strings.split(shortFragment, '.'); int contentsIdx = Integer.parseInt(split.get(0)); EObject result = res.getContents().get(contentsIdx); int splitIdx = 1; while(splitIdx < split.size()) { int featureId = Integer.parseInt(split.get(splitIdx++)); EReference reference = (EReference) result.eClass().getEStructuralFeature(featureId); if (reference.isMany()) { List<?> list = (List<?>) result.eGet(reference); int listIdx = Integer.parseInt(split.get(splitIdx++)); result = (EObject) list.get(listIdx); } else { result = (EObject) result.eGet(reference); } } return result; }
/** * This returns the default create children help text. */ public String getCreateChildrenToolTipText(Object object) { EObject refObject = (EObject) object; Collection localChildrenReferences = getChildrenReferences(object); if (localChildrenReferences.size() != 1) { return CommonEditResourceHandler.getString("19concat_UI_", (new Object[]{refObject.eClass().getName()})); //$NON-NLS-1$ } return CommonEditResourceHandler.getString("20concat_UI_", (new Object[]{((EReference) localChildrenReferences.iterator().next()).getEType().getName(), refObject.eClass().getName()})); //$NON-NLS-1$ = "Create two new children of type {0} for the selected {1}." }
EStructuralFeature eStructuralFeature = eClass.getEStructuralFeature(featureName); if (eStructuralFeature == null) { throw new DeserializeException("Unknown field (" + featureName + ") on class " + eClass.getName()); if (eStructuralFeature.isMany()) { jsonReader.beginArray(); if (eStructuralFeature instanceof EAttribute) { List list = (List) object.eGet(eStructuralFeature); List<String> stringList = null; if (eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject() || eStructuralFeature.getEType() == EcorePackage.eINSTANCE.getEDouble()) { EStructuralFeature asStringFeature = eClass.getEStructuralFeature(eStructuralFeature.getName() + "AsString"); stringList = (List<String>) object.eGet(asStringFeature); processRef(model, waitingList, object, eStructuralFeature, index, list, refOid); } else if(eStructuralFeature.getEAnnotation("twodimensionalarray")!=null) { IdEObjectImpl listObject = model.create(((EReference) eStructuralFeature).getEReferenceType()); addToList(eStructuralFeature, index, list, listObject); EStructuralFeature listFeature = listObject.eClass().getEStructuralFeature("List");
private void process(EClass eClass, EReference eReferencedFrom) { if (definesNode.has(eClass.getName())) { return; definesNode.set(eClass.getName(), defineNode); typeNode.put("name", eClass.getName()); typeNode.put("includeAllSubTypes", true); defineNode.set("type", typeNode); for (EReference eReference : eClass.getEAllReferences()) { if (!packageMetaData.isInverse(eReference) || isException(eReference)) { EClass eType = (EClass) eReference.getEType(); if (eType.getEPackage() == ePackage) { for (EClass eClass2 : packageMetaData.getAllSubClassesIncludingSelf(eType)) { fieldsNode.add(eReference.getName());
public void appendShortFragment(EObject obj, StringBuilder target) { EReference containmentFeature = obj.eContainmentFeature(); if (containmentFeature == null) { target.append(obj.eResource().getContents().indexOf(obj)); } else { EObject container = obj.eContainer(); appendShortFragment(container, target); target.append('.').append(container.eClass().getFeatureID(containmentFeature)); if (containmentFeature.isMany()) { List<?> list = (List<?>) container.eGet(containmentFeature); target.append('.').append(list.indexOf(obj)); } } }
return; int found = 0; foundReference = null; for (EReference testReference : parentObject.eClass().getEAllReferences()) { if (((EClass) testReference.getEType()).isSuperTypeOf(idEObject.eClass())) { foundReference = testReference; found++; if (found > 1) { throw new RuntimeException( "Sorry, crazy hack could not resolve the right field, please let BIMserver developer know (debug info: " + parentObject.eClass().getName() + ", " + idEObject.eClass().getName() + ")"); if (eFeature.getEType() == EcorePackage.eINSTANCE.getEString()) { lowLevelInterface.setWrappedStringAttribute(getTransactionId(), idEObject.getOid(), foundReference.getName(), idEObject.eClass().getName(), (String) newValue); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getELong() || eFeature.getEType() == EcorePackage.eINSTANCE.getELongObject()) { lowLevelInterface.setWrappedLongAttribute(getTransactionId(), idEObject.getOid(), foundReference.getName(), idEObject.eClass().getName(), (Long) newValue); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEDouble() || eFeature.getEType() == EcorePackage.eINSTANCE.getEDoubleObject()) { lowLevelInterface.setWrappedDoubleAttribute(getTransactionId(), idEObject.getOid(), foundReference.getName(), idEObject.eClass().getName(), (Double) newValue); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEBoolean() || eFeature.getEType() == EcorePackage.eINSTANCE.getEBooleanObject()) { lowLevelInterface.setWrappedBooleanAttribute(getTransactionId(), idEObject.getOid(), foundReference.getName(), idEObject.eClass().getName(), (Boolean) newValue); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEInt() || eFeature.getEType() == EcorePackage.eINSTANCE.getEIntegerObject()) { lowLevelInterface.setWrappedIntegerAttribute(getTransactionId(), idEObject.getOid(), foundReference.getName(), idEObject.eClass().getName(), (Integer) newValue); } else if (eFeature.getEType() == EcorePackage.eINSTANCE.getEByteArray()) { throw new RuntimeException("Unimplemented " + eFeature.getEType().getName() + " " + newValue);