Java 类org.eclipse.emf.ecore.change.ListChange 实例源码

项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
@Override
void execute() {
    ListChange listChange = null;

    if (newElement instanceof BinaryTemporalConstraint){
        listChange = createListFeatureChange(ChangeKind.ADD_LITERAL, position, (EObject)newElement);
        addToChangeDescription(parent, featureOfElement, listChange, changeDescription2);
    }
    else if(newElement instanceof TemporalChain){
        FeatureChange featureChange = createFeatureChange(parent, featureOfElement, newElement);
        addToChangeDescription(parent, featureOfElement, featureChange, changeDescription2);
    }
    else {
        listChange = createListFeatureChange(ChangeKind.ADD_LITERAL, position, (EObject)newElement);
        addToChangeDescription(parent, featureOfElement, listChange, changeDescription1);
    }
}
项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
@Override
void execute() {            
    Collection<EObject> toDelete = new ArrayList();
    toDelete.addAll((Collection<? extends EObject>) oldElements);

    Object value = parent.eGet(featureOfElement);
    if(value instanceof List) {
        List<EObject> current = (List) value;
        int currentSize = current.size();

        if(toDelete != null && !toDelete.isEmpty()) {
            for(int i = currentSize - 1; i >= 0; i--) {
                EObject iObject = current.get(i);
                if(toDelete.contains(iObject)) {
                    ListChange listChange = createListFeatureChange(ChangeKind.REMOVE_LITERAL, i, iObject);

                    if (oldElements instanceof BinaryTemporalConstraint)
                        addToChangeDescription(parent, featureOfElement, listChange, changeDescription2);
                    else
                        addToChangeDescription(parent, featureOfElement, listChange, changeDescription1);

                }
            }
        }
    }
}
项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
/** For completion. To ensure a proper FeatureChange use <i>createFeatureChange()</i> methods.
 * @param target
 * @param feature
 * @param indexToRemove
 * @return
 */
public static FeatureChange createRemoveFromListFeatureChange(EObject target, EStructuralFeature feature, int indexToRemove) {
    Object value = target.eGet(feature);
    FeatureChange fc = null;
    if(value instanceof List) {
        if ((((List) value).size() - 1) < indexToRemove)
            return null;

        fc = factory.createFeatureChange(feature, value, false);
        EObject object = (EObject) ((List) value).get(indexToRemove);
        ListChange listChange = createListFeatureChange(ChangeKind.REMOVE_LITERAL, indexToRemove, object);
        fc.getListChanges().add(listChange);
    }

    return fc;
}
项目:Vitruv    文件:ChangeDescriptionPrinter.java   
protected static void processFeatureChange(EObject affectedObj, FeatureChange fc, String prefix) {

    System.err.println(prefix + "Feature change on feature " + fc.getFeatureName());
    System.err.println("\t  Target value: " + fc.getValue());
    System.err.println("\tRollback value: " + affectedObj.eGet(fc.getFeature()));
    for (ListChange lc : fc.getListChanges()) {
        if (lc.getKind() == ChangeKind.ADD_LITERAL) {
            System.err.println(prefix + "\t - Adding Children: " + lc.getValues());
        }
        else if (lc.getKind() == ChangeKind.REMOVE_LITERAL) {
            System.err.println(prefix + "\t - Deleting Children: " + lc.getValues());
        }
    }
}
项目:OpenSPIFe    文件:PatchBuilderFeatureChange.java   
protected ListChange createAddListChange(EStructuralFeature feature, Object newObject, int index) {
    if (index < 0 || index > aggregatingSize) {
        throw new ArrayIndexOutOfBoundsException(index);
    }
    ListChange listChange = createListChange(ChangeKind.ADD_LITERAL, index);
    listChange.setFeature(feature);
    if (feature instanceof EAttribute)  {
        listChange.getValues().add(newObject);
    } else {
        listChange.getReferenceValues().add((EObject) newObject);
    }
    aggregatingSize++;
    getListChanges().add(listChange);
    return listChange;
}
项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
@Override
void execute() {            
    ListChange listChange = createListFeatureChange(ChangeKind.REMOVE_LITERAL, position, (EObject)oldElement);

    if (oldElement instanceof BinaryTemporalConstraint)
        addToChangeDescription(parent, featureOfElement, listChange, changeDescription2);
    else
        addToChangeDescription(parent, featureOfElement, listChange, changeDescription1);
}
项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
/** This method creates a ListChange with the proper ChangeKind, index and referenced object.
 * 
 * @param kind - ChangeKind (ADD or REMOVE)
 * @param index - where the change is going to happen
 * @param object - object to ADD or REMOVE
 * @return ListChange
 */
public static ListChange createListFeatureChange(ChangeKind kind, int index, EObject object) {
    ListChange listChange = factory.createListChange();
    listChange.setKind(kind);
    listChange.getReferenceValues().add(object);
    listChange.setIndex(index); 
    return listChange;
}
项目:OpenSPIFe    文件:SPIFePlanIntegrationOperation.java   
/** For completion. To ensure a proper FeatureChange use <i>createFeatureChange()</i> methods.
 * @param target
 * @param feature
 * @param objectToAdd
 * @param whereToAdd
 * @return
 */
public static FeatureChange createAddToListFeatureChange(EObject target, EStructuralFeature feature, EObject objectToAdd, int whereToAdd) {
    Object value = target.eGet(feature);
    FeatureChange fc = null;
    if(value instanceof List) {
        if ((((List) value).size() - 1) < whereToAdd)
            whereToAdd = ((List) value).size();

        fc = factory.createFeatureChange(feature, value, true);
        ListChange listChange = createListFeatureChange(ChangeKind.ADD_LITERAL, whereToAdd, objectToAdd);
        fc.getListChanges().add(listChange);
    }

    return fc;
}
项目:OpenSPIFe    文件:PatchBuilderFeatureChange.java   
protected ListChange createRemoveListChange(int index) {
    ListChange listChange = createListChange(ChangeKind.REMOVE_LITERAL, index);
    getListChanges().add(listChange);
    aggregatingSize--;
    return listChange;
}
项目:OpenSPIFe    文件:PatchBuilderFeatureChange.java   
protected ListChange createMoveListChange(int index, int toIndex) {
    ListChange listChange = createListChange(ChangeKind.MOVE_LITERAL, index);
    listChange.setMoveToIndex(toIndex);
    getListChanges().add(listChange);
    return listChange;
}
项目:OpenSPIFe    文件:PatchBuilderFeatureChange.java   
protected static ListChange createListChange(ChangeKind kind, int index) {
    ListChange listChange = ChangeFactory.eINSTANCE.createListChange();
    listChange.setKind(kind);
    listChange.setIndex(index);
    return listChange;
}