blob: f3f71fe301332fb5d9b0c476b451b54d50a852fe [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.framework.ui.skynet.templates;
import java.util.List;
import org.eclipse.osee.framework.db.connection.exception.OseeCoreException;
import org.eclipse.osee.framework.plugin.core.util.ExtensionDefinedObjects;
import org.eclipse.osee.framework.skynet.core.artifact.Artifact;
import org.eclipse.osee.framework.ui.skynet.render.IRenderer;
/**
* @author Andrew M. Finkbeiner
*/
public class TemplateManager {
private static final String EXTENSION_ID = "org.eclipse.osee.framework.ui.skynet.TemplateProvider";
private static final String EXTENSION_ELEMENT = "TemplateProvider";
private static final String EXTENSION_CLASSNAME = "classname";
private final List<ITemplateProvider> templateProviders;
private static final TemplateManager instance = new TemplateManager();
private TemplateManager() {
ExtensionDefinedObjects<ITemplateProvider> extensionDefinedObjects =
new ExtensionDefinedObjects<ITemplateProvider>(EXTENSION_ID, EXTENSION_ELEMENT, EXTENSION_CLASSNAME);
templateProviders = extensionDefinedObjects.getObjects();
}
public static Artifact getTemplate(IRenderer renderer, Artifact artifact, String presentationType, String option) throws OseeCoreException {
ITemplateProvider bestTemplateProvider = null;
int highestRating = 0;
for (ITemplateProvider templateProvider : instance.templateProviders) {
int rating = templateProvider.getApplicabilityRating(renderer, artifact, presentationType, option);
if (rating > highestRating) {
bestTemplateProvider = templateProvider;
highestRating = rating;
}
}
return bestTemplateProvider.getTemplate(renderer, artifact, presentationType, option);
}
public static List<ITemplateProvider> getTemplateProviders() {
return instance.templateProviders;
}
}