Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: a87016d751d6674a9dec14c8269199a8df42cec1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
/*
 * Copyright (c) 2014, 2015 Eike Stepper (Loehne, Germany) 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:
 *    Eike Stepper - initial API and implementation
 */
package org.eclipse.oomph.setup.doc.concepts;

import org.eclipse.oomph.setup.ProductVersion;
import org.eclipse.oomph.setup.doc.concepts.DocScope.DocProductCatalog.DocProduct.DocVersion;
import org.eclipse.oomph.setup.doc.concepts.DocScope.DocProjectCatalog.DocProject.DocStream;
import org.eclipse.oomph.setup.doc.concepts.DocSetupResource.DocIndexResource.ProductCatalogResource;
import org.eclipse.oomph.setup.doc.concepts.DocSetupResource.DocIndexResource.ProjectCatalogResource;
import org.eclipse.oomph.setup.doc.concepts.DocSetupResource.DocIndexResource.ProjectCatalogResource.ProjectResource;
import org.eclipse.oomph.setup.doc.concepts.DocTask.DocP2Task;
import org.eclipse.oomph.setup.doc.concepts.DocTaskComposition.ScopeList;
import org.eclipse.oomph.setup.doc.user.wizard.DocImportWizard;
import org.eclipse.oomph.setup.doc.user.wizard.DocInstallWizard;
import org.eclipse.oomph.setup.doc.user.wizard.DocProductPage;
import org.eclipse.oomph.setup.doc.user.wizard.DocProjectPage;

/**
 * Scopes
 * <p>
 * A {@link org.eclipse.oomph.setup.Scope scope} is the course-grained unit for grouping related {@linkplain DocTask tasks}.
 * Scope are hierarchically structured and tasks are {@linkplain ScopeList#scopeList gathered} from them based on this hierarchical structure.
 * They are stored in {@link DocSetupResource resources}.
 *
 * @number 200
 */
public class DocScope
{
  /**
   * Scopes
   * <p>
   * Each scope has the following properties:
   * <ul>
   */
  public static String properties;

  /**
   * <li>
   * A required {@link org.eclipse.oomph.setup.Scope#getName() attribute}
   * which should be a lower case name,
   * i.e., like a single component of a qualified Java package name.
   * The hierarchical {@link org.eclipse.oomph.setup.Scope#getParentScope() containment} structure of scopes
   * induces a {@link org.eclipse.oomph.setup.Scope#getQualifiedName() qualified} name attribute,
   * based on the '.' separated names of the scopes,
   * hence the recommendation to use a lower case scope name.
   * </li>
   */
  public static String name;

  /**
   * <li>
   * An optional {@link org.eclipse.oomph.setup.Scope#getLabel() label} attribute,
   * which should be a title case name that may include spaces and punctuation.
   * </li>
   */
  public static String label;

  /**
   * <li>
   * An optional {@link org.eclipse.oomph.setup.Scope#getDescription() description} attribute
   * which description can be arbitrary descriptive log.
   * </li>
   */
  public static String description;

  /**
   * </ul>
   * </p>
   */
  public static String footer;

  /**
   * Product Catalogs
   * <p>
   * A {@link org.eclipse.oomph.setup.ProductCatalog product catalog} is a {@link org.eclipse.oomph.setup.ProductCatalog#getProducts() container} for {@linkplain DocProduct products}
   * as well as a {@link org.eclipse.oomph.setup.ProductCatalog#getSetupTasks() container} for all the {@link DocTask tasks} to install any of those products.
   */
  public static class DocProductCatalog
  {
    /**
     * For example,
     * there is an Eclipse product catalog
     * generated for all the packages available on <a href="https://www.eclipse.org/downloads/">Eclipse's download page</a>.
     * In other words, you can use Oomph to install any version of any package that you'd normally download and unzip from Eclipse.org.
     */
    public static String example;

    /**
     * In the case of a product that has Oomph installed,
     * but wasn't actually {@linkplain DocInstallWizard installed} by Oomph,
     * there always exists a synthetic so called self product catalog
     * that contains the {@link DocProduct#self self product}.
     */
    public static String self;

    /**
     * It is stored in a {@link ProductCatalogResource project catalog resource}.
     * </p>
     */
    public static String footer;

    /**
     * Products
     * <p>
     * A {@link org.eclipse.oomph.setup.Product product} is a {@link org.eclipse.oomph.setup.Product#getVersions() container} for product {@linkplain DocVersion versions}
     * as well as a {@link org.eclipse.oomph.setup.Product#getSetupTasks() container} for all the {@link DocTask tasks} to install any of those product versions.
     */
    public static class DocProduct
    {
      /**
       * For example,
       * there is a product in the {@link DocProductCatalog#example Eclipse} product catalog
       * for each Eclipse <a href="http://www.eclipse.org/downloads/packages/release/Luna/R">package</a>.
       */
      public static String example;

      /**
       * In the case of a product that has Oomph installed,
       * but wasn't actually {@linkplain DocInstallWizard installed} by Oomph,
       * there always exists a synthetic so called self product in the {@link DocProductCatalog#self self product catalog}
       * that contains a {@link DocVersion#self self product version}.
       */
      public static String self;

      /**
       * </p>
       */
      public static String footer;

      /**
       * Product Versions
       * <p>
       * A product {@link ProductVersion version} is a {@link ProductVersion#getSetupTasks() container} for all the {@link DocTask tasks} to install a specific version of a product.
       */
      public static class DocVersion
      {
        /**
         * For example,
         * there is a product version in the {@link DocProduct#example Eclipse Standard product} in the {@link DocProductCatalog#example Eclipse product catalog}
         * for installing the Eclipse Standard <a href="https://www.eclipse.org/downloads/packages/eclipse-standard-44/lunar">Luna</a> package.
         * </p>
         */
        public static String example;

        /**
         * In the case of a product that has Oomph installed
         * but wasn't actually {@linkplain DocInstallWizard installed} by Oomph,
         * there always exists a synthetic so called product version in the {@link DocProduct#self self product} int the {@link DocProductCatalog#self self product catalog}.
         * It captures,
         * via a {@link DocP2Task p2 task},
         * all the information about the installable units that of that product installation
         * as well as all the update p2 sites that are available for updating those units within that product installation.
         * </p>
         */
        public static String self;
      }
    }
  }

  /**
   * Project Catalogs
   * <p>
   * A {@link org.eclipse.oomph.setup.Project project catalog} is a {@link org.eclipse.oomph.setup.ProjectCatalog#getProjects() container} for {@linkplain DocProject projects}
   * as well as a {@link org.eclipse.oomph.setup.ProjectCatalog#getSetupTasks() container} for both
   * the tasks to provision a workspace with any of those projects
   * and the tasks to install the tools needed to work with any of those projects.
   * For example,
   * there is an Eclipse project catalog for provisioning various projects hosted at Eclipse.org.
   * It is stored in a {@link ProjectCatalogResource project catalog resource}.
   * </p>
   */
  public static class DocProjectCatalog
  {
    /**
     * Projects
     * <p>
     * A {@link org.eclipse.oomph.setup.Project project} is a {@link org.eclipse.oomph.setup.Project#getSetupTasks() container} for {@linkplain DocStream streams}
     * as well as a {@link org.eclipse.oomph.setup.Project#getSetupTasks() container} for both
     * the tasks to provision a workspace with any of those streams
     * and the tasks to install the tools needed to work with any of those streams.
     * For example,
     * there is a project in the Eclipse project catalog for provisioning the Oomph project itself.
     * Projects can optionally {contain nested projects.
     * It is stored in a {@link ProjectResource project resource}.
     * </p>
     */
    public static class DocProject
    {
      /**
       * Projects can optionally contain {@link org.eclipse.oomph.setup.Project#getProjects() nested} projects
       * which may be stored in a separate {@link ProjectResource project resource} or in the same resource as the {@link org.eclipse.oomph.setup.Project#getParentProject() containing} project.
       * </p>
       */
      public static String nested;

      /**
       * Streams
       * <p>
       * A {@link org.eclipse.oomph.setup.Stream stream} is a {@link org.eclipse.oomph.setup.Stream#getSetupTasks() container} for both
       * the tasks to provision a workspace with for that particular stream
       * and the tasks to install the tools needed to work with that particular stream.
       * For example,
       * there is a stream in the Oomph project in the Eclipse project catalog
       * for provisioning the source code of the Git <a href="http://git.eclipse.org/c/oomph/org.eclipse.oomph.git/">master</a> branch of the Oomph project.
       */
      public static class DocStream
      {
      }
    }
  }

  /**
   * Installations
   * <p>
   * An {@link org.eclipse.oomph.setup.Installation installation} is a {@link org.eclipse.oomph.setup.Installation#getSetupTasks() container} for the tasks to provision a specific installed Eclipse product.
   * Its primary function,
   * however,
   * is that it specifies a reference to a product {@linkplain DocVersion version}.
   * The tasks {@linkplain DocTaskComposition gathered} for that product version are {@link DocTaskExecution performed} to that installed product.
   * The {@linkplain DocInstallWizard installer wizard} creates an instance based on the selected product version on the {@link DocProductPage product page}.
   * Even if the product installation hasn't been installed by Oomph,
   * when Oomph is present,
   * an installation instance is automatically created
   * to refer to the synthetic {@link DocVersion#self self} product version.
   * </p>
   */
  public static class DocInstallation
  {
  }

  /**
   * Workspaces
   * <p>
   * A {@link org.eclipse.oomph.setup.Workspace workspace} is a {@link org.eclipse.oomph.setup.Workspace#getSetupTasks() container} for the tasks to provision a specific Eclipse workspace.
   * Its primary function is that it specifies zero or more references to project {@linkplain DocStream streams}.
   * The tasks {@linkplain DocTaskComposition gathered} for each of those project streams are {@link DocTaskExecution performed} for that workspace
   * as well as for the installed product used to open that workspace.
   * The {@linkplain DocInstallWizard installer wizard} creates an instance based on the selected project streams on the {@link DocProjectPage project page}.
   * The {@linkplain DocInstallWizard installer} and {@linkplain DocImportWizard project} wizards
   * </p>
   */
  public static class DocWorkspace
  {
  }

  /**
   * Users
   * <p>
   * A {@link org.eclipse.oomph.setup.User user} is a {@link org.eclipse.oomph.setup.User#getSetupTasks() container} for the tasks to provision
   * every installed Eclipse product and every opened workspace ever used by the end-user.
   * It provides an opportunity to customize all aspects of a user's experience with all their Eclipse products and workspaces.
   * It also provides support for the following:
   * <ul>
   * <li>
   * Recording the {@link org.eclipse.oomph.setup.User#getAcceptedLicenses() accepted license} of each of the tools automatically installed tools,
   * i.e., once a license is accepted,
   * it can be recorded to avoid any future prompts involving that particular license.
   * </li>
   * Recording the {@link org.eclipse.oomph.setup.User#getUnsignedPolicy() policy} with regard to handling of unsigned content,
   * i.e., once unsigned content is accepted,
   * that acceptance can be recorded to avoid any future prompts involving unsigned content.
   * </li>
   * <li>
   * Recording configuration options, so called {@link org.eclipse.oomph.setup.User#getAttributeRules() attribute rules},
   * that tailor where and how repositories, workspaces, and installations are physically stored.
   * </li>
   * </ul>
   */
  public static class DocUser
  {
  }
}

Back to the top