[Bug 568169] - [CDO] Fix Internationalization preference model location
computation when Papyrus model is stored in CDO

Change-Id: I7906db989bb4003cf4f1d7aac0133ec7487aba61
Signed-off-by: Sebastien Revol <sebastien.revol@cea.fr>
diff --git a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
index 46e482c..ee66e25 100755
--- a/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
+++ b/cdo/bundles/org.eclipse.papyrus.cdo.core/plugin.xml
@@ -100,4 +100,11 @@
             scheme="cdo.checkout">
       </sashModelProvider>
    </extension>
+   <extension
+         point="org.eclipse.papyrus.infra.internationalization.internationalizationPreferenceModelProvider">
+      <internationalizationPreferenceModelProvider
+            class="org.eclipse.papyrus.cdo.internal.core.resource.CDOInternationalizationPreferenceModelProvider"
+            scheme="cdo.checkout">
+      </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
index 7f26802..58ce298 100644
--- 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
@@ -15,25 +15,26 @@
 
 package org.eclipse.papyrus.cdo.internal.core.resource;
 
+import org.eclipse.core.runtime.Assert;
 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 static final String CDO_LOCAL_PREFERENCEMODEL_URI_PREFIX = "/cdo.checkout/";//$NON-NLS-1$
 
 	public CDOInternationalizationPreferenceModelProvider() {
 		super();
 	}
 
 	/**
+	 * This method is computing the URI for the case when the location of the internationalization
+	 * preference information is located in a local "hidden" directory. (~/.metadata/etc...")
+	 * In the case where the Papyrus model is an CDO resource, we provide a new mechanism to compute a local URI.
+	 * 
 	 * @see org.eclipse.papyrus.infra.internationalization.modelresource.IInternationalizationPreferenceModelProvider#getInternationalizationPreferenceModelURI(org.eclipse.emf.common.util.URI)
 	 *
 	 * @param userModelURI
@@ -41,31 +42,16 @@
 	 */
 	@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);
+		Assert.isNotNull(userModelURI);
+		final IPath internationalizationWorkspaceLocation = org.eclipse.papyrus.infra.internationalization.Activator.getDefault().getStateLocation();
+		final URI modelURI = userModelURI.trimFileExtension();
+		URI internationalizationModelURI = null;
+		internationalizationModelURI = URI.createFileURI(internationalizationWorkspaceLocation.append(CDO_LOCAL_PREFERENCEMODEL_URI_PREFIX + modelURI.devicePath()).toPortableString());
+		internationalizationModelURI = internationalizationModelURI.appendFileExtension(InternationalizationPreferenceModel.INTERNATIONALIZATION_PREFERENCE_FILE_EXTENSION);
+
+		return internationalizationModelURI;
 	}
 
-	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;
-	}
 
 }