blob: 8ac2f3d8ca6ad5e1b947b4b0da1d1460eb3c7bcc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 THALES GLOBAL SERVICES.
* 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
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.sirius.business.internal.migration;
import java.util.List;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.sirius.business.api.metamodel.helper.FontFormatHelper;
import org.eclipse.sirius.business.api.migration.AbstractMigrationParticipant;
import org.eclipse.sirius.viewpoint.FontFormat;
import org.eclipse.sirius.viewpoint.ViewpointPackage;
import org.osgi.framework.Version;
import com.google.common.collect.Lists;
/**
* Remove the old font format attribute values used before the multi valued
* label font format attribute.
*
* @author mbats
*/
public class FontFormatMigrationParticipant extends AbstractMigrationParticipant {
private static final Version MIGRATION_VERSION = new Version("10.0.0.201505222000");
private static final String ITALIC = "italic";
private static final String BOLD = "bold";
@Override
public Version getMigrationVersion() {
return MIGRATION_VERSION;
}
@Override
public Object getValue(EObject object, EStructuralFeature feature, Object value, String loadedVersion) {
List<FontFormat> labelFormat = Lists.newArrayList();
// All features typed by FontFormat have been modified: the cardinality
// has been changed from [0..1] to [0..n], the value, which was a
// FontFormat, now has to be a list of FontFormat.
// The previous "normal" value correspond to an empty list.
if (feature.getEType() == ViewpointPackage.Literals.FONT_FORMAT && value instanceof String) {
String oldFontFormat = (String) value;
if (oldFontFormat.contains(ITALIC)) {
FontFormatHelper.setFontFormat(labelFormat, FontFormat.ITALIC_LITERAL);
}
// The previous "bold_italic" value is treated by the two
// "if contains" blocks.
if (oldFontFormat.contains(BOLD)) {
FontFormatHelper.setFontFormat(labelFormat, FontFormat.BOLD_LITERAL);
}
}
if (labelFormat.isEmpty()) {
return null;
}
return labelFormat.toString().replaceAll(",", "").replace("[", "").replace("]", "");
}
}