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;
+ }
+
+}