/***************************************************************************** * Copyright (c) 2010 ATOS ORIGIN. * * 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: * Tristan Faure (ATOS ORIGIN INTEGRATION) tristan.faure@atosorigin.com - Initial API and implementation *****************************************************************************/ package org.eclipse.papyrus.infra.services.resourceloading; import java.util.HashSet; import java.util.List; import java.util.Set; import org.eclipse.emf.common.notify.Adapter; import org.eclipse.emf.common.util.URI; import org.eclipse.papyrus.infra.core.resource.ModelSet; import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModel; import org.eclipse.papyrus.infra.core.resource.sasheditor.SashModelUtils; import org.eclipse.papyrus.infra.services.controlmode.history.HistoryModel; import org.eclipse.papyrus.infra.services.controlmode.history.utils.HistoryUtils; import org.eclipse.papyrus.infra.services.controlmode.mm.history.ControledResource; /** * The Class HistoryRoutingUtils. */ public class HistoryRoutingUtils { /** * Retrieves all the URIs of the controlled resources of the initial resource uri * * @param model * , the history model * @param initialURI * , the uri to check * @return */ public static Set<String> getAllControledURIs(ModelSet set, HistoryModel model, URI initialURI, boolean loadCorrespondantDI) { Set<String> result = new HashSet<String>(); String path = HistoryUtils.getURIFullPath(SashModelUtils.getInitialURI(set)).toString(); if(model != null && initialURI != null) { ControledResourceAdapter adapter = getControledResourceAdapter(set); set.getResource(URI.createURI(path.concat(initialURI.trimFragment().trimFileExtension().appendFileExtension(SashModel.MODEL_FILE_EXTENSION).toString())), loadCorrespondantDI); List<ControledResource> elements = adapter.getControledResource(initialURI.toString()); for(ControledResource c : elements) { for(ControledResource child : c.getChildren()) { URI childURI = URI.createURI(child.getResourceURL()); result.add(childURI.toString()); result.addAll(getAllControledURIs(set, model, childURI, loadCorrespondantDI)); } } } return result; } /** * get the controled resource adapter from the given {@link ModelSet} if it is not found it is installed * * @param set * @return */ public static ControledResourceAdapter getControledResourceAdapter(ModelSet set) { ControledResourceAdapter adapter = null; for(Adapter a : set.eAdapters()) { if(a instanceof ControledResourceAdapter) { adapter = (ControledResourceAdapter)a; } } if(adapter == null) { adapter = new ControledResourceAdapter(set); } return adapter; } }