| /******************************************************************************* |
| * Copyright (c) 2018 SSI Schaefer IT Solutions GmbH and others. |
| * 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: |
| * SSI Schaefer IT Solutions GmbH |
| *******************************************************************************/ |
| package org.eclipse.tea.library.build.lcdsl.tasks.p2; |
| |
| import org.eclipse.tea.core.TaskExecutionContext; |
| import org.eclipse.tea.library.build.model.PlatformTriple; |
| import org.eclipse.tea.library.build.tasks.jar.TaskRunFeaturePluginJarExport; |
| import org.eclipse.tea.library.build.tasks.p2.TaskGenPropertiesFiles; |
| import org.eclipse.tea.library.build.tasks.p2.TaskPublishProductUpdateSite; |
| import org.eclipse.tea.library.build.tasks.p2.TaskRunProductExport; |
| |
| /** |
| * Defines how to build a product and its update site. Every WAMAS 5 product |
| * needs a separate sub-class. |
| */ |
| public abstract class AbstractProductBuild { |
| |
| private final String featureBundle; |
| private final String productBundle; |
| private final String productDefinition; |
| private final boolean needProperties; |
| |
| /** |
| * Creates the product build. |
| * |
| * @param featureBundle |
| * name of the feature bundle |
| * @param productBundle |
| * name of the product bundle |
| * @param productDefinition |
| * name of the product definition file |
| * @param needProperties |
| * {@code true} if special properties should be updated (see |
| * {@link TaskGenPropertiesFiles}) |
| */ |
| protected AbstractProductBuild(String featureBundle, String productBundle, String productDefinition, |
| boolean needProperties) { |
| this.featureBundle = featureBundle; |
| this.productBundle = productBundle; |
| this.productDefinition = productDefinition; |
| this.needProperties = needProperties; |
| } |
| |
| public TaskGenFeatureFromLcDsl createTaskGenFeatureXml(boolean errorIfNotExist) { |
| return new TaskGenFeatureFromLcDsl(featureBundle, errorIfNotExist); |
| } |
| |
| protected TaskPublishProductUpdateSite createTaskPublishProductUpdateSite(String siteName) { |
| return new TaskPublishProductUpdateSite(siteName, productBundle, productDefinition, true); |
| } |
| |
| public void addUpdateSiteTasks(TaskExecutionContext c, String[] updateSites) { |
| c.addTask(createTaskGenFeatureXml(true)); |
| if (needProperties) { |
| c.addTask(new TaskGenPropertiesFiles(featureBundle)); |
| } |
| c.addTask(new TaskRunFeaturePluginJarExport(featureBundle)); |
| for (String siteName : updateSites) { |
| c.addTask(createTaskPublishProductUpdateSite(siteName)); |
| } |
| } |
| |
| public void addProductTasks(TaskExecutionContext c, String updateSite) { |
| addProductTasks(c, updateSite, true); |
| } |
| |
| public TaskRunProductExport addProductTasks(TaskExecutionContext c, String updateSite, boolean zip) { |
| final TaskRunProductExport task = new TaskRunProductExport(updateSite, productBundle, productDefinition, zip); |
| task.setPlatformsToBuild(getPlatformsToBuild()); |
| c.addTask(task); |
| return task; |
| } |
| |
| public PlatformTriple[] getPlatformsToBuild() { |
| return new PlatformTriple[] { PlatformTriple.WIN64, PlatformTriple.LINUX64 }; |
| } |
| |
| /** |
| * Returns the short name of this product build definition. |
| */ |
| public String getName() { |
| String name = getClass().getSimpleName(); |
| if (name.isEmpty()) { |
| // we have an inner class |
| name = getClass().getName(); |
| } |
| return name; |
| } |
| |
| public String getFeatureBundleName() { |
| return featureBundle; |
| } |
| |
| public String getProductBundleName() { |
| return productBundle; |
| } |
| |
| public String getOfficialName() { |
| return getClass().getSimpleName(); |
| } |
| |
| public String getDescription() { |
| return getOfficialName(); |
| } |
| |
| } |