/* license-start * * Copyright (C) 2008 - 2013 Crispico, <http://www.crispico.com/>. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 3. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details, at <http://www.gnu.org/licenses/>. * * Contributors: * Crispico - Initial API and implementation * * license-end */ package com.crispico.flower.mp.codesync.base.action; import com.crispico.flower.mp.codesync.base.Diff; import com.crispico.flower.mp.codesync.base.IModelAdapter; import com.crispico.flower.mp.codesync.base.Match; /** * */ public class DiffActionRevert extends DiffAction { @Override public ActionResult execute(Match match, int diffIndex) { Diff diff = match.getDiffs().get(diffIndex); IModelAdapter ancestorModelAdapter = match.getEditableResource().getModelAdapterFactorySet().getAncestorFactory().getModelAdapter(match.getAncestor()); IModelAdapter leftModelAdapter = null; if (diff.isLeftModified()) leftModelAdapter = match.getEditableResource().getModelAdapterFactorySet().getLeftFactory().getModelAdapter(match.getLeft()); IModelAdapter rightModelAdapter = null; if (diff.isRightModified()) rightModelAdapter = match.getEditableResource().getModelAdapterFactorySet().getRightFactory().getModelAdapter(match.getRight()); Object value = ancestorModelAdapter.getValueFeatureValue(match.getAncestor(), diff.getFeature(), null); if (diff.isLeftModified()) { leftModelAdapter.setValueFeatureValue(match.getLeft(), diff.getFeature(), value); } if (diff.isRightModified()) { rightModelAdapter.setValueFeatureValue(match.getRight(), diff.getFeature(), value); } match.getDiffs().remove(diffIndex); return new ActionResult(false, false, false); } }