Add model provider for Internationalization Preference in the context of CDO Change-Id: Ib780de53b8208da9a31e2a485f81324bd1d40644
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF b/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF index 3e044af..c1322ed 100755 --- a/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF +++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/META-INF/MANIFEST.MF
@@ -23,7 +23,8 @@ org.eclipse.papyrus.infra.services.localizer;bundle-version="1.2.0", org.eclipse.net4j;bundle-version="[4.3.0,5.0.0)", org.eclipse.emf.cdo.admin;bundle-version="[4.1.200,5.0.0)", - org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0" + org.eclipse.papyrus.infra.core.sashwindows.di;bundle-version="1.2.0", + org.eclipse.papyrus.infra.internationalization;bundle-version="[1.2.100,2.0.0)" Export-Package: org.eclipse.papyrus.cdo.core, org.eclipse.papyrus.cdo.core.admin, org.eclipse.papyrus.cdo.core.exporter,
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml index a84c144..1bf33a7 100755 --- a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml +++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
@@ -100,5 +100,11 @@ scheme="cdo.checkout"> </sashModelProvider> </extension> + <extension + point="org.eclipse.papyrus.infra.internationalization.internationalizationPreferenceModelProvider"> + <internationalizationPreferenceModelProvider + class="org.eclipse.papyrus.cdo.core.InternationalizationPreferenceModelProvider1"> + </internationalizationPreferenceModelProvider> + </extension> </plugin>
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java new file mode 100644 index 0000000..7f26802 --- /dev/null +++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/src/org/eclipse/papyrus/cdo/internal/core/resource/CDOInternationalizationPreferenceModelProvider.java
@@ -0,0 +1,71 @@ +/***************************************************************************** + * Copyright (c) 2020 CEA LIST and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License 2.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-2.0/ + * + * SPDX-License-Identifier: EPL-2.0 + * + * Contributors: + * CEA LIST - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.cdo.internal.core.resource; + +import org.eclipse.core.runtime.IPath; +import org.eclipse.emf.cdo.explorer.CDOExplorerUtil; +import org.eclipse.emf.cdo.explorer.checkouts.CDOCheckout; +import org.eclipse.emf.cdo.util.CDOURIUtil; +import org.eclipse.emf.common.util.URI; +import org.eclipse.papyrus.cdo.internal.core.Activator; +import org.eclipse.papyrus.infra.core.resource.ModelSet; +import org.eclipse.papyrus.infra.internationalization.modelresource.AbstractInternationalizationPreferenceModelProvider; +import org.eclipse.papyrus.infra.internationalization.modelresource.InternationalizationPreferenceModel; + + +public class CDOInternationalizationPreferenceModelProvider extends AbstractInternationalizationPreferenceModelProvider { + + + public CDOInternationalizationPreferenceModelProvider() { + super(); + } + + /** + * @see org.eclipse.papyrus.infra.internationalization.modelresource.IInternationalizationPreferenceModelProvider#getInternationalizationPreferenceModelURI(org.eclipse.emf.common.util.URI) + * + * @param userModelURI + * @return + */ + @Override + public URI getInternationalizationPreferenceModelURI(URI userModelURI) { + URI uriWithoutExtension = userModelURI.trimFileExtension(); + IPath stateLocation = indexFolder.append(CDOURIUtil.extractResourcePath(uriWithoutExtension)); + return URI.createFileURI(stateLocation.toString()).appendFileExtension(InternationalizationPreferenceModel.INTERNATIONALIZATION_PREFERENCE_FILE_EXTENSION); + } + + private static final IPath INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT = Activator.getDefault().getStateLocation().append("internationalizationidx"); //$NON-NLS-1$ + + private IPath indexFolder; + + @Override + public void initialize(ModelSet modelSet) { + super.initialize(modelSet); + + CDOCheckout checkout = CDOExplorerUtil.getCheckout(modelSet); + if (checkout != null) { + initialize(checkout); + } else { + // Model probably is in the workspace if null + indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT; + } + } + + public CDOInternationalizationPreferenceModelProvider initialize(CDOCheckout checkout) { + indexFolder = INTERNATIONALIZATION_PREFERENCE_MODEL_STORAGE_ROOT.append(checkout.getView().getSession().getRepositoryInfo().getUUID()); + return this; + } + +}