Bug 565945: update license headers, multiple fixes to dependencies
Change-Id: I5e4d4aed1f0d1ae8e1f4a069654cb5544b443d30
diff --git a/plugins/org.eclipse.skills.dependencies/META-INF/MANIFEST.MF b/plugins/org.eclipse.skills.dependencies/META-INF/MANIFEST.MF
index b92030d..e0af312 100644
--- a/plugins/org.eclipse.skills.dependencies/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.skills.dependencies/META-INF/MANIFEST.MF
@@ -16,4 +16,6 @@
org.eclipse.core.resources,
org.eclipse.debug.ui,
org.eclipse.e4.core.services,
- org.eclipse.osgi.services
+ org.eclipse.osgi.services,
+ org.eclipse.text
+Bundle-ActivationPolicy: lazy
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/BrokerEventDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/BrokerEventDependency.java
index 546a06a..865156b 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/BrokerEventDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/BrokerEventDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ConsolePatternDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ConsolePatternDependency.java
index 3224245..c7fc45d 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ConsolePatternDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ConsolePatternDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
@@ -11,54 +13,54 @@
package org.eclipse.skills.dependencies;
+import java.util.regex.Pattern;
+
+import org.eclipse.jface.text.DocumentEvent;
+import org.eclipse.jface.text.IDocumentListener;
import org.eclipse.skills.model.IDependencyWithAttributes;
import org.eclipse.skills.model.impl.MDependency;
import org.eclipse.ui.console.ConsolePlugin;
import org.eclipse.ui.console.IConsole;
import org.eclipse.ui.console.IConsoleListener;
-import org.eclipse.ui.console.IPatternMatchListener;
-import org.eclipse.ui.console.PatternMatchEvent;
import org.eclipse.ui.console.TextConsole;
-public class ConsolePatternDependency extends MDependency implements IDependencyWithAttributes, IConsoleListener, IPatternMatchListener {
+public class ConsolePatternDependency extends MDependency implements IDependencyWithAttributes, IConsoleListener, IDocumentListener {
- private String fOutputPattern;
+ private String fOutputPattern = "<none>";
@Override
public void setAttributes(String attributes) {
fOutputPattern = attributes;
}
+ public String getPattern() {
+ return fOutputPattern;
+ }
+
@Override
public void activate() {
ConsolePlugin.getDefault().getConsoleManager().addConsoleListener(this);
- for (final IConsole console : ConsolePlugin.getDefault().getConsoleManager().getConsoles()) {
- if (console instanceof TextConsole)
- ((TextConsole) console).addPatternMatchListener(this);
- }
+ consolesAdded(ConsolePlugin.getDefault().getConsoleManager().getConsoles());
}
@Override
public void deactivate() {
- ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this);
+ consolesRemoved(ConsolePlugin.getDefault().getConsoleManager().getConsoles());
- for (final IConsole console : ConsolePlugin.getDefault().getConsoleManager().getConsoles()) {
- if (console instanceof TextConsole)
- ((TextConsole) console).removePatternMatchListener(this);
- }
+ ConsolePlugin.getDefault().getConsoleManager().removeConsoleListener(this);
}
@Override
public String toString() {
- return "Console contains \"" + getPattern() + "\"";
+ return "Console contains \"" + fOutputPattern + "\"";
}
@Override
public void consolesAdded(IConsole[] consoles) {
for (final IConsole console : consoles) {
if (console instanceof TextConsole)
- ((TextConsole) console).addPatternMatchListener(this);
+ ((TextConsole) console).getDocument().addDocumentListener(this);
}
}
@@ -66,39 +68,22 @@
public void consolesRemoved(IConsole[] consoles) {
for (final IConsole console : consoles) {
if (console instanceof TextConsole)
- ((TextConsole) console).removePatternMatchListener(this);
+ ((TextConsole) console).getDocument().removeDocumentListener(this);
}
}
@Override
- public void matchFound(PatternMatchEvent event) {
- setFulfilled(true);
-
- deactivate();
- }
-
- @Override
- public String getPattern() {
- return fOutputPattern;
- }
-
- @Override
- public int getCompilerFlags() {
- return 0;
- }
-
- @Override
- public String getLineQualifier() {
- return null;
- }
-
- @Override
- public void connect(TextConsole console) {
+ public void documentAboutToBeChanged(DocumentEvent event) {
// nothing to do
}
@Override
- public void disconnect() {
- // nothing to do
+ public void documentChanged(DocumentEvent event) {
+ final Pattern pattern = Pattern.compile(getPattern(), Pattern.DOTALL | Pattern.MULTILINE);
+
+ if (pattern.matcher(event.getText()).find()) {
+ setFulfilled(true);
+ deactivate();
+ }
}
}
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/DebugEventDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/DebugEventDependency.java
index 8cc85ac..9f4d418 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/DebugEventDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/DebugEventDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/P2Dependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/P2Dependency.java
index a7f81e8..a95746c 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/P2Dependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/P2Dependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/PerspectiveDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/PerspectiveDependency.java
index 03f4cb1..7b1e66f 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/PerspectiveDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/PerspectiveDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ResourceExistsDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ResourceExistsDependency.java
index 2532233..c876e00 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ResourceExistsDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ResourceExistsDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ViewDependency.java b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ViewDependency.java
index ff650e7..94c1fd1 100644
--- a/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ViewDependency.java
+++ b/plugins/org.eclipse.skills.dependencies/src/org/eclipse/skills/dependencies/ViewDependency.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/plugin.properties b/plugins/org.eclipse.skills.ui.questeditor/plugin.properties
index 3ba7b30..89af73a 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/plugin.properties
+++ b/plugins/org.eclipse.skills.ui.questeditor/plugin.properties
Binary files differ
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/CompleteIncludedTasksDependencyItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/CompleteIncludedTasksDependencyItemProvider.java
index 4b9ba30..ec059d9 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/CompleteIncludedTasksDependencyItemProvider.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/CompleteIncludedTasksDependencyItemProvider.java
@@ -15,7 +15,7 @@
*
* @generated
*/
-public class CompleteIncludedTasksDependencyItemProvider extends DependencyItemProvider {
+public class CompleteIncludedTasksDependencyItemProvider extends UserDependencyItemProvider {
/**
* This constructs an instance from a factory and a notifier.
* <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillDependencyItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillDependencyItemProvider.java
index 8569f1a..3a59aed 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillDependencyItemProvider.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/SkillDependencyItemProvider.java
@@ -19,7 +19,7 @@
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
-public class SkillDependencyItemProvider extends DependencyItemProvider {
+public class SkillDependencyItemProvider extends UserDependencyItemProvider {
/**
* This constructs an instance from a factory and a notifier.
* <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/TaskDependencyItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/TaskDependencyItemProvider.java
index 8e9a1d3..9bfe131 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/TaskDependencyItemProvider.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/TaskDependencyItemProvider.java
@@ -19,7 +19,7 @@
* <!-- begin-user-doc --> <!-- end-user-doc -->
* @generated
*/
-public class TaskDependencyItemProvider extends DependencyItemProvider {
+public class TaskDependencyItemProvider extends UserDependencyItemProvider {
/**
* This constructs an instance from a factory and a notifier.
* <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/UserDependencyItemProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/UserDependencyItemProvider.java
new file mode 100644
index 0000000..ab28663
--- /dev/null
+++ b/plugins/org.eclipse.skills.ui.questeditor/src-gen/org/eclipse/skills/model/provider/UserDependencyItemProvider.java
@@ -0,0 +1,111 @@
+/**
+ */
+package org.eclipse.skills.model.provider;
+
+
+import java.util.Collection;
+import java.util.List;
+
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
+import org.eclipse.emf.edit.provider.IItemPropertyDescriptor;
+
+import org.eclipse.skills.model.ISkillsPackage;
+import org.eclipse.skills.model.IUserDependency;
+
+/**
+ * This is the item provider adapter for a {@link org.eclipse.skills.model.IUserDependency} object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class UserDependencyItemProvider extends DependencyItemProvider {
+ /**
+ * This constructs an instance from a factory and a notifier.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ public UserDependencyItemProvider(AdapterFactory adapterFactory) {
+ super(adapterFactory);
+ }
+
+ /**
+ * This returns the property descriptors for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public List<IItemPropertyDescriptor> getPropertyDescriptors(Object object) {
+ if (itemPropertyDescriptors == null) {
+ super.getPropertyDescriptors(object);
+
+ addUserPropertyDescriptor(object);
+ }
+ return itemPropertyDescriptors;
+ }
+
+ /**
+ * This adds a property descriptor for the User feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ protected void addUserPropertyDescriptor(Object object) {
+ itemPropertyDescriptors.add
+ (createItemPropertyDescriptor
+ (((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(),
+ getResourceLocator(),
+ getString("_UI_UserDependency_user_feature"),
+ getString("_UI_PropertyDescriptor_description", "_UI_UserDependency_user_feature", "_UI_UserDependency_type"),
+ ISkillsPackage.Literals.USER_DEPENDENCY__USER,
+ true,
+ false,
+ true,
+ null,
+ null,
+ null));
+ }
+
+ /**
+ * This returns the label text for the adapted class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public String getText(Object object) {
+ IUserDependency userDependency = (IUserDependency)object;
+ return getString("_UI_UserDependency_type") + " " + userDependency.isFulfilled();
+ }
+
+
+ /**
+ * This handles model notifications by calling {@link #updateChildren} to update any cached
+ * children and by creating a viewer notification, which it passes to {@link #fireNotifyChanged}.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public void notifyChanged(Notification notification) {
+ updateChildren(notification);
+ super.notifyChanged(notification);
+ }
+
+ /**
+ * This adds {@link org.eclipse.emf.edit.command.CommandParameter}s describing the children
+ * that can be created under this object.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ protected void collectNewChildDescriptors(Collection<Object> newChildDescriptors, Object object) {
+ super.collectNewChildDescriptors(newChildDescriptors, object);
+ }
+
+}
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/ReplaceElementAction.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/ReplaceElementAction.java
index 7026fba..e535f1b 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/ReplaceElementAction.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/ReplaceElementAction.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/WrapElementAction.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/WrapElementAction.java
index 9ac2a8c..358ae0e 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/WrapElementAction.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/actions/WrapElementAction.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/editor/QuestEditor.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/editor/QuestEditor.java
index 563e484..af2b8cb 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/editor/QuestEditor.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/editor/QuestEditor.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
@@ -14,13 +16,4 @@
import org.eclipse.emfforms.spi.editor.GenericEditor;
public class QuestEditor extends GenericEditor {
-
- // @Override
- // protected TreeMasterDetailSWTBuilder customizeTree(TreeMasterDetailSWTBuilder builder) {
- // final TreeMasterDetailSWTBuilder result = super.customizeTree(builder);
- //
- // // result.customizeContentProvider(getContentProvider());
- //
- // return result;
- // }
}
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRenderer.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRenderer.java
index 125df2f..c4c1551 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRenderer.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRenderer.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRendererService.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRendererService.java
index 65aeef4..cb62434 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRendererService.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/customdependencyid/CustomDependencyIdRendererService.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlMenuProvider.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlMenuProvider.java
index c54ae33..e4e0345 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlMenuProvider.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlMenuProvider.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlRenderer.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlRenderer.java
index 996ed6c..ab6502d 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlRenderer.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlRenderer.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlSWTRendererService.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlSWTRendererService.java
index cf5e1d3..a9c4f31 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlSWTRendererService.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlSWTRendererService.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlTreeViewerBuilder.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlTreeViewerBuilder.java
index 6512a01..1ad834e 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlTreeViewerBuilder.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/renderers/dependencytree/DependencyControlTreeViewerBuilder.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/wizards/QuestCreationPage.java b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/wizards/QuestCreationPage.java
index 07f3706..9d3d178 100644
--- a/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/wizards/QuestCreationPage.java
+++ b/plugins/org.eclipse.skills.ui.questeditor/src/org/eclipse/skills/ui/questeditor/wizards/QuestCreationPage.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/model/Skills.ecore b/plugins/org.eclipse.skills/model/Skills.ecore
index ab8d902..bddb11a 100644
--- a/plugins/org.eclipse.skills/model/Skills.ecore
+++ b/plugins/org.eclipse.skills/model/Skills.ecore
@@ -78,7 +78,7 @@
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="UserTask">
<eOperations name="isCompleted" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
- <eOperations name="start"/>
+ <eOperations name="activate"/>
<eOperations name="getUser" eType="#//User"/>
<eOperations name="isStarted" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/>
<eOperations name="revealNextHint"/>
@@ -139,13 +139,13 @@
</eOperations>
</eClassifiers>
<eClassifiers xsi:type="ecore:EClass" name="SequenceDependency" eSuperTypes="#//AndDependency"/>
- <eClassifiers xsi:type="ecore:EClass" name="CompleteIncludedTasksDependency" eSuperTypes="#//Dependency"/>
- <eClassifiers xsi:type="ecore:EClass" name="TaskDependency" eSuperTypes="#//Dependency">
+ <eClassifiers xsi:type="ecore:EClass" name="CompleteIncludedTasksDependency" eSuperTypes="#//UserDependency"/>
+ <eClassifiers xsi:type="ecore:EClass" name="TaskDependency" eSuperTypes="#//UserDependency">
<eStructuralFeatures xsi:type="ecore:EReference" name="task" lowerBound="1" eType="#//Task"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="completed" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"
defaultValueLiteral="true"/>
</eClassifiers>
- <eClassifiers xsi:type="ecore:EClass" name="SkillDependency" eSuperTypes="#//Dependency">
+ <eClassifiers xsi:type="ecore:EClass" name="SkillDependency" eSuperTypes="#//UserDependency">
<eStructuralFeatures xsi:type="ecore:EAttribute" name="minExperience" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
defaultValueLiteral="0"/>
<eStructuralFeatures xsi:type="ecore:EAttribute" name="minLevel" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"
@@ -163,4 +163,8 @@
<eClassifiers xsi:type="ecore:EDataType" name="CustomDependencyDefinition" instanceClassName="org.eclipse.skills.dependencies.CustomDependencyDefinition"/>
<eClassifiers xsi:type="ecore:EDataType" name="ImageData" instanceClassName="org.eclipse.swt.graphics.ImageData"/>
<eClassifiers xsi:type="ecore:EDataType" name="ISkillService" instanceClassName="org.eclipse.skills.service.ISkillService"/>
+ <eClassifiers xsi:type="ecore:EClass" name="UserDependency" abstract="true" eSuperTypes="#//Dependency">
+ <eStructuralFeatures xsi:type="ecore:EReference" name="user" ordered="false" unique="false"
+ eType="#//User" transient="true" resolveProxies="false"/>
+ </eClassifiers>
</ecore:EPackage>
diff --git a/plugins/org.eclipse.skills/model/Skills.genmodel b/plugins/org.eclipse.skills/model/Skills.genmodel
index 33b64cf..4b57830 100644
--- a/plugins/org.eclipse.skills/model/Skills.genmodel
+++ b/plugins/org.eclipse.skills/model/Skills.genmodel
@@ -81,7 +81,7 @@
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//UserTask/hintsDisplayed"/>
<genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//UserTask/added"/>
<genOperations ecoreOperation="Skills.ecore#//UserTask/isCompleted"/>
- <genOperations ecoreOperation="Skills.ecore#//UserTask/start"/>
+ <genOperations ecoreOperation="Skills.ecore#//UserTask/activate"/>
<genOperations ecoreOperation="Skills.ecore#//UserTask/getUser"/>
<genOperations ecoreOperation="Skills.ecore#//UserTask/isStarted"/>
<genOperations ecoreOperation="Skills.ecore#//UserTask/revealNextHint"/>
@@ -140,5 +140,8 @@
<genClasses ecoreClass="Skills.ecore#//Hint">
<genFeatures createChild="false" ecoreFeature="ecore:EAttribute Skills.ecore#//Hint/penalty"/>
</genClasses>
+ <genClasses image="false" ecoreClass="Skills.ecore#//UserDependency">
+ <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference Skills.ecore#//UserDependency/user"/>
+ </genClasses>
</genPackages>
</genmodel:GenModel>
diff --git a/plugins/org.eclipse.skills/model/model.aird b/plugins/org.eclipse.skills/model/model.aird
index 993c3b5..1b43e63 100644
--- a/plugins/org.eclipse.skills/model/model.aird
+++ b/plugins/org.eclipse.skills/model/model.aird
@@ -5,7 +5,7 @@
<semanticResources>http://eclipse.org/skills/1.0.0</semanticResources>
<ownedViews xmi:type="viewpoint:DView" uid="_m68ZsEwrEeqwHIzbUoB2lQ">
<viewpoint xmi:type="description:Viewpoint" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']"/>
- <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_n6l40EwrEeqwHIzbUoB2lQ" name="Skills Model" repPath="#_n4mUwEwrEeqwHIzbUoB2lQ" changeId="9e581a98-8d1c-493f-82dd-9861344c7653">
+ <ownedRepresentationDescriptors xmi:type="viewpoint:DRepresentationDescriptor" uid="_n6l40EwrEeqwHIzbUoB2lQ" name="Skills Model" repPath="#_n4mUwEwrEeqwHIzbUoB2lQ" changeId="e88e0352-ff69-44a5-8b9c-3b81539aca3b">
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<target xmi:type="ecore:EPackage" href="Skills.ecore#/"/>
</ownedRepresentationDescriptors>
@@ -406,7 +406,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_rIjn-drpEeq_CZJuNlb8eA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_rIjn9NrpEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rIjn9drpEeq_CZJuNlb8eA" x="2140" y="685"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rIjn9drpEeq_CZJuNlb8eA" x="1683" y="685"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rIjn-trpEeq_CZJuNlb8eA" type="2003" element="_rG8eYNrpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_rIkPANrpEeq_CZJuNlb8eA" type="5007"/>
@@ -437,7 +437,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_YI-pdtryEeq_CZJuNlb8eA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_YI-pcdryEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YI-pctryEeq_CZJuNlb8eA" x="1710" y="685" width="215" height="100"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YI-pctryEeq_CZJuNlb8eA" x="2315" y="820" width="215" height="100"/>
</children>
<children xmi:type="notation:Node" xmi:id="_sfpyMNrzEeq_CZJuNlb8eA" type="2003" element="_sfdk8NrzEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_sfpyM9rzEeq_CZJuNlb8eA" type="5007"/>
@@ -450,7 +450,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_sfpyNtrzEeq_CZJuNlb8eA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_sfpyMdrzEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sfpyMtrzEeq_CZJuNlb8eA" x="2420" y="685" width="120" height="100"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sfpyMtrzEeq_CZJuNlb8eA" x="2565" y="820" width="120" height="100"/>
</children>
<children xmi:type="notation:Node" xmi:id="_S_lQQNr-Eeq_nvF5tuZorw" type="2003" element="_S--MQNr-Eeq_nvF5tuZorw">
<children xmi:type="notation:Node" xmi:id="_S_qv0Nr-Eeq_nvF5tuZorw" type="5007"/>
@@ -467,7 +467,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_S_qv09r-Eeq_nvF5tuZorw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_S_lQQdr-Eeq_nvF5tuZorw" fontName="Cantarell" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S_lQQtr-Eeq_nvF5tuZorw" x="1940" y="685" width="158" height="100"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S_lQQtr-Eeq_nvF5tuZorw" x="2115" y="820" width="158" height="100"/>
</children>
<children xmi:type="notation:Node" xmi:id="_0ndn8NvREeqxZK-wtN_0Nw" type="2003" element="_0msy8NvREeqxZK-wtN_0Nw">
<children xmi:type="notation:Node" xmi:id="_0njHgNvREeqxZK-wtN_0Nw" type="5007"/>
@@ -510,7 +510,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_gWUZsuBVEeq6k6a2XVHNwA"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_gWTLkeBVEeq6k6a2XVHNwA" fontName="Segoe UI" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gWTLkuBVEeq6k6a2XVHNwA" x="2195" y="870" width="328" height="58"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gWTLkuBVEeq6k6a2XVHNwA" x="1720" y="810" width="328" height="58"/>
</children>
<children xmi:type="notation:Node" xmi:id="_O6AGMOYbEeqiRLW56LILnw" type="2003" element="_O5dToOYbEeqiRLW56LILnw">
<children xmi:type="notation:Node" xmi:id="_O6DwkOYbEeqiRLW56LILnw" type="5007"/>
@@ -523,7 +523,7 @@
<styles xmi:type="notation:FilteringStyle" xmi:id="_O6EXouYbEeqiRLW56LILnw"/>
</children>
<styles xmi:type="notation:ShapeStyle" xmi:id="_O6AGMeYbEeqiRLW56LILnw" fontName="Cantarell" fontHeight="8"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O6AGMuYbEeqiRLW56LILnw" x="331" y="20" width="202" height="50"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_O6AGMuYbEeqiRLW56LILnw" x="365" y="20" width="202" height="50"/>
</children>
<children xmi:type="notation:Node" xmi:id="_MREc8PEPEeqJFZP0_BSppg" type="2003" element="_MQbjwPEPEeqJFZP0_BSppg">
<children xmi:type="notation:Node" xmi:id="_MRJ8gPEPEeqJFZP0_BSppg" type="5007"/>
@@ -538,6 +538,15 @@
<styles xmi:type="notation:ShapeStyle" xmi:id="_MREc8fEPEeqJFZP0_BSppg" fontName="Cantarell" fontHeight="8"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_MREc8vEPEeqJFZP0_BSppg" x="1367" y="192" width="241" height="52"/>
</children>
+ <children xmi:type="notation:Node" xmi:id="_Jku50PHQEeqBSeAPWoKPJw" type="2003" element="_Jkcl8PHQEeqBSeAPWoKPJw">
+ <children xmi:type="notation:Node" xmi:id="_Jkvg4PHQEeqBSeAPWoKPJw" type="5007"/>
+ <children xmi:type="notation:Node" xmi:id="_Jkvg4fHQEeqBSeAPWoKPJw" type="7004">
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Jkvg4vHQEeqBSeAPWoKPJw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Jkvg4_HQEeqBSeAPWoKPJw"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_Jku50fHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Jku50vHQEeqBSeAPWoKPJw" x="2184" y="685" width="120" height="100"/>
+ </children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_n6t0okwrEeqwHIzbUoB2lQ"/>
<edges xmi:type="notation:Edge" xmi:id="_rIxDUNrpEeq_CZJuNlb8eA" type="4001" element="_rHvIkNrpEeq_CZJuNlb8eA" source="_rIUXYNrpEeq_CZJuNlb8eA" target="_rIaeANrpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_rIyRcNrpEeq_CZJuNlb8eA" type="6001">
@@ -781,17 +790,17 @@
</edges>
<edges xmi:type="notation:Edge" xmi:id="_rJElUtrpEeq_CZJuNlb8eA" type="4001" element="_rIDRoNrpEeq_CZJuNlb8eA" source="_rIjn89rpEeq_CZJuNlb8eA" target="_rIevd9rpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_rJElVtrpEeq_CZJuNlb8eA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElV9rpEeq_CZJuNlb8eA" x="-284" y="-74"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElV9rpEeq_CZJuNlb8eA" x="-56" y="-74"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rJElWNrpEeq_CZJuNlb8eA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElWdrpEeq_CZJuNlb8eA" x="-101" y="10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElWdrpEeq_CZJuNlb8eA" x="-32" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_rJElWtrpEeq_CZJuNlb8eA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElW9rpEeq_CZJuNlb8eA" x="124" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rJElW9rpEeq_CZJuNlb8eA" x="55" y="-10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_rJElU9rpEeq_CZJuNlb8eA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_rJElVNrpEeq_CZJuNlb8eA" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJElVdrpEeq_CZJuNlb8eA" points="[40, -49, 773, 136]$[40, -177, 773, 8]$[-658, -177, 75, 8]"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_rJElVdrpEeq_CZJuNlb8eA" points="[15, -49, 341, 136]$[15, -177, 341, 8]$[-249, -177, 77, 8]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJElXNrpEeq_CZJuNlb8eA" id="(0.5,0.5)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJElXdrpEeq_CZJuNlb8eA" id="(0.5,0.5)"/>
</edges>
@@ -987,70 +996,22 @@
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sW9p5trrEeq_CZJuNlb8eA" id="(1.0,0.13761467889908258)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_sW9p59rrEeq_CZJuNlb8eA" id="(0.2542372881355932,0.0)"/>
</edges>
- <edges xmi:type="notation:Edge" xmi:id="_d7LRkNryEeq_CZJuNlb8eA" type="4001" element="_d6_rctryEeq_CZJuNlb8eA" source="_YI-pcNryEeq_CZJuNlb8eA" target="_rIevd9rpEeq_CZJuNlb8eA">
- <children xmi:type="notation:Node" xmi:id="_d7LRlNryEeq_CZJuNlb8eA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d7LRldryEeq_CZJuNlb8eA" y="-10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_d7LRltryEeq_CZJuNlb8eA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d7LRl9ryEeq_CZJuNlb8eA" y="10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_d7LRmNryEeq_CZJuNlb8eA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d7LRmdryEeq_CZJuNlb8eA" y="10"/>
- </children>
- <styles xmi:type="notation:ConnectorStyle" xmi:id="_d7LRkdryEeq_CZJuNlb8eA" routing="Tree"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_d7LRktryEeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_d7LRk9ryEeq_CZJuNlb8eA" points="[0, 0, 297, 166]$[-297, -166, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_d7LRmtryEeq_CZJuNlb8eA" id="(0.704225352112676,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_d7LRm9ryEeq_CZJuNlb8eA" id="(0.5,0.5)"/>
- </edges>
<edges xmi:type="notation:Edge" xmi:id="_v_kOoNrzEeq_CZJuNlb8eA" type="4001" element="_v_ZPldrzEeq_CZJuNlb8eA" source="_sfpyMNrzEeq_CZJuNlb8eA" target="_rIUXYNrpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_v_kOpNrzEeq_CZJuNlb8eA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOpdrzEeq_CZJuNlb8eA" x="140" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOpdrzEeq_CZJuNlb8eA" x="280" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_v_kOptrzEeq_CZJuNlb8eA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOp9rzEeq_CZJuNlb8eA" x="-42" y="10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOp9rzEeq_CZJuNlb8eA" x="51" y="10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_v_kOqNrzEeq_CZJuNlb8eA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOqdrzEeq_CZJuNlb8eA" x="42" y="10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v_kOqdrzEeq_CZJuNlb8eA" x="84" y="10"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_v_kOodrzEeq_CZJuNlb8eA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_v_kOotrzEeq_CZJuNlb8eA" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v_kOo9rzEeq_CZJuNlb8eA" points="[0, 0, 1109, 350]$[0, -310, 1109, 40]$[-1109, -310, 0, 40]"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v_kOo9rzEeq_CZJuNlb8eA" points="[8, 0, 1246, 483]$[8, -444, 1246, 39]$[-1238, -444, 0, 39]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v_kOqtrzEeq_CZJuNlb8eA" id="(0.6779661016949152,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v_kOq9rzEeq_CZJuNlb8eA" id="(1.0,0.20408163265306123)"/>
</edges>
- <edges xmi:type="notation:Edge" xmi:id="_v9tYANr0Eeq_CZJuNlb8eA" type="4001" element="_v9hK3tr0Eeq_CZJuNlb8eA" source="_sfpyMNrzEeq_CZJuNlb8eA" target="_rIevd9rpEeq_CZJuNlb8eA">
- <children xmi:type="notation:Node" xmi:id="_v9tYBNr0Eeq_CZJuNlb8eA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v9tYBdr0Eeq_CZJuNlb8eA" y="-10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_v9tYBtr0Eeq_CZJuNlb8eA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v9tYB9r0Eeq_CZJuNlb8eA" y="10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_v9tYCNr0Eeq_CZJuNlb8eA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_v9tYCdr0Eeq_CZJuNlb8eA" y="10"/>
- </children>
- <styles xmi:type="notation:ConnectorStyle" xmi:id="_v9tYAdr0Eeq_CZJuNlb8eA" routing="Tree"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_v9tYAtr0Eeq_CZJuNlb8eA" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_v9tYA9r0Eeq_CZJuNlb8eA" points="[0, 0, 709, 136]$[0, -69, 709, 67]$[-708, -69, 1, 67]$[-708, -87, 1, 49]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v9tYCtr0Eeq_CZJuNlb8eA" id="(0.635593220338983,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_v9tYC9r0Eeq_CZJuNlb8eA" id="(0.5,0.5)"/>
- </edges>
- <edges xmi:type="notation:Edge" xmi:id="_YJeiQNr-Eeq_nvF5tuZorw" type="4001" element="_YJBPQNr-Eeq_nvF5tuZorw" source="_S_lQQNr-Eeq_nvF5tuZorw" target="_rIevd9rpEeq_CZJuNlb8eA">
- <children xmi:type="notation:Node" xmi:id="_YJfwYNr-Eeq_nvF5tuZorw" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJfwYdr-Eeq_nvF5tuZorw" y="-10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_YJgXcNr-Eeq_nvF5tuZorw" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJgXcdr-Eeq_nvF5tuZorw" y="10"/>
- </children>
- <children xmi:type="notation:Node" xmi:id="_YJg-gNr-Eeq_nvF5tuZorw" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YJg-gdr-Eeq_nvF5tuZorw" y="10"/>
- </children>
- <styles xmi:type="notation:ConnectorStyle" xmi:id="_YJeiQdr-Eeq_nvF5tuZorw" routing="Tree"/>
- <styles xmi:type="notation:FontStyle" xmi:id="_YJeiQtr-Eeq_nvF5tuZorw" fontName="Cantarell" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YJeiQ9r-Eeq_nvF5tuZorw" points="[0, 0, 280, -265]$[-280, 265, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YJko4Nr-Eeq_nvF5tuZorw" id="(0.0,0.17346938775510204)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YJko4dr-Eeq_nvF5tuZorw" id="(0.5,0.5)"/>
- </edges>
<edges xmi:type="notation:Edge" xmi:id="_1xGwkNvREeqxZK-wtN_0Nw" type="4001" element="_1wiv5tvREeqxZK-wtN_0Nw" source="_0ndn8NvREeqxZK-wtN_0Nw" target="_rIaeANrpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_1xHXoNvREeqxZK-wtN_0Nw" type="6001">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_1xHXodvREeqxZK-wtN_0Nw" x="7" y="2"/>
@@ -1085,20 +1046,100 @@
</edges>
<edges xmi:type="notation:Edge" xmi:id="_2UufINyOEeq6k6a2XVHNwA" type="4001" element="_2Tg-MNyOEeq6k6a2XVHNwA" source="_S_lQQNr-Eeq_nvF5tuZorw" target="_rIc6Q9rpEeq_CZJuNlb8eA">
<children xmi:type="notation:Node" xmi:id="_2U2a8NyOEeq6k6a2XVHNwA" type="6001">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U2a8dyOEeq6k6a2XVHNwA" x="-496" y="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U2a8dyOEeq6k6a2XVHNwA" x="-466" y="-10"/>
</children>
<children xmi:type="notation:Node" xmi:id="_2U3CANyOEeq6k6a2XVHNwA" type="6002">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U3CAdyOEeq6k6a2XVHNwA" x="-71" y="114"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U3CAdyOEeq6k6a2XVHNwA" x="-215" y="114"/>
</children>
<children xmi:type="notation:Node" xmi:id="_2U4QINyOEeq6k6a2XVHNwA" type="6003">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U4QIdyOEeq6k6a2XVHNwA" x="-10"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2U4QIdyOEeq6k6a2XVHNwA" x="-1"/>
</children>
<styles xmi:type="notation:ConnectorStyle" xmi:id="_2UvGMNyOEeq6k6a2XVHNwA" routing="Rectilinear"/>
<styles xmi:type="notation:FontStyle" xmi:id="_2UvGMdyOEeq6k6a2XVHNwA" fontColor="7490599" fontName="Segoe UI" fontHeight="8"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2UvGMtyOEeq6k6a2XVHNwA" points="[0, 98, 1672, 548]$[0, 484, 1672, 934]$[-1754, 484, -82, 934]$[-1754, -362, -82, 88]"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2UvGMtyOEeq6k6a2XVHNwA" points="[40, 98, 1825, 681]$[40, 349, 1825, 932]$[-1888, 349, -103, 932]$[-1888, -470, -103, 113]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2U7TcNyOEeq6k6a2XVHNwA" id="(0.4807692307692308,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2U7TcdyOEeq6k6a2XVHNwA" id="(1.0,0.10204081632653061)"/>
</edges>
+ <edges xmi:type="notation:Edge" xmi:id="_NGDrgPHQEeqBSeAPWoKPJw" type="4001" element="_NFylzPHQEeqBSeAPWoKPJw" source="_Jku50PHQEeqBSeAPWoKPJw" target="_rIevd9rpEeq_CZJuNlb8eA">
+ <children xmi:type="notation:Node" xmi:id="_NGESkPHQEeqBSeAPWoKPJw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NGESkfHQEeqBSeAPWoKPJw" x="1" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_NGESkvHQEeqBSeAPWoKPJw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NGESk_HQEeqBSeAPWoKPJw" x="1" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_NGESlPHQEeqBSeAPWoKPJw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NGESlfHQEeqBSeAPWoKPJw" x="1" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_NGDrgfHQEeqBSeAPWoKPJw" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_NGDrgvHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NGDrg_HQEeqBSeAPWoKPJw" points="[0, -4, 758, 136]$[0, -74, 758, 66]$[-757, -74, 1, 66]$[-757, -91, 1, 49]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NGESlvHQEeqBSeAPWoKPJw" id="(0.2457627118644068,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NGESl_HQEeqBSeAPWoKPJw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_RyYQsPHQEeqBSeAPWoKPJw" type="4001" element="_RyJASvHQEeqBSeAPWoKPJw" source="_S_lQQNr-Eeq_nvF5tuZorw" target="_Jku50PHQEeqBSeAPWoKPJw">
+ <children xmi:type="notation:Node" xmi:id="_RyY3wPHQEeqBSeAPWoKPJw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyY3wfHQEeqBSeAPWoKPJw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_RyY3wvHQEeqBSeAPWoKPJw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyY3w_HQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_RyY3xPHQEeqBSeAPWoKPJw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_RyY3xfHQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_RyYQsfHQEeqBSeAPWoKPJw" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_RyYQsvHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RyYQs_HQEeqBSeAPWoKPJw" points="[0, 0, -45, 37]$[45, -37, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RyY3xvHQEeqBSeAPWoKPJw" id="(0.5769230769230769,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RyY3x_HQEeqBSeAPWoKPJw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_TU3XIPHQEeqBSeAPWoKPJw" type="4001" element="_TUot1vHQEeqBSeAPWoKPJw" source="_sfpyMNrzEeq_CZJuNlb8eA" target="_Jku50PHQEeqBSeAPWoKPJw">
+ <children xmi:type="notation:Node" xmi:id="_TU3XJPHQEeqBSeAPWoKPJw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TU3XJfHQEeqBSeAPWoKPJw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_TU3XJvHQEeqBSeAPWoKPJw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TU3XJ_HQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_TU3-MPHQEeqBSeAPWoKPJw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TU3-MfHQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_TU3XIfHQEeqBSeAPWoKPJw" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TU3XIvHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TU3XI_HQEeqBSeAPWoKPJw" points="[0, 0, 263, 97]$[-263, -97, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TU3-MvHQEeqBSeAPWoKPJw" id="(0.0,0.11224489795918367)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TU3-M_HQEeqBSeAPWoKPJw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_TsQjcPHQEeqBSeAPWoKPJw" type="4001" element="_TsB6GvHQEeqBSeAPWoKPJw" source="_YI-pcNryEeq_CZJuNlb8eA" target="_Jku50PHQEeqBSeAPWoKPJw">
+ <children xmi:type="notation:Node" xmi:id="_TsQjdPHQEeqBSeAPWoKPJw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TsQjdfHQEeqBSeAPWoKPJw" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_TsQjdvHQEeqBSeAPWoKPJw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TsQjd_HQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_TsQjePHQEeqBSeAPWoKPJw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TsQjefHQEeqBSeAPWoKPJw" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_TsQjcfHQEeqBSeAPWoKPJw" routing="Tree"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_TsQjcvHQEeqBSeAPWoKPJw" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_TsQjc_HQEeqBSeAPWoKPJw" points="[0, 0, 163, 105]$[-163, -105, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TsQjevHQEeqBSeAPWoKPJw" id="(0.704225352112676,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_TsQje_HQEeqBSeAPWoKPJw" id="(0.5,0.5)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_fX8ugPHQEeqBSeAPWoKPJw" type="4001" element="_fXuFHvHQEeqBSeAPWoKPJw" source="_Jku50PHQEeqBSeAPWoKPJw" target="_rIcTN9rpEeq_CZJuNlb8eA">
+ <children xmi:type="notation:Node" xmi:id="_fX8uhPHQEeqBSeAPWoKPJw" type="6001">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fX8uhfHQEeqBSeAPWoKPJw" x="-42" y="-10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_fX8uhvHQEeqBSeAPWoKPJw" type="6002">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fX8uh_HQEeqBSeAPWoKPJw" x="-38" y="10"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_fX8uiPHQEeqBSeAPWoKPJw" type="6003">
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fX8uifHQEeqBSeAPWoKPJw" x="-134" y="10"/>
+ </children>
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_fX8ugfHQEeqBSeAPWoKPJw" routing="Rectilinear"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_fX8ugvHQEeqBSeAPWoKPJw" fontColor="7490599" fontName="Cantarell" fontHeight="8"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fX8ug_HQEeqBSeAPWoKPJw" points="[-8, 0, 1906, 660]$[-8, -755, 1906, -95]$[-1996, -755, -82, -95]$[-1996, -665, -82, -5]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fX8uivHQEeqBSeAPWoKPJw" id="(0.559322033898305,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fX8ui_HQEeqBSeAPWoKPJw" id="(1.0,0.04)"/>
+ </edges>
</data>
</ownedAnnotationEntries>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGcIENrpEeq_CZJuNlb8eA" name="Task" tooltipText="" outgoingEdges="_rHvIkNrpEeq_CZJuNlb8eA _rH2dUNrpEeq_CZJuNlb8eA _rH3EZtrpEeq_CZJuNlb8eA _rH3rdtrpEeq_CZJuNlb8eA _rH4ShtrpEeq_CZJuNlb8eA _qKPzVtruEeq_CZJuNlb8eA" incomingEdges="_rH4ShtrpEeq_CZJuNlb8eA _rH9LBtrpEeq_CZJuNlb8eA _rH-ZINrpEeq_CZJuNlb8eA _v_ZPldrzEeq_CZJuNlb8eA" width="12" height="10">
@@ -1243,7 +1284,7 @@
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
</ownedElements>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGoVUNrpEeq_CZJuNlb8eA" name="User" tooltipText="" outgoingEdges="_rH5goNrpEeq_CZJuNlb8eA _rH6Hs9rpEeq_CZJuNlb8eA _rH7V1trpEeq_CZJuNlb8eA _sWnrrNrrEeq_CZJuNlb8eA" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGoVUNrpEeq_CZJuNlb8eA" name="User" tooltipText="" outgoingEdges="_rH5goNrpEeq_CZJuNlb8eA _rH6Hs9rpEeq_CZJuNlb8eA _rH7V1trpEeq_CZJuNlb8eA _sWnrrNrrEeq_CZJuNlb8eA" incomingEdges="_fXuFHvHQEeqBSeAPWoKPJw" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//User"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//User"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -1413,9 +1454,9 @@
</ownedStyle>
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']"/>
</ownedElements>
- <ownedElements xmi:type="diagram:DNodeListElement" uid="_rHhGINrpEeq_CZJuNlb8eA" name="start()" tooltipText="start()">
- <target xmi:type="ecore:EOperation" href="Skills.ecore#//UserTask/start"/>
- <semanticElements xmi:type="ecore:EOperation" href="Skills.ecore#//UserTask/start"/>
+ <ownedElements xmi:type="diagram:DNodeListElement" uid="_rHhGINrpEeq_CZJuNlb8eA" name="activate()" tooltipText="activate()">
+ <target xmi:type="ecore:EOperation" href="Skills.ecore#//UserTask/activate"/>
+ <semanticElements xmi:type="ecore:EOperation" href="Skills.ecore#//UserTask/activate"/>
<ownedStyle xmi:type="diagram:BundledImage" uid="_rHhGIdrpEeq_CZJuNlb8eA" labelAlignment="LEFT">
<description xmi:type="style:BundledImageDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='Operation']/@style"/>
</ownedStyle>
@@ -1465,7 +1506,7 @@
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGvDAdrpEeq_CZJuNlb8eA" name="Dependency" tooltipText="" incomingEdges="_rH2dUNrpEeq_CZJuNlb8eA _rH3rdtrpEeq_CZJuNlb8eA _rICDgNrpEeq_CZJuNlb8eA _rIDRoNrpEeq_CZJuNlb8eA _rIJYQNrpEeq_CZJuNlb8eA _rIMbk9rpEeq_CZJuNlb8eA _rINCo9rpEeq_CZJuNlb8eA _d6_rctryEeq_CZJuNlb8eA _v9hK3tr0Eeq_CZJuNlb8eA _YJBPQNr-Eeq_nvF5tuZorw" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_rGvDAdrpEeq_CZJuNlb8eA" name="Dependency" tooltipText="" incomingEdges="_rH2dUNrpEeq_CZJuNlb8eA _rH3rdtrpEeq_CZJuNlb8eA _rICDgNrpEeq_CZJuNlb8eA _rIDRoNrpEeq_CZJuNlb8eA _rIJYQNrpEeq_CZJuNlb8eA _rIMbk9rpEeq_CZJuNlb8eA _rINCo9rpEeq_CZJuNlb8eA _NFylzPHQEeqBSeAPWoKPJw" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//Dependency"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//Dependency"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -2034,7 +2075,7 @@
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YIycMNryEeq_CZJuNlb8eA" name="CompleteIncludedTasksDependency" tooltipText="" outgoingEdges="_d6_rctryEeq_CZJuNlb8eA" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_YIycMNryEeq_CZJuNlb8eA" name="CompleteIncludedTasksDependency" tooltipText="" outgoingEdges="_TsB6GvHQEeqBSeAPWoKPJw" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -2045,25 +2086,13 @@
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DEdge" uid="_d6_rctryEeq_CZJuNlb8eA" sourceNode="_YIycMNryEeq_CZJuNlb8eA" targetNode="_rGvDAdrpEeq_CZJuNlb8eA">
- <target xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
- <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
- <ownedStyle xmi:type="diagram:EdgeStyle" uid="_d6_rc9ryEeq_CZJuNlb8eA" targetArrow="InputClosedArrow" routingStyle="tree">
- <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
- <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_d6_rdNryEeq_CZJuNlb8eA" showIcon="false">
- <labelFormat>italic</labelFormat>
- </beginLabelStyle>
- <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_d6_rddryEeq_CZJuNlb8eA" showIcon="false"/>
- </ownedStyle>
- <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
- </ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_sfdk8NrzEeq_CZJuNlb8eA" name="TaskDependency" tooltipText="" outgoingEdges="_v_ZPldrzEeq_CZJuNlb8eA _v9hK3tr0Eeq_CZJuNlb8eA" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_sfdk8NrzEeq_CZJuNlb8eA" name="TaskDependency" tooltipText="" outgoingEdges="_v_ZPldrzEeq_CZJuNlb8eA _TUot1vHQEeqBSeAPWoKPJw" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
<arrangeConstraints>KEEP_SIZE</arrangeConstraints>
<arrangeConstraints>KEEP_RATIO</arrangeConstraints>
- <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_0GBGodrzEeq_CZJuNlb8eA" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_WA61GfHNEeqBSeAPWoKPJw" borderSize="1" borderSizeComputationExpression="1" backgroundStyle="Liquid" foregroundColor="255,252,216">
<description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@style"/>
</ownedStyle>
<actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
@@ -2087,19 +2116,7 @@
</ownedStyle>
<actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DEdge" uid="_v9hK3tr0Eeq_CZJuNlb8eA" sourceNode="_sfdk8NrzEeq_CZJuNlb8eA" targetNode="_rGvDAdrpEeq_CZJuNlb8eA">
- <target xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
- <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
- <ownedStyle xmi:type="diagram:EdgeStyle" uid="_v9hK39r0Eeq_CZJuNlb8eA" targetArrow="InputClosedArrow" routingStyle="tree">
- <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
- <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_v9hK4Nr0Eeq_CZJuNlb8eA" showIcon="false">
- <labelFormat>italic</labelFormat>
- </beginLabelStyle>
- <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_v9hK4dr0Eeq_CZJuNlb8eA" showIcon="false"/>
- </ownedStyle>
- <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
- </ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_S--MQNr-Eeq_nvF5tuZorw" name="SkillDependency" tooltipText="" outgoingEdges="_YJBPQNr-Eeq_nvF5tuZorw _2Tg-MNyOEeq6k6a2XVHNwA" width="12" height="10">
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_S--MQNr-Eeq_nvF5tuZorw" name="SkillDependency" tooltipText="" outgoingEdges="_2Tg-MNyOEeq6k6a2XVHNwA _RyJASvHQEeqBSeAPWoKPJw" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
<arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
@@ -2126,18 +2143,6 @@
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@subNodeMappings[name='EC%20EAttribute']"/>
</ownedElements>
</ownedDiagramElements>
- <ownedDiagramElements xmi:type="diagram:DEdge" uid="_YJBPQNr-Eeq_nvF5tuZorw" sourceNode="_S--MQNr-Eeq_nvF5tuZorw" targetNode="_rGvDAdrpEeq_CZJuNlb8eA">
- <target xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
- <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
- <ownedStyle xmi:type="diagram:EdgeStyle" uid="_pFxrVtr-Eeq_nvF5tuZorw" targetArrow="InputClosedArrow" routingStyle="tree">
- <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
- <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_pFxrV9r-Eeq_nvF5tuZorw" showIcon="false">
- <labelFormat>italic</labelFormat>
- </beginLabelStyle>
- <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_pFxrWNr-Eeq_nvF5tuZorw" showIcon="false"/>
- </ownedStyle>
- <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
- </ownedDiagramElements>
<ownedDiagramElements xmi:type="diagram:DNodeList" uid="_0msy8NvREeqxZK-wtN_0Nw" name="Hint" tooltipText="" outgoingEdges="_1wiv5tvREeqxZK-wtN_0Nw" incomingEdges="_qKPzVtruEeq_CZJuNlb8eA" width="12" height="10">
<target xmi:type="ecore:EClass" href="Skills.ecore#//Hint"/>
<semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//Hint"/>
@@ -2276,6 +2281,76 @@
<actualMapping xmi:type="description_1:NodeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EDataType']/@subNodeMappings[name='EC_DataType_InstanceClassName']"/>
</ownedElements>
</ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DNodeList" uid="_Jkcl8PHQEeqBSeAPWoKPJw" name="UserDependency" tooltipText="" outgoingEdges="_NFylzPHQEeqBSeAPWoKPJw _fXuFHvHQEeqBSeAPWoKPJw" incomingEdges="_RyJASvHQEeqBSeAPWoKPJw _TUot1vHQEeqBSeAPWoKPJw _TsB6GvHQEeqBSeAPWoKPJw" width="12" height="10">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//UserDependency"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//UserDependency"/>
+ <arrangeConstraints>KEEP_LOCATION</arrangeConstraints>
+ <arrangeConstraints>KEEP_SIZE</arrangeConstraints>
+ <arrangeConstraints>KEEP_RATIO</arrangeConstraints>
+ <ownedStyle xmi:type="diagram:FlatContainerStyle" uid="_LIADYfHQEeqBSeAPWoKPJw" iconPath="/org.eclipse.emf.ecoretools.design/icons/full/obj16/EClass_abstract.gif" borderSize="1" borderSizeComputationExpression="1" borderColor="125,125,125" backgroundStyle="Liquid" foregroundColor="228,228,228">
+ <labelFormat>italic</labelFormat>
+ <description xmi:type="style:FlatContainerStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']/@conditionnalStyles.1/@style"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:ContainerMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@containerMappings[name='EC%20EClass']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_NFylzPHQEeqBSeAPWoKPJw" sourceNode="_Jkcl8PHQEeqBSeAPWoKPJw" targetNode="_rGvDAdrpEeq_CZJuNlb8eA">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//UserDependency"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//UserDependency"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_NFylzfHQEeqBSeAPWoKPJw" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_NFylzvHQEeqBSeAPWoKPJw" showIcon="false">
+ <labelFormat>italic</labelFormat>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_NFylz_HQEeqBSeAPWoKPJw" showIcon="false"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_RyJASvHQEeqBSeAPWoKPJw" sourceNode="_S--MQNr-Eeq_nvF5tuZorw" targetNode="_Jkcl8PHQEeqBSeAPWoKPJw">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//SkillDependency"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_RyJnMPHQEeqBSeAPWoKPJw" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_RyJnMfHQEeqBSeAPWoKPJw" showIcon="false">
+ <labelFormat>italic</labelFormat>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_RyJnMvHQEeqBSeAPWoKPJw" showIcon="false"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_TUot1vHQEeqBSeAPWoKPJw" sourceNode="_sfdk8NrzEeq_CZJuNlb8eA" targetNode="_Jkcl8PHQEeqBSeAPWoKPJw">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//TaskDependency"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_TUpUsPHQEeqBSeAPWoKPJw" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_TUpUsfHQEeqBSeAPWoKPJw" showIcon="false">
+ <labelFormat>italic</labelFormat>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_TUpUsvHQEeqBSeAPWoKPJw" showIcon="false"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_TsB6GvHQEeqBSeAPWoKPJw" sourceNode="_YIycMNryEeq_CZJuNlb8eA" targetNode="_Jkcl8PHQEeqBSeAPWoKPJw">
+ <target xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
+ <semanticElements xmi:type="ecore:EClass" href="Skills.ecore#//CompleteIncludedTasksDependency"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_TsChAPHQEeqBSeAPWoKPJw" targetArrow="InputClosedArrow" routingStyle="tree">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']/@style"/>
+ <beginLabelStyle xmi:type="diagram:BeginLabelStyle" uid="_TsChAfHQEeqBSeAPWoKPJw" showIcon="false">
+ <labelFormat>italic</labelFormat>
+ </beginLabelStyle>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_TsChAvHQEeqBSeAPWoKPJw" showIcon="false"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC%20ESupertypes']"/>
+ </ownedDiagramElements>
+ <ownedDiagramElements xmi:type="diagram:DEdge" uid="_fXuFHvHQEeqBSeAPWoKPJw" name="[0..1] user" sourceNode="_Jkcl8PHQEeqBSeAPWoKPJw" targetNode="_rGoVUNrpEeq_CZJuNlb8eA">
+ <target xmi:type="ecore:EReference" href="Skills.ecore#//UserDependency/user"/>
+ <semanticElements xmi:type="ecore:EReference" href="Skills.ecore#//UserDependency/user"/>
+ <ownedStyle xmi:type="diagram:EdgeStyle" uid="_pecdcvHQEeqBSeAPWoKPJw" routingStyle="manhattan" strokeColor="0,0,0">
+ <description xmi:type="style:EdgeStyleDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']/@style"/>
+ <centerLabelStyle xmi:type="diagram:CenterLabelStyle" uid="_pecddPHQEeqBSeAPWoKPJw" showIcon="false"/>
+ <endLabelStyle xmi:type="diagram:EndLabelStyle" uid="_pecdc_HQEeqBSeAPWoKPJw" labelSize="6" showIcon="false" labelColor="39,76,114"/>
+ </ownedStyle>
+ <actualMapping xmi:type="description_1:EdgeMapping" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer/@edgeMappings[name='EC_EReference']"/>
+ </ownedDiagramElements>
<description xmi:type="description_1:DiagramDescription" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']"/>
<filterVariableHistory xmi:type="diagram:FilterVariableHistory" uid="_n5CZoEwrEeqwHIzbUoB2lQ"/>
<activatedLayers xmi:type="description_1:Layer" href="platform:/plugin/org.eclipse.emf.ecoretools.design/description/ecore.odesign#//@ownedViewpoints[name='Design']/@ownedRepresentations[name='Entities']/@defaultLayer"/>
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ICompleteIncludedTasksDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ICompleteIncludedTasksDependency.java
index 25da249..c72238e 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ICompleteIncludedTasksDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ICompleteIncludedTasksDependency.java
@@ -13,5 +13,5 @@
* @model
* @generated
*/
-public interface ICompleteIncludedTasksDependency extends IDependency {
+public interface ICompleteIncludedTasksDependency extends IUserDependency {
} // ICompleteIncludedTasksDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillDependency.java
index ea2498c..f23ec2b 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillDependency.java
@@ -21,7 +21,7 @@
* @model
* @generated
*/
-public interface ISkillDependency extends IDependency {
+public interface ISkillDependency extends IUserDependency {
/**
* Returns the value of the '<em><b>Min Experience</b></em>' attribute.
* The default value is <code>"0"</code>.
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
index 6569094..7b83cc4 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ISkillsPackage.java
@@ -589,13 +589,13 @@
int USER_TASK___IS_COMPLETED = 0;
/**
- * The operation id for the '<em>Start</em>' operation.
+ * The operation id for the '<em>Activate</em>' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
* @ordered
*/
- int USER_TASK___START = 1;
+ int USER_TASK___ACTIVATE = 1;
/**
* The operation id for the '<em>Get User</em>' operation.
@@ -1493,6 +1493,70 @@
int SEQUENCE_DEPENDENCY_OPERATION_COUNT = AND_DEPENDENCY_OPERATION_COUNT + 0;
/**
+ * The meta object id for the '{@link org.eclipse.skills.model.impl.MUserDependency <em>User Dependency</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.impl.MUserDependency
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getUserDependency()
+ * @generated
+ */
+ int USER_DEPENDENCY = 24;
+
+ /**
+ * The feature id for the '<em><b>Fulfilled</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY__FULFILLED = DEPENDENCY__FULFILLED;
+
+ /**
+ * The feature id for the '<em><b>User</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY__USER = DEPENDENCY_FEATURE_COUNT + 0;
+
+ /**
+ * The number of structural features of the '<em>User Dependency</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY_FEATURE_COUNT = DEPENDENCY_FEATURE_COUNT + 1;
+
+ /**
+ * The operation id for the '<em>Activate</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY___ACTIVATE = DEPENDENCY___ACTIVATE;
+
+ /**
+ * The operation id for the '<em>Deactivate</em>' operation.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY___DEACTIVATE = DEPENDENCY___DEACTIVATE;
+
+ /**
+ * The number of operations of the '<em>User Dependency</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int USER_DEPENDENCY_OPERATION_COUNT = DEPENDENCY_OPERATION_COUNT + 0;
+
+ /**
* The meta object id for the '{@link org.eclipse.skills.model.impl.MCompleteIncludedTasksDependency <em>Complete Included Tasks Dependency</em>}' class.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -1509,7 +1573,16 @@
* @generated
* @ordered
*/
- int COMPLETE_INCLUDED_TASKS_DEPENDENCY__FULFILLED = DEPENDENCY__FULFILLED;
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY__FULFILLED = USER_DEPENDENCY__FULFILLED;
+
+ /**
+ * The feature id for the '<em><b>User</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY__USER = USER_DEPENDENCY__USER;
/**
* The number of structural features of the '<em>Complete Included Tasks Dependency</em>' class.
@@ -1518,7 +1591,7 @@
* @generated
* @ordered
*/
- int COMPLETE_INCLUDED_TASKS_DEPENDENCY_FEATURE_COUNT = DEPENDENCY_FEATURE_COUNT + 0;
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY_FEATURE_COUNT = USER_DEPENDENCY_FEATURE_COUNT + 0;
/**
* The operation id for the '<em>Activate</em>' operation.
@@ -1527,7 +1600,7 @@
* @generated
* @ordered
*/
- int COMPLETE_INCLUDED_TASKS_DEPENDENCY___ACTIVATE = DEPENDENCY___ACTIVATE;
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY___ACTIVATE = USER_DEPENDENCY___ACTIVATE;
/**
* The operation id for the '<em>Deactivate</em>' operation.
@@ -1536,7 +1609,7 @@
* @generated
* @ordered
*/
- int COMPLETE_INCLUDED_TASKS_DEPENDENCY___DEACTIVATE = DEPENDENCY___DEACTIVATE;
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY___DEACTIVATE = USER_DEPENDENCY___DEACTIVATE;
/**
* The number of operations of the '<em>Complete Included Tasks Dependency</em>' class.
@@ -1545,7 +1618,7 @@
* @generated
* @ordered
*/
- int COMPLETE_INCLUDED_TASKS_DEPENDENCY_OPERATION_COUNT = DEPENDENCY_OPERATION_COUNT + 0;
+ int COMPLETE_INCLUDED_TASKS_DEPENDENCY_OPERATION_COUNT = USER_DEPENDENCY_OPERATION_COUNT + 0;
/**
* The meta object id for the '{@link org.eclipse.skills.model.impl.MTaskDependency <em>Task Dependency</em>}' class.
@@ -1564,7 +1637,16 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY__FULFILLED = DEPENDENCY__FULFILLED;
+ int TASK_DEPENDENCY__FULFILLED = USER_DEPENDENCY__FULFILLED;
+
+ /**
+ * The feature id for the '<em><b>User</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int TASK_DEPENDENCY__USER = USER_DEPENDENCY__USER;
/**
* The feature id for the '<em><b>Task</b></em>' reference.
@@ -1573,7 +1655,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY__TASK = DEPENDENCY_FEATURE_COUNT + 0;
+ int TASK_DEPENDENCY__TASK = USER_DEPENDENCY_FEATURE_COUNT + 0;
/**
* The feature id for the '<em><b>Completed</b></em>' attribute.
@@ -1582,7 +1664,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY__COMPLETED = DEPENDENCY_FEATURE_COUNT + 1;
+ int TASK_DEPENDENCY__COMPLETED = USER_DEPENDENCY_FEATURE_COUNT + 1;
/**
* The number of structural features of the '<em>Task Dependency</em>' class.
@@ -1591,7 +1673,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY_FEATURE_COUNT = DEPENDENCY_FEATURE_COUNT + 2;
+ int TASK_DEPENDENCY_FEATURE_COUNT = USER_DEPENDENCY_FEATURE_COUNT + 2;
/**
* The operation id for the '<em>Activate</em>' operation.
@@ -1600,7 +1682,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY___ACTIVATE = DEPENDENCY___ACTIVATE;
+ int TASK_DEPENDENCY___ACTIVATE = USER_DEPENDENCY___ACTIVATE;
/**
* The operation id for the '<em>Deactivate</em>' operation.
@@ -1609,7 +1691,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY___DEACTIVATE = DEPENDENCY___DEACTIVATE;
+ int TASK_DEPENDENCY___DEACTIVATE = USER_DEPENDENCY___DEACTIVATE;
/**
* The number of operations of the '<em>Task Dependency</em>' class.
@@ -1618,7 +1700,7 @@
* @generated
* @ordered
*/
- int TASK_DEPENDENCY_OPERATION_COUNT = DEPENDENCY_OPERATION_COUNT + 0;
+ int TASK_DEPENDENCY_OPERATION_COUNT = USER_DEPENDENCY_OPERATION_COUNT + 0;
/**
* The meta object id for the '{@link org.eclipse.skills.model.impl.MSkillDependency <em>Skill Dependency</em>}' class.
@@ -1637,7 +1719,16 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY__FULFILLED = DEPENDENCY__FULFILLED;
+ int SKILL_DEPENDENCY__FULFILLED = USER_DEPENDENCY__FULFILLED;
+
+ /**
+ * The feature id for the '<em><b>User</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int SKILL_DEPENDENCY__USER = USER_DEPENDENCY__USER;
/**
* The feature id for the '<em><b>Min Experience</b></em>' attribute.
@@ -1646,7 +1737,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY__MIN_EXPERIENCE = DEPENDENCY_FEATURE_COUNT + 0;
+ int SKILL_DEPENDENCY__MIN_EXPERIENCE = USER_DEPENDENCY_FEATURE_COUNT + 0;
/**
* The feature id for the '<em><b>Min Level</b></em>' attribute.
@@ -1655,7 +1746,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY__MIN_LEVEL = DEPENDENCY_FEATURE_COUNT + 1;
+ int SKILL_DEPENDENCY__MIN_LEVEL = USER_DEPENDENCY_FEATURE_COUNT + 1;
/**
* The feature id for the '<em><b>Skill</b></em>' reference.
@@ -1664,7 +1755,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY__SKILL = DEPENDENCY_FEATURE_COUNT + 2;
+ int SKILL_DEPENDENCY__SKILL = USER_DEPENDENCY_FEATURE_COUNT + 2;
/**
* The number of structural features of the '<em>Skill Dependency</em>' class.
@@ -1673,7 +1764,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY_FEATURE_COUNT = DEPENDENCY_FEATURE_COUNT + 3;
+ int SKILL_DEPENDENCY_FEATURE_COUNT = USER_DEPENDENCY_FEATURE_COUNT + 3;
/**
* The operation id for the '<em>Activate</em>' operation.
@@ -1682,7 +1773,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY___ACTIVATE = DEPENDENCY___ACTIVATE;
+ int SKILL_DEPENDENCY___ACTIVATE = USER_DEPENDENCY___ACTIVATE;
/**
* The operation id for the '<em>Deactivate</em>' operation.
@@ -1691,7 +1782,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY___DEACTIVATE = DEPENDENCY___DEACTIVATE;
+ int SKILL_DEPENDENCY___DEACTIVATE = USER_DEPENDENCY___DEACTIVATE;
/**
* The number of operations of the '<em>Skill Dependency</em>' class.
@@ -1700,7 +1791,7 @@
* @generated
* @ordered
*/
- int SKILL_DEPENDENCY_OPERATION_COUNT = DEPENDENCY_OPERATION_COUNT + 0;
+ int SKILL_DEPENDENCY_OPERATION_COUNT = USER_DEPENDENCY_OPERATION_COUNT + 0;
/**
* The meta object id for the '{@link org.eclipse.skills.model.impl.MHint <em>Hint</em>}' class.
@@ -1756,7 +1847,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getLevelNames()
* @generated
*/
- int LEVEL_NAMES = 24;
+ int LEVEL_NAMES = 25;
/**
* The meta object id for the '<em>Date</em>' data type.
@@ -1766,7 +1857,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getDate()
* @generated
*/
- int DATE = 25;
+ int DATE = 26;
/**
@@ -1777,7 +1868,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getCustomDependencyDefinition()
* @generated
*/
- int CUSTOM_DEPENDENCY_DEFINITION = 26;
+ int CUSTOM_DEPENDENCY_DEFINITION = 27;
/**
@@ -1788,7 +1879,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getImageData()
* @generated
*/
- int IMAGE_DATA = 27;
+ int IMAGE_DATA = 28;
/**
@@ -1799,7 +1890,7 @@
* @see org.eclipse.skills.model.impl.MSkillsPackage#getISkillService()
* @generated
*/
- int ISKILL_SERVICE = 28;
+ int ISKILL_SERVICE = 29;
/**
@@ -2282,14 +2373,14 @@
EOperation getUserTask__IsCompleted();
/**
- * Returns the meta object for the '{@link org.eclipse.skills.model.IUserTask#start() <em>Start</em>}' operation.
+ * Returns the meta object for the '{@link org.eclipse.skills.model.IUserTask#activate() <em>Activate</em>}' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
- * @return the meta object for the '<em>Start</em>' operation.
- * @see org.eclipse.skills.model.IUserTask#start()
+ * @return the meta object for the '<em>Activate</em>' operation.
+ * @see org.eclipse.skills.model.IUserTask#activate()
* @generated
*/
- EOperation getUserTask__Start();
+ EOperation getUserTask__Activate();
/**
* Returns the meta object for the '{@link org.eclipse.skills.model.IUserTask#getUser() <em>Get User</em>}' operation.
@@ -2741,6 +2832,27 @@
EAttribute getHint_Penalty();
/**
+ * Returns the meta object for class '{@link org.eclipse.skills.model.IUserDependency <em>User Dependency</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>User Dependency</em>'.
+ * @see org.eclipse.skills.model.IUserDependency
+ * @generated
+ */
+ EClass getUserDependency();
+
+ /**
+ * Returns the meta object for the reference '{@link org.eclipse.skills.model.IUserDependency#getUser <em>User</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the reference '<em>User</em>'.
+ * @see org.eclipse.skills.model.IUserDependency#getUser()
+ * @see #getUserDependency()
+ * @generated
+ */
+ EReference getUserDependency_User();
+
+ /**
* Returns the meta object for enum '{@link org.eclipse.skills.model.LevelNames <em>Level Names</em>}'.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
@@ -3192,12 +3304,12 @@
EOperation USER_TASK___IS_COMPLETED = eINSTANCE.getUserTask__IsCompleted();
/**
- * The meta object literal for the '<em><b>Start</b></em>' operation.
+ * The meta object literal for the '<em><b>Activate</b></em>' operation.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
- EOperation USER_TASK___START = eINSTANCE.getUserTask__Start();
+ EOperation USER_TASK___ACTIVATE = eINSTANCE.getUserTask__Activate();
/**
* The meta object literal for the '<em><b>Get User</b></em>' operation.
@@ -3578,6 +3690,24 @@
EAttribute HINT__PENALTY = eINSTANCE.getHint_Penalty();
/**
+ * The meta object literal for the '{@link org.eclipse.skills.model.impl.MUserDependency <em>User Dependency</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.skills.model.impl.MUserDependency
+ * @see org.eclipse.skills.model.impl.MSkillsPackage#getUserDependency()
+ * @generated
+ */
+ EClass USER_DEPENDENCY = eINSTANCE.getUserDependency();
+
+ /**
+ * The meta object literal for the '<em><b>User</b></em>' reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference USER_DEPENDENCY__USER = eINSTANCE.getUserDependency_User();
+
+ /**
* The meta object literal for the '{@link org.eclipse.skills.model.LevelNames <em>Level Names</em>}' enum.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITaskDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITaskDependency.java
index 6cb52bb..0a32451 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITaskDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/ITaskDependency.java
@@ -19,7 +19,7 @@
* @model
* @generated
*/
-public interface ITaskDependency extends IDependency {
+public interface ITaskDependency extends IUserDependency {
/**
* Returns the value of the '<em><b>Task</b></em>' reference.
* <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserDependency.java
new file mode 100644
index 0000000..79307bf
--- /dev/null
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserDependency.java
@@ -0,0 +1,45 @@
+/**
+ */
+package org.eclipse.skills.model;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>User Dependency</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.skills.model.IUserDependency#getUser <em>User</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.skills.model.ISkillsPackage#getUserDependency()
+ * @model abstract="true"
+ * @generated
+ */
+public interface IUserDependency extends IDependency {
+ /**
+ * Returns the value of the '<em><b>User</b></em>' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the value of the '<em>User</em>' reference.
+ * @see #setUser(IUser)
+ * @see org.eclipse.skills.model.ISkillsPackage#getUserDependency_User()
+ * @model resolveProxies="false" transient="true" ordered="false"
+ * @generated
+ */
+ IUser getUser();
+
+ /**
+ * Sets the value of the '{@link org.eclipse.skills.model.IUserDependency#getUser <em>User</em>}' reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @param value the new value of the '<em>User</em>' reference.
+ * @see #getUser()
+ * @generated
+ */
+ void setUser(IUser value);
+
+} // IUserDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserTask.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserTask.java
index 3cef709..9e1b9b9 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserTask.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/IUserTask.java
@@ -140,7 +140,7 @@
* @model
* @generated
*/
- void start();
+ void activate();
/**
* <!-- begin-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MCompleteIncludedTasksDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MCompleteIncludedTasksDependency.java
index a698f48..1b5d18d 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MCompleteIncludedTasksDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MCompleteIncludedTasksDependency.java
@@ -11,7 +11,7 @@
*
* @generated
*/
-public class MCompleteIncludedTasksDependency extends MDependency implements ICompleteIncludedTasksDependency {
+public class MCompleteIncludedTasksDependency extends MUserDependency implements ICompleteIncludedTasksDependency {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MNotDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MNotDependency.java
index a9b2724..862dfd3 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MNotDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MNotDependency.java
@@ -40,7 +40,7 @@
public void evaluateDependencies() {
if (!getDependencies().isEmpty())
setFulfilled(!getDependencies().get(0).isFulfilled());
-
- setFulfilled(false);
+ else
+ setFulfilled(false);
}
} // MNotDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSequenceDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSequenceDependency.java
index be9aba4..85800ad 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSequenceDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSequenceDependency.java
@@ -2,8 +2,6 @@
*/
package org.eclipse.skills.model.impl;
-import java.util.Optional;
-
import org.eclipse.emf.ecore.EClass;
import org.eclipse.skills.model.IDependency;
import org.eclipse.skills.model.ISequenceDependency;
@@ -15,8 +13,12 @@
* @generated
*/
public class MSequenceDependency extends MAndDependency implements ISequenceDependency {
+
+ private int fIndexOfActiveChildDependency = 0;
+
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
protected MSequenceDependency() {
@@ -25,6 +27,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -32,13 +35,42 @@
return ISkillsPackage.Literals.SEQUENCE_DEPENDENCY;
}
+ /**
+ * @generated NOT
+ */
@Override
public void activate() {
- deactivate();
+ activateNextDependency();
+ evaluateDependencies();
+ }
- final Optional<IDependency> nextDependency = getDependencies().stream().filter(d -> !d.isFulfilled()).findFirst();
- if (nextDependency.isPresent())
- nextDependency.get().eAdapters().add(getChangeAdapter());
+ /**
+ * @generated NOT
+ */
+ @Override
+ public void evaluateDependencies() {
+ for (int index = fIndexOfActiveChildDependency; index < getDependencies().size(); index++) {
+ if (!getDependencies().get(index).isFulfilled()) {
+ setFulfilled(false);
+ return;
+ } else {
+ fIndexOfActiveChildDependency = index + 1;
+ activateNextDependency();
+ }
+ }
+
+ setFulfilled(true);
+ }
+
+ /**
+ * @generated NOT
+ */
+ private void activateNextDependency() {
+ if (fIndexOfActiveChildDependency < getDependencies().size()) {
+ final IDependency nextDependency = getDependencies().get(fIndexOfActiveChildDependency);
+ nextDependency.eAdapters().add(getChangeAdapter());
+ nextDependency.activate();
+ }
}
} // MSequenceDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillDependency.java
index 8fe32e3..775ade2 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillDependency.java
@@ -23,7 +23,7 @@
*
* @generated
*/
-public class MSkillDependency extends MDependency implements ISkillDependency {
+public class MSkillDependency extends MUserDependency implements ISkillDependency {
/**
* The default value of the '{@link #getMinExperience() <em>Min Experience</em>}' attribute.
* <!-- begin-user-doc --> <!-- end-user-doc -->
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
index 81a25b2..ae14731 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MSkillsPackage.java
@@ -40,6 +40,7 @@
import org.eclipse.skills.model.ITask;
import org.eclipse.skills.model.ITaskDependency;
import org.eclipse.skills.model.IUser;
+import org.eclipse.skills.model.IUserDependency;
import org.eclipse.skills.model.IUserTask;
import org.eclipse.skills.model.LevelNames;
import org.eclipse.skills.service.ISkillService;
@@ -225,6 +226,13 @@
* <!-- end-user-doc -->
* @generated
*/
+ private EClass userDependencyEClass = null;
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
private EEnum levelNamesEEnum = null;
/**
@@ -772,7 +780,7 @@
* @generated
*/
@Override
- public EOperation getUserTask__Start() {
+ public EOperation getUserTask__Activate() {
return userTaskEClass.getEOperations().get(1);
}
@@ -1212,6 +1220,26 @@
* @generated
*/
@Override
+ public EClass getUserDependency() {
+ return userDependencyEClass;
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
+ public EReference getUserDependency_User() {
+ return (EReference)userDependencyEClass.getEStructuralFeatures().get(0);
+ }
+
+ /**
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ @Override
public EEnum getLevelNames() {
return levelNamesEEnum;
}
@@ -1336,7 +1364,7 @@
createEAttribute(userTaskEClass, USER_TASK__HINTS_DISPLAYED);
createEAttribute(userTaskEClass, USER_TASK__ADDED);
createEOperation(userTaskEClass, USER_TASK___IS_COMPLETED);
- createEOperation(userTaskEClass, USER_TASK___START);
+ createEOperation(userTaskEClass, USER_TASK___ACTIVATE);
createEOperation(userTaskEClass, USER_TASK___GET_USER);
createEOperation(userTaskEClass, USER_TASK___IS_STARTED);
createEOperation(userTaskEClass, USER_TASK___REVEAL_NEXT_HINT);
@@ -1398,6 +1426,9 @@
hintEClass = createEClass(HINT);
createEAttribute(hintEClass, HINT__PENALTY);
+ userDependencyEClass = createEClass(USER_DEPENDENCY);
+ createEReference(userDependencyEClass, USER_DEPENDENCY__USER);
+
// Create enums
levelNamesEEnum = createEEnum(LEVEL_NAMES);
@@ -1447,10 +1478,11 @@
customDependencyEClass.getESuperTypes().add(this.getDependency());
dependencyWithAttributesEClass.getESuperTypes().add(this.getDependency());
sequenceDependencyEClass.getESuperTypes().add(this.getAndDependency());
- completeIncludedTasksDependencyEClass.getESuperTypes().add(this.getDependency());
- taskDependencyEClass.getESuperTypes().add(this.getDependency());
- skillDependencyEClass.getESuperTypes().add(this.getDependency());
+ completeIncludedTasksDependencyEClass.getESuperTypes().add(this.getUserDependency());
+ taskDependencyEClass.getESuperTypes().add(this.getUserDependency());
+ skillDependencyEClass.getESuperTypes().add(this.getUserDependency());
hintEClass.getESuperTypes().add(this.getDescription());
+ userDependencyEClass.getESuperTypes().add(this.getDependency());
// Initialize classes, features, and operations; add parameters
initEClass(taskEClass, ITask.class, "Task", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
@@ -1520,7 +1552,7 @@
initEOperation(getUserTask__IsCompleted(), ecorePackage.getEBoolean(), "isCompleted", 0, 1, IS_UNIQUE, IS_ORDERED);
- initEOperation(getUserTask__Start(), null, "start", 0, 1, IS_UNIQUE, IS_ORDERED);
+ initEOperation(getUserTask__Activate(), null, "activate", 0, 1, IS_UNIQUE, IS_ORDERED);
initEOperation(getUserTask__GetUser(), this.getUser(), "getUser", 0, 1, IS_UNIQUE, IS_ORDERED);
@@ -1590,6 +1622,9 @@
initEClass(hintEClass, IHint.class, "Hint", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getHint_Penalty(), ecorePackage.getEInt(), "penalty", "10", 0, 1, IHint.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
+ initEClass(userDependencyEClass, IUserDependency.class, "UserDependency", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+ initEReference(getUserDependency_User(), this.getUser(), null, "user", null, 0, 1, IUserDependency.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, !IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
// Initialize enums and add enum literals
initEEnum(levelNamesEEnum, LevelNames.class, "LevelNames");
addEEnumLiteral(levelNamesEEnum, LevelNames.APPRENTICE);
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
index c1b5562..3de355c 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MTaskDependency.java
@@ -3,12 +3,14 @@
package org.eclipse.skills.model.impl;
import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.skills.model.ISkillsPackage;
import org.eclipse.skills.model.ITask;
import org.eclipse.skills.model.ITaskDependency;
+import org.eclipse.skills.model.IUserTask;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>Task Dependency</b></em>'. <!-- end-user-doc -->
@@ -22,7 +24,7 @@
*
* @generated
*/
-public class MTaskDependency extends MDependency implements ITaskDependency {
+public class MTaskDependency extends MUserDependency implements ITaskDependency {
/**
* The cached value of the '{@link #getTask() <em>Task</em>}' reference.
* <!-- begin-user-doc --> <!-- end-user-doc -->
@@ -205,4 +207,57 @@
return result.toString();
}
+ /**
+ * @generated NOT
+ */
+ @Override
+ public void activate() {
+ final IUserTask usertask = getUsertask();
+ if (usertask != null) {
+ setFulfilled((usertask.isCompleted() && isCompleted()) || (usertask.isStarted() && !isCompleted()));
+
+ if (!isFulfilled()) {
+ usertask.eAdapters().add(new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification msg) {
+ if (usertask.equals(msg.getNotifier())) {
+ if ((ISkillsPackage.eINSTANCE.getUserTask_Started().equals(msg.getFeature()))
+ || (ISkillsPackage.eINSTANCE.getUserTask_Finished().equals(msg.getFeature()))) {
+ usertask.eAdapters().remove(this);
+ // re-evaluate
+ activate();
+ }
+ }
+ }
+ });
+ }
+
+ } else {
+ getUser().eAdapters().add(new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification msg) {
+ if (ISkillsPackage.eINSTANCE.getUser_Usertasks().equals(msg.getFeature())) {
+ if (getUsertask() != null) {
+ getUser().eAdapters().remove(this);
+ // re-evaluate
+ activate();
+ }
+ }
+ }
+ });
+ }
+ }
+
+ /**
+ * @generated NOT
+ */
+ private IUserTask getUsertask() {
+ for (final IUserTask usertask : getUser().getUsertasks()) {
+ if (usertask.getTask().equals(getTask()))
+ return usertask;
+ }
+
+ return null;
+ }
+
} // MTaskDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUser.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUser.java
index 48baca5..f798a69 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUser.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUser.java
@@ -38,20 +38,20 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getName <em>Name</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getSkills <em>Skills</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getUsertasks <em>Usertasks</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getImageLocation <em>Image Location</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getExperience <em>Experience</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUser#getBadges <em>Badges</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getName <em>Name</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getSkills <em>Skills</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getUsertasks <em>Usertasks</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getImageLocation <em>Image Location</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getExperience <em>Experience</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUser#getBadges <em>Badges</em>}</li>
* </ul>
*
* @generated
*/
public class MUser extends MinimalEObjectImpl.Container implements IUser {
/**
- * The default value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The default value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getName()
* @generated
* @ordered
@@ -59,8 +59,8 @@
protected static final String NAME_EDEFAULT = null;
/**
- * The cached value of the '{@link #getName() <em>Name</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getName() <em>Name</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getName()
* @generated
* @ordered
@@ -68,8 +68,8 @@
protected String name = NAME_EDEFAULT;
/**
- * The cached value of the '{@link #getSkills() <em>Skills</em>}' containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getSkills() <em>Skills</em>}' containment reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getSkills()
* @generated
* @ordered
@@ -77,8 +77,8 @@
protected EList<ISkill> skills;
/**
- * The cached value of the '{@link #getUsertasks() <em>Usertasks</em>}' containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getUsertasks() <em>Usertasks</em>}' containment reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getUsertasks()
* @generated
* @ordered
@@ -86,8 +86,8 @@
protected EList<IUserTask> usertasks;
/**
- * The default value of the '{@link #getImageLocation() <em>Image Location</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The default value of the '{@link #getImageLocation() <em>Image Location</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getImageLocation()
* @generated
* @ordered
@@ -95,8 +95,8 @@
protected static final String IMAGE_LOCATION_EDEFAULT = null;
/**
- * The cached value of the '{@link #getImageLocation() <em>Image Location</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getImageLocation() <em>Image Location</em>}' attribute.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getImageLocation()
* @generated
* @ordered
@@ -104,8 +104,8 @@
protected String imageLocation = IMAGE_LOCATION_EDEFAULT;
/**
- * The cached value of the '{@link #getExperience() <em>Experience</em>}' containment reference. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getExperience() <em>Experience</em>}' containment reference.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getExperience()
* @generated
* @ordered
@@ -113,8 +113,8 @@
protected ISkill experience;
/**
- * The cached value of the '{@link #getBadges() <em>Badges</em>}' containment reference list. <!-- begin-user-doc --> <!-- end-user-doc -->
- *
+ * The cached value of the '{@link #getBadges() <em>Badges</em>}' containment reference list.
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
* @see #getBadges()
* @generated
* @ordered
@@ -123,7 +123,6 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
protected MUser() {
@@ -132,7 +131,6 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -142,7 +140,6 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -152,12 +149,11 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public void setName(String newName) {
- final String oldName = name;
+ String oldName = name;
name = newName;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER__NAME, oldName, name));
@@ -165,33 +161,30 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public EList<ISkill> getSkills() {
if (skills == null) {
- skills = new EObjectContainmentEList<>(ISkill.class, this, ISkillsPackage.USER__SKILLS);
+ skills = new EObjectContainmentEList<ISkill>(ISkill.class, this, ISkillsPackage.USER__SKILLS);
}
return skills;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public EList<IUserTask> getUsertasks() {
if (usertasks == null) {
- usertasks = new EObjectContainmentEList<>(IUserTask.class, this, ISkillsPackage.USER__USERTASKS);
+ usertasks = new EObjectContainmentEList<IUserTask>(IUserTask.class, this, ISkillsPackage.USER__USERTASKS);
}
return usertasks;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -201,12 +194,11 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public void setImageLocation(String newImageLocation) {
- final String oldImageLocation = imageLocation;
+ String oldImageLocation = imageLocation;
imageLocation = newImageLocation;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER__IMAGE_LOCATION, oldImageLocation, imageLocation));
@@ -214,7 +206,6 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -224,25 +215,20 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
public NotificationChain basicSetExperience(ISkill newExperience, NotificationChain msgs) {
- final ISkill oldExperience = experience;
+ ISkill oldExperience = experience;
experience = newExperience;
if (eNotificationRequired()) {
- final ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER__EXPERIENCE, oldExperience, newExperience);
- if (msgs == null)
- msgs = notification;
- else
- msgs.add(notification);
+ ENotificationImpl notification = new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER__EXPERIENCE, oldExperience, newExperience);
+ if (msgs == null) msgs = notification; else msgs.add(notification);
}
return msgs;
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
@@ -250,25 +236,24 @@
if (newExperience != experience) {
NotificationChain msgs = null;
if (experience != null)
- msgs = ((InternalEObject) experience).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.USER__EXPERIENCE, null, msgs);
+ msgs = ((InternalEObject)experience).eInverseRemove(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.USER__EXPERIENCE, null, msgs);
if (newExperience != null)
- msgs = ((InternalEObject) newExperience).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.USER__EXPERIENCE, null, msgs);
+ msgs = ((InternalEObject)newExperience).eInverseAdd(this, EOPPOSITE_FEATURE_BASE - ISkillsPackage.USER__EXPERIENCE, null, msgs);
msgs = basicSetExperience(newExperience, msgs);
- if (msgs != null)
- msgs.dispatch();
- } else if (eNotificationRequired())
+ if (msgs != null) msgs.dispatch();
+ }
+ else if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER__EXPERIENCE, newExperience, newExperience));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public EList<IBadge> getBadges() {
if (badges == null) {
- badges = new EObjectContainmentEList<>(IBadge.class, this, ISkillsPackage.USER__BADGES);
+ badges = new EObjectContainmentEList<IBadge>(IBadge.class, this, ISkillsPackage.USER__BADGES);
}
return badges;
}
@@ -349,168 +334,160 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) {
switch (featureID) {
- case ISkillsPackage.USER__SKILLS:
- return ((InternalEList<?>) getSkills()).basicRemove(otherEnd, msgs);
- case ISkillsPackage.USER__USERTASKS:
- return ((InternalEList<?>) getUsertasks()).basicRemove(otherEnd, msgs);
- case ISkillsPackage.USER__EXPERIENCE:
- return basicSetExperience(null, msgs);
- case ISkillsPackage.USER__BADGES:
- return ((InternalEList<?>) getBadges()).basicRemove(otherEnd, msgs);
+ case ISkillsPackage.USER__SKILLS:
+ return ((InternalEList<?>)getSkills()).basicRemove(otherEnd, msgs);
+ case ISkillsPackage.USER__USERTASKS:
+ return ((InternalEList<?>)getUsertasks()).basicRemove(otherEnd, msgs);
+ case ISkillsPackage.USER__EXPERIENCE:
+ return basicSetExperience(null, msgs);
+ case ISkillsPackage.USER__BADGES:
+ return ((InternalEList<?>)getBadges()).basicRemove(otherEnd, msgs);
}
return super.eInverseRemove(otherEnd, featureID, msgs);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
- case ISkillsPackage.USER__NAME:
- return getName();
- case ISkillsPackage.USER__SKILLS:
- return getSkills();
- case ISkillsPackage.USER__USERTASKS:
- return getUsertasks();
- case ISkillsPackage.USER__IMAGE_LOCATION:
- return getImageLocation();
- case ISkillsPackage.USER__EXPERIENCE:
- return getExperience();
- case ISkillsPackage.USER__BADGES:
- return getBadges();
+ case ISkillsPackage.USER__NAME:
+ return getName();
+ case ISkillsPackage.USER__SKILLS:
+ return getSkills();
+ case ISkillsPackage.USER__USERTASKS:
+ return getUsertasks();
+ case ISkillsPackage.USER__IMAGE_LOCATION:
+ return getImageLocation();
+ case ISkillsPackage.USER__EXPERIENCE:
+ return getExperience();
+ case ISkillsPackage.USER__BADGES:
+ return getBadges();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@SuppressWarnings("unchecked")
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
- case ISkillsPackage.USER__NAME:
- setName((String) newValue);
- return;
- case ISkillsPackage.USER__SKILLS:
- getSkills().clear();
- getSkills().addAll((Collection<? extends ISkill>) newValue);
- return;
- case ISkillsPackage.USER__USERTASKS:
- getUsertasks().clear();
- getUsertasks().addAll((Collection<? extends IUserTask>) newValue);
- return;
- case ISkillsPackage.USER__IMAGE_LOCATION:
- setImageLocation((String) newValue);
- return;
- case ISkillsPackage.USER__EXPERIENCE:
- setExperience((ISkill) newValue);
- return;
- case ISkillsPackage.USER__BADGES:
- getBadges().clear();
- getBadges().addAll((Collection<? extends IBadge>) newValue);
- return;
+ case ISkillsPackage.USER__NAME:
+ setName((String)newValue);
+ return;
+ case ISkillsPackage.USER__SKILLS:
+ getSkills().clear();
+ getSkills().addAll((Collection<? extends ISkill>)newValue);
+ return;
+ case ISkillsPackage.USER__USERTASKS:
+ getUsertasks().clear();
+ getUsertasks().addAll((Collection<? extends IUserTask>)newValue);
+ return;
+ case ISkillsPackage.USER__IMAGE_LOCATION:
+ setImageLocation((String)newValue);
+ return;
+ case ISkillsPackage.USER__EXPERIENCE:
+ setExperience((ISkill)newValue);
+ return;
+ case ISkillsPackage.USER__BADGES:
+ getBadges().clear();
+ getBadges().addAll((Collection<? extends IBadge>)newValue);
+ return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
- case ISkillsPackage.USER__NAME:
- setName(NAME_EDEFAULT);
- return;
- case ISkillsPackage.USER__SKILLS:
- getSkills().clear();
- return;
- case ISkillsPackage.USER__USERTASKS:
- getUsertasks().clear();
- return;
- case ISkillsPackage.USER__IMAGE_LOCATION:
- setImageLocation(IMAGE_LOCATION_EDEFAULT);
- return;
- case ISkillsPackage.USER__EXPERIENCE:
- setExperience((ISkill) null);
- return;
- case ISkillsPackage.USER__BADGES:
- getBadges().clear();
- return;
+ case ISkillsPackage.USER__NAME:
+ setName(NAME_EDEFAULT);
+ return;
+ case ISkillsPackage.USER__SKILLS:
+ getSkills().clear();
+ return;
+ case ISkillsPackage.USER__USERTASKS:
+ getUsertasks().clear();
+ return;
+ case ISkillsPackage.USER__IMAGE_LOCATION:
+ setImageLocation(IMAGE_LOCATION_EDEFAULT);
+ return;
+ case ISkillsPackage.USER__EXPERIENCE:
+ setExperience((ISkill)null);
+ return;
+ case ISkillsPackage.USER__BADGES:
+ getBadges().clear();
+ return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
- case ISkillsPackage.USER__NAME:
- return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
- case ISkillsPackage.USER__SKILLS:
- return (skills != null) && !skills.isEmpty();
- case ISkillsPackage.USER__USERTASKS:
- return (usertasks != null) && !usertasks.isEmpty();
- case ISkillsPackage.USER__IMAGE_LOCATION:
- return IMAGE_LOCATION_EDEFAULT == null ? imageLocation != null : !IMAGE_LOCATION_EDEFAULT.equals(imageLocation);
- case ISkillsPackage.USER__EXPERIENCE:
- return experience != null;
- case ISkillsPackage.USER__BADGES:
- return (badges != null) && !badges.isEmpty();
+ case ISkillsPackage.USER__NAME:
+ return NAME_EDEFAULT == null ? name != null : !NAME_EDEFAULT.equals(name);
+ case ISkillsPackage.USER__SKILLS:
+ return skills != null && !skills.isEmpty();
+ case ISkillsPackage.USER__USERTASKS:
+ return usertasks != null && !usertasks.isEmpty();
+ case ISkillsPackage.USER__IMAGE_LOCATION:
+ return IMAGE_LOCATION_EDEFAULT == null ? imageLocation != null : !IMAGE_LOCATION_EDEFAULT.equals(imageLocation);
+ case ISkillsPackage.USER__EXPERIENCE:
+ return experience != null;
+ case ISkillsPackage.USER__BADGES:
+ return badges != null && !badges.isEmpty();
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
switch (operationID) {
- case ISkillsPackage.USER___ADD_TASK__ITASK:
- return addTask((ITask) arguments.get(0));
- case ISkillsPackage.USER___GET_SKILL__ISKILL:
- return getSkill((ISkill) arguments.get(0));
- case ISkillsPackage.USER___CONSUME__IREWARD:
- consume((IReward) arguments.get(0));
- return null;
- case ISkillsPackage.USER___GET_AVATAR:
- return getAvatar();
+ case ISkillsPackage.USER___ADD_TASK__ITASK:
+ return addTask((ITask)arguments.get(0));
+ case ISkillsPackage.USER___GET_SKILL__ISKILL:
+ return getSkill((ISkill)arguments.get(0));
+ case ISkillsPackage.USER___CONSUME__IREWARD:
+ consume((IReward)arguments.get(0));
+ return null;
+ case ISkillsPackage.USER___GET_AVATAR:
+ return getAvatar();
}
return super.eInvoke(operationID, arguments);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
- *
* @generated
*/
@Override
public String toString() {
- if (eIsProxy())
- return super.toString();
+ if (eIsProxy()) return super.toString();
- final StringBuilder result = new StringBuilder(super.toString());
+ StringBuilder result = new StringBuilder(super.toString());
result.append(" (name: ");
result.append(name);
result.append(", imageLocation: ");
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserDependency.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserDependency.java
new file mode 100644
index 0000000..92ad9d3
--- /dev/null
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserDependency.java
@@ -0,0 +1,163 @@
+/**
+ */
+package org.eclipse.skills.model.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.skills.model.ISkillsPackage;
+import org.eclipse.skills.model.IUser;
+import org.eclipse.skills.model.IUserDependency;
+import org.eclipse.skills.service.ISkillService;
+import org.eclipse.skills.service.SkillService;
+import org.eclipse.ui.PlatformUI;
+
+/**
+ * <!-- begin-user-doc --> An implementation of the model object '<em><b>User Dependency</b></em>'. <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ * <li>{@link org.eclipse.skills.model.impl.MUserDependency#getUser <em>User</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class MUserDependency extends MDependency implements IUserDependency {
+ /**
+ * The cached value of the '{@link #getUser() <em>User</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @see #getUser()
+ * @generated
+ * @ordered
+ */
+ protected IUser user;
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ protected MUserDependency() {
+ super();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ protected EClass eStaticClass() {
+ return ISkillsPackage.Literals.USER_DEPENDENCY;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ public IUser getUserGen() {
+ return user;
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public IUser getUser() {
+ final IUser result = getUserGen();
+ if (result != null)
+ return result;
+
+ final ISkillService service = getSkillService();
+ if (service != null)
+ return service.getUser();
+
+ throw new RuntimeException("User context not available");
+ }
+
+ /**
+ * @generated NOT
+ */
+ private static ISkillService getSkillService() {
+ if (PlatformUI.isWorkbenchRunning())
+ return PlatformUI.getWorkbench().getService(ISkillService.class);
+
+ return SkillService.getInstance();
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void setUser(IUser newUser) {
+ final IUser oldUser = user;
+ user = newUser;
+ if (eNotificationRequired())
+ eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER_DEPENDENCY__USER, oldUser, user));
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public Object eGet(int featureID, boolean resolve, boolean coreType) {
+ switch (featureID) {
+ case ISkillsPackage.USER_DEPENDENCY__USER:
+ return getUser();
+ }
+ return super.eGet(featureID, resolve, coreType);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eSet(int featureID, Object newValue) {
+ switch (featureID) {
+ case ISkillsPackage.USER_DEPENDENCY__USER:
+ setUser((IUser) newValue);
+ return;
+ }
+ super.eSet(featureID, newValue);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public void eUnset(int featureID) {
+ switch (featureID) {
+ case ISkillsPackage.USER_DEPENDENCY__USER:
+ setUser((IUser) null);
+ return;
+ }
+ super.eUnset(featureID);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated
+ */
+ @Override
+ public boolean eIsSet(int featureID) {
+ switch (featureID) {
+ case ISkillsPackage.USER_DEPENDENCY__USER:
+ return user != null;
+ }
+ return super.eIsSet(featureID);
+ }
+
+} // MUserDependency
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserTask.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserTask.java
index 9e79345..36000d0 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserTask.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/impl/MUserTask.java
@@ -5,7 +5,6 @@
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
-import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.impl.AdapterImpl;
import org.eclipse.emf.common.util.EList;
@@ -13,13 +12,13 @@
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+import org.eclipse.skills.BrokerTools;
import org.eclipse.skills.model.IReward;
import org.eclipse.skills.model.ISkillsPackage;
import org.eclipse.skills.model.ITask;
import org.eclipse.skills.model.IUser;
import org.eclipse.skills.model.IUserTask;
import org.eclipse.skills.service.ISkillService;
-import org.eclipse.ui.PlatformUI;
/**
* <!-- begin-user-doc --> An implementation of the model object '<em><b>User Task</b></em>'. <!-- end-user-doc -->
@@ -27,19 +26,19 @@
* The following features are implemented:
* </p>
* <ul>
- * <li>{@link org.eclipse.skills.model.impl.MUserTask#getTask <em>Task</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUserTask#getStarted <em>Started</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUserTask#getFinished <em>Finished</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUserTask#getHintsDisplayed <em>Hints Displayed</em>}</li>
- * <li>{@link org.eclipse.skills.model.impl.MUserTask#getAdded <em>Added</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUserTask#getTask <em>Task</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUserTask#getStarted <em>Started</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUserTask#getFinished <em>Finished</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUserTask#getHintsDisplayed <em>Hints Displayed</em>}</li>
+ * <li>{@link org.eclipse.skills.model.impl.MUserTask#getAdded <em>Added</em>}</li>
* </ul>
*
* @generated
*/
public class MUserTask extends MinimalEObjectImpl.Container implements IUserTask {
/**
- * The cached value of the '{@link #getTask() <em>Task</em>}' reference.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getTask() <em>Task</em>}' reference. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getTask()
* @generated
* @ordered
@@ -47,8 +46,8 @@
protected ITask task;
/**
- * The default value of the '{@link #getStarted() <em>Started</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The default value of the '{@link #getStarted() <em>Started</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getStarted()
* @generated
* @ordered
@@ -56,8 +55,8 @@
protected static final Date STARTED_EDEFAULT = null;
/**
- * The cached value of the '{@link #getStarted() <em>Started</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getStarted() <em>Started</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getStarted()
* @generated
* @ordered
@@ -65,8 +64,8 @@
protected Date started = STARTED_EDEFAULT;
/**
- * The default value of the '{@link #getFinished() <em>Finished</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The default value of the '{@link #getFinished() <em>Finished</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getFinished()
* @generated
* @ordered
@@ -74,8 +73,8 @@
protected static final Date FINISHED_EDEFAULT = null;
/**
- * The cached value of the '{@link #getFinished() <em>Finished</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getFinished() <em>Finished</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getFinished()
* @generated
* @ordered
@@ -83,8 +82,8 @@
protected Date finished = FINISHED_EDEFAULT;
/**
- * The default value of the '{@link #getHintsDisplayed() <em>Hints Displayed</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The default value of the '{@link #getHintsDisplayed() <em>Hints Displayed</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getHintsDisplayed()
* @generated
* @ordered
@@ -92,8 +91,8 @@
protected static final int HINTS_DISPLAYED_EDEFAULT = 0;
/**
- * The cached value of the '{@link #getHintsDisplayed() <em>Hints Displayed</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getHintsDisplayed() <em>Hints Displayed</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getHintsDisplayed()
* @generated
* @ordered
@@ -101,8 +100,8 @@
protected int hintsDisplayed = HINTS_DISPLAYED_EDEFAULT;
/**
- * The default value of the '{@link #getAdded() <em>Added</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The default value of the '{@link #getAdded() <em>Added</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getAdded()
* @generated
* @ordered
@@ -110,8 +109,8 @@
protected static final Date ADDED_EDEFAULT = null;
/**
- * The cached value of the '{@link #getAdded() <em>Added</em>}' attribute.
- * <!-- begin-user-doc --> <!-- end-user-doc -->
+ * The cached value of the '{@link #getAdded() <em>Added</em>}' attribute. <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @see #getAdded()
* @generated
* @ordered
@@ -120,6 +119,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
protected MUserTask() {
@@ -128,6 +128,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -137,13 +138,14 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public ITask getTask() {
- if (task != null && task.eIsProxy()) {
- InternalEObject oldTask = (InternalEObject)task;
- task = (ITask)eResolveProxy(oldTask);
+ if ((task != null) && task.eIsProxy()) {
+ final InternalEObject oldTask = (InternalEObject) task;
+ task = (ITask) eResolveProxy(oldTask);
if (task != oldTask) {
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.RESOLVE, ISkillsPackage.USER_TASK__TASK, oldTask, task));
@@ -154,6 +156,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
public ITask basicGetTask() {
@@ -162,11 +165,12 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void setTask(ITask newTask) {
- ITask oldTask = task;
+ final ITask oldTask = task;
task = newTask;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER_TASK__TASK, oldTask, task));
@@ -174,6 +178,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -183,11 +188,11 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
- @Override
- public void setStarted(Date newStarted) {
- Date oldStarted = started;
+ public void setStartedGen(Date newStarted) {
+ final Date oldStarted = started;
started = newStarted;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER_TASK__STARTED, oldStarted, started));
@@ -195,6 +200,19 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
+ * @generated NOT
+ */
+ @Override
+ public void setStarted(Date newStarted) {
+ setStartedGen(newStarted);
+
+ BrokerTools.post(ISkillService.EVENT_TASK_STARTED, this);
+ }
+
+ /**
+ * <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -204,11 +222,12 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void setFinished(Date newFinished) {
- Date oldFinished = finished;
+ final Date oldFinished = finished;
finished = newFinished;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER_TASK__FINISHED, oldFinished, finished));
@@ -216,6 +235,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -225,11 +245,12 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void setHintsDisplayed(int newHintsDisplayed) {
- int oldHintsDisplayed = hintsDisplayed;
+ final int oldHintsDisplayed = hintsDisplayed;
hintsDisplayed = newHintsDisplayed;
if (eNotificationRequired())
eNotify(new ENotificationImpl(this, Notification.SET, ISkillsPackage.USER_TASK__HINTS_DISPLAYED, oldHintsDisplayed, hintsDisplayed));
@@ -237,6 +258,7 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
@@ -260,34 +282,28 @@
* @generated NOT
*/
@Override
- public void start() {
- setStarted(new Date());
+ public void activate() {
+ if (isStarted()) {
+ getTask().getGoal().eAdapters().add(new AdapterImpl() {
+ @Override
+ public void notifyChanged(Notification msg) {
+ if (ISkillsPackage.eINSTANCE.getDependency_Fulfilled().equals(msg.getFeature())) {
+ if (msg.getNewBooleanValue()) {
+ getTask().getGoal().deactivate();
+ setFinished(new Date());
- final IEventBroker service = PlatformUI.getWorkbench().getService(IEventBroker.class);
- if (service != null)
- service.post(ISkillService.EVENT_TASK_STARTED, this);
+ BrokerTools.post(ISkillService.EVENT_TASK_COMPLETED, MUserTask.this);
- getTask().getGoal().eAdapters().add(new AdapterImpl() {
- @Override
- public void notifyChanged(Notification msg) {
- if (ISkillsPackage.eINSTANCE.getDependency_Fulfilled().equals(msg.getFeature())) {
- if (msg.getNewBooleanValue()) {
- setFinished(new Date());
-
- getTask().getGoal().deactivate();
-
- final IEventBroker service = PlatformUI.getWorkbench().getService(IEventBroker.class);
- if (service != null)
- service.post(ISkillService.EVENT_TASK_COMPLETED, MUserTask.this);
-
- for (final IReward reward : getTask().getRewards())
- getUser().consume(reward);
+ // TODO move this logic to the service, its not model related
+ for (final IReward reward : getTask().getRewards())
+ getUser().consume(reward);
+ }
}
- }
- };
- });
+ };
+ });
- getTask().getGoal().activate();
+ getTask().getGoal().activate();
+ }
}
/**
@@ -323,125 +339,133 @@
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public Object eGet(int featureID, boolean resolve, boolean coreType) {
switch (featureID) {
- case ISkillsPackage.USER_TASK__TASK:
- if (resolve) return getTask();
- return basicGetTask();
- case ISkillsPackage.USER_TASK__STARTED:
- return getStarted();
- case ISkillsPackage.USER_TASK__FINISHED:
- return getFinished();
- case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
- return getHintsDisplayed();
- case ISkillsPackage.USER_TASK__ADDED:
- return getAdded();
+ case ISkillsPackage.USER_TASK__TASK:
+ if (resolve)
+ return getTask();
+ return basicGetTask();
+ case ISkillsPackage.USER_TASK__STARTED:
+ return getStarted();
+ case ISkillsPackage.USER_TASK__FINISHED:
+ return getFinished();
+ case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
+ return getHintsDisplayed();
+ case ISkillsPackage.USER_TASK__ADDED:
+ return getAdded();
}
return super.eGet(featureID, resolve, coreType);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void eSet(int featureID, Object newValue) {
switch (featureID) {
- case ISkillsPackage.USER_TASK__TASK:
- setTask((ITask)newValue);
- return;
- case ISkillsPackage.USER_TASK__STARTED:
- setStarted((Date)newValue);
- return;
- case ISkillsPackage.USER_TASK__FINISHED:
- setFinished((Date)newValue);
- return;
- case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
- setHintsDisplayed((Integer)newValue);
- return;
+ case ISkillsPackage.USER_TASK__TASK:
+ setTask((ITask) newValue);
+ return;
+ case ISkillsPackage.USER_TASK__STARTED:
+ setStarted((Date) newValue);
+ return;
+ case ISkillsPackage.USER_TASK__FINISHED:
+ setFinished((Date) newValue);
+ return;
+ case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
+ setHintsDisplayed((Integer) newValue);
+ return;
}
super.eSet(featureID, newValue);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public void eUnset(int featureID) {
switch (featureID) {
- case ISkillsPackage.USER_TASK__TASK:
- setTask((ITask)null);
- return;
- case ISkillsPackage.USER_TASK__STARTED:
- setStarted(STARTED_EDEFAULT);
- return;
- case ISkillsPackage.USER_TASK__FINISHED:
- setFinished(FINISHED_EDEFAULT);
- return;
- case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
- setHintsDisplayed(HINTS_DISPLAYED_EDEFAULT);
- return;
+ case ISkillsPackage.USER_TASK__TASK:
+ setTask((ITask) null);
+ return;
+ case ISkillsPackage.USER_TASK__STARTED:
+ setStarted(STARTED_EDEFAULT);
+ return;
+ case ISkillsPackage.USER_TASK__FINISHED:
+ setFinished(FINISHED_EDEFAULT);
+ return;
+ case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
+ setHintsDisplayed(HINTS_DISPLAYED_EDEFAULT);
+ return;
}
super.eUnset(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public boolean eIsSet(int featureID) {
switch (featureID) {
- case ISkillsPackage.USER_TASK__TASK:
- return task != null;
- case ISkillsPackage.USER_TASK__STARTED:
- return STARTED_EDEFAULT == null ? started != null : !STARTED_EDEFAULT.equals(started);
- case ISkillsPackage.USER_TASK__FINISHED:
- return FINISHED_EDEFAULT == null ? finished != null : !FINISHED_EDEFAULT.equals(finished);
- case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
- return hintsDisplayed != HINTS_DISPLAYED_EDEFAULT;
- case ISkillsPackage.USER_TASK__ADDED:
- return ADDED_EDEFAULT == null ? added != null : !ADDED_EDEFAULT.equals(added);
+ case ISkillsPackage.USER_TASK__TASK:
+ return task != null;
+ case ISkillsPackage.USER_TASK__STARTED:
+ return STARTED_EDEFAULT == null ? started != null : !STARTED_EDEFAULT.equals(started);
+ case ISkillsPackage.USER_TASK__FINISHED:
+ return FINISHED_EDEFAULT == null ? finished != null : !FINISHED_EDEFAULT.equals(finished);
+ case ISkillsPackage.USER_TASK__HINTS_DISPLAYED:
+ return hintsDisplayed != HINTS_DISPLAYED_EDEFAULT;
+ case ISkillsPackage.USER_TASK__ADDED:
+ return ADDED_EDEFAULT == null ? added != null : !ADDED_EDEFAULT.equals(added);
}
return super.eIsSet(featureID);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException {
switch (operationID) {
- case ISkillsPackage.USER_TASK___IS_COMPLETED:
- return isCompleted();
- case ISkillsPackage.USER_TASK___START:
- start();
- return null;
- case ISkillsPackage.USER_TASK___GET_USER:
- return getUser();
- case ISkillsPackage.USER_TASK___IS_STARTED:
- return isStarted();
- case ISkillsPackage.USER_TASK___REVEAL_NEXT_HINT:
- revealNextHint();
- return null;
+ case ISkillsPackage.USER_TASK___IS_COMPLETED:
+ return isCompleted();
+ case ISkillsPackage.USER_TASK___ACTIVATE:
+ activate();
+ return null;
+ case ISkillsPackage.USER_TASK___GET_USER:
+ return getUser();
+ case ISkillsPackage.USER_TASK___IS_STARTED:
+ return isStarted();
+ case ISkillsPackage.USER_TASK___REVEAL_NEXT_HINT:
+ revealNextHint();
+ return null;
}
return super.eInvoke(operationID, arguments);
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
+ *
* @generated
*/
@Override
public String toString() {
- if (eIsProxy()) return super.toString();
+ if (eIsProxy())
+ return super.toString();
- StringBuilder result = new StringBuilder(super.toString());
+ final StringBuilder result = new StringBuilder(super.toString());
result.append(" (started: ");
result.append(started);
result.append(", finished: ");
@@ -451,7 +475,9 @@
result.append(", added: ");
result.append(added);
result.append(')');
- return result.toString();
+ // return result.toString();
+
+ return getTask().getTitle();
}
} // MUserTask
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
index 3c9f037..4cf06c5 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsAdapterFactory.java
@@ -164,6 +164,10 @@
return createHintAdapter();
}
@Override
+ public Adapter caseUserDependency(IUserDependency object) {
+ return createUserDependencyAdapter();
+ }
+ @Override
public Adapter defaultCase(EObject object) {
return createEObjectAdapter();
}
@@ -520,6 +524,20 @@
}
/**
+ * Creates a new adapter for an object of class '{@link org.eclipse.skills.model.IUserDependency <em>User Dependency</em>}'.
+ * <!-- begin-user-doc -->
+ * This default implementation returns null so that we can easily ignore cases;
+ * it's useful to ignore a case when inheritance will catch all the cases anyway.
+ * <!-- end-user-doc -->
+ * @return the new adapter.
+ * @see org.eclipse.skills.model.IUserDependency
+ * @generated
+ */
+ public Adapter createUserDependencyAdapter() {
+ return null;
+ }
+
+ /**
* Creates a new adapter for the default case.
* <!-- begin-user-doc -->
* This default implementation returns null.
diff --git a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
index 5baf795..6e7e9c6 100644
--- a/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
+++ b/plugins/org.eclipse.skills/src-gen/org/eclipse/skills/model/util/SkillsSwitch.java
@@ -207,6 +207,7 @@
case ISkillsPackage.COMPLETE_INCLUDED_TASKS_DEPENDENCY: {
ICompleteIncludedTasksDependency completeIncludedTasksDependency = (ICompleteIncludedTasksDependency)theEObject;
T result = caseCompleteIncludedTasksDependency(completeIncludedTasksDependency);
+ if (result == null) result = caseUserDependency(completeIncludedTasksDependency);
if (result == null) result = caseDependency(completeIncludedTasksDependency);
if (result == null) result = defaultCase(theEObject);
return result;
@@ -214,6 +215,7 @@
case ISkillsPackage.TASK_DEPENDENCY: {
ITaskDependency taskDependency = (ITaskDependency)theEObject;
T result = caseTaskDependency(taskDependency);
+ if (result == null) result = caseUserDependency(taskDependency);
if (result == null) result = caseDependency(taskDependency);
if (result == null) result = defaultCase(theEObject);
return result;
@@ -221,6 +223,7 @@
case ISkillsPackage.SKILL_DEPENDENCY: {
ISkillDependency skillDependency = (ISkillDependency)theEObject;
T result = caseSkillDependency(skillDependency);
+ if (result == null) result = caseUserDependency(skillDependency);
if (result == null) result = caseDependency(skillDependency);
if (result == null) result = defaultCase(theEObject);
return result;
@@ -232,6 +235,13 @@
if (result == null) result = defaultCase(theEObject);
return result;
}
+ case ISkillsPackage.USER_DEPENDENCY: {
+ IUserDependency userDependency = (IUserDependency)theEObject;
+ T result = caseUserDependency(userDependency);
+ if (result == null) result = caseDependency(userDependency);
+ if (result == null) result = defaultCase(theEObject);
+ return result;
+ }
default: return defaultCase(theEObject);
}
}
@@ -597,6 +607,21 @@
}
/**
+ * Returns the result of interpreting the object as an instance of '<em>User Dependency</em>'.
+ * <!-- begin-user-doc -->
+ * This implementation returns null;
+ * returning a non-null result will terminate the switch.
+ * <!-- end-user-doc -->
+ * @param object the target of the switch.
+ * @return the result of interpreting the object as an instance of '<em>User Dependency</em>'.
+ * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+ * @generated
+ */
+ public T caseUserDependency(IUserDependency object) {
+ return null;
+ }
+
+ /**
* Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
* <!-- begin-user-doc -->
* This implementation returns null;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/Activator.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/Activator.java
index c2dca2a..f9bd001 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/Activator.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/Activator.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/BrokerTools.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/BrokerTools.java
new file mode 100644
index 0000000..dfc7bbe
--- /dev/null
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/BrokerTools.java
@@ -0,0 +1,40 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills;
+
+import org.eclipse.e4.core.services.events.IEventBroker;
+import org.eclipse.ui.PlatformUI;
+
+public class BrokerTools {
+
+ /**
+ * Gracefully post a message to the event broker service.
+ *
+ * @param topic
+ * broker topic
+ * @param data
+ * message data
+ */
+ public static void post(String topic, Object data) {
+ try {
+ if (PlatformUI.isWorkbenchRunning()) {
+ final IEventBroker service = PlatformUI.getWorkbench().getService(IEventBroker.class);
+ if (service != null)
+ service.post(topic, data);
+ }
+ } catch (final Throwable e) {
+ // silently swallow
+ }
+ }
+}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/Logger.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/Logger.java
index 6aa4e9e..5ec2672 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/Logger.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/Logger.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/RunnableWithResult.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/RunnableWithResult.java
index 26cb8e4..199d9ae 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/RunnableWithResult.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/RunnableWithResult.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/AbstractCustomDependency.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/AbstractCustomDependency.java
index b1d8d67..9a5eb06 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/AbstractCustomDependency.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/AbstractCustomDependency.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.dependencies;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/CustomDependencyDefinition.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/CustomDependencyDefinition.java
index e0fa64c..8af3fce 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/CustomDependencyDefinition.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/dependencies/CustomDependencyDefinition.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/IPreferenceConstants.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/IPreferenceConstants.java
index 1ab2f3a..e65e549 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/IPreferenceConstants.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/IPreferenceConstants.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.preferences;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/SkillsPreferenceInitializer.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/SkillsPreferenceInitializer.java
index fcc2ff5..8d3fd5a 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/SkillsPreferenceInitializer.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/preferences/SkillsPreferenceInitializer.java
@@ -1,3 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
package org.eclipse.skills.preferences;
import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/AvatarCreator.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/AvatarCreator.java
index 0e4666a..a0733de 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/AvatarCreator.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/AvatarCreator.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ExtensionPointQuestProvider.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ExtensionPointQuestProvider.java
new file mode 100644
index 0000000..32b86c2
--- /dev/null
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ExtensionPointQuestProvider.java
@@ -0,0 +1,62 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.service;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.Map;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.skills.model.IQuest;
+import org.eclipse.skills.model.ISkillsPackage;
+
+public class ExtensionPointQuestProvider implements IQuestProvider {
+
+ @Override
+ public Collection<IQuest> getQuests() {
+ final Collection<IQuest> quests = new HashSet<>();
+
+ final IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.skills.quest");
+ for (final IConfigurationElement e : config) {
+ if (e.getName().equals("resource")) {
+ final String location = e.getAttribute("URI");
+
+ URI uri = URI.createURI(location);
+ if (uri.isRelative())
+ uri = URI.createURI("platform:/plugin/" + e.getContributor().getName() + "/" + location);
+
+ // initialize the model
+ ISkillsPackage.eINSTANCE.eClass();
+
+ final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
+ final Map<String, Object> extensionsMap = reg.getExtensionToFactoryMap();
+ extensionsMap.put("skills", new XMIResourceFactoryImpl());
+
+ final ResourceSet resourceSet = new ResourceSetImpl();
+ final Resource resource = resourceSet.getResource(uri, true);
+
+ final IQuest quest = (IQuest) resource.getContents().get(0);
+ quests.add(quest);
+ }
+ }
+
+ return quests;
+ }
+}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IDataStorage.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IDataStorage.java
index bcbe84a..99fdad6 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IDataStorage.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IDataStorage.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IQuestProvider.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IQuestProvider.java
new file mode 100644
index 0000000..ea206fa
--- /dev/null
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/IQuestProvider.java
@@ -0,0 +1,23 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.service;
+
+import java.util.Collection;
+
+import org.eclipse.skills.model.IQuest;
+
+public interface IQuestProvider {
+
+ Collection<IQuest> getQuests();
+}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ISkillService.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ISkillService.java
index 3fe7a2b..0c82632 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ISkillService.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/ISkillService.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
@@ -56,4 +58,10 @@
void reportTaskReady(ITask task);
Collection<ITask> getOpenTasks();
+
+ void setQuestProvider(IQuestProvider questProvider);
+
+ IQuestProvider getQuestProvider();
+
+ Collection<ITask> getAllAvailableTasks();
}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
index b148f74..138613d 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillService.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
@@ -13,18 +15,18 @@
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import java.util.Date;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
-import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.core.services.events.IEventBroker;
@@ -72,42 +74,23 @@
return null;
}
- private static Collection<IQuest> loadQuestsFromResources() {
- final Collection<IQuest> quests = new HashSet<>();
+ private static Collection<ITask> extractTasksRecursively(Collection<ITask> tasks) {
+ final Collection<ITask> result = new ArrayList<>(tasks);
- final IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor("org.eclipse.skills.quest");
- for (final IConfigurationElement e : config) {
- if (e.getName().equals("resource")) {
- final String location = e.getAttribute("URI");
+ for (final ITask task : tasks)
+ result.addAll(extractTasksRecursively(task.getTasks()));
- URI uri = URI.createURI(location);
- if (uri.isRelative())
- uri = URI.createURI("platform:/plugin/" + e.getContributor().getName() + "/" + location);
-
- // initialize the model
- ISkillsPackage.eINSTANCE.eClass();
-
- final Resource.Factory.Registry reg = Resource.Factory.Registry.INSTANCE;
- final Map<String, Object> extensionsMap = reg.getExtensionToFactoryMap();
- extensionsMap.put("skills", new XMIResourceFactoryImpl());
-
- final ResourceSet resourceSet = new ResourceSetImpl();
- final Resource resource = resourceSet.getResource(uri, true);
-
- final IQuest quest = (IQuest) resource.getContents().get(0);
- quests.add(quest);
- }
- }
-
- return quests;
+ return result;
}
private IUser fUser = null;
- private Collection<ITask> fTasks = null;
+ private final Collection<ITask> fTasks = null;
private final WorkspaceDataStorage fStorage;
+ private IQuestProvider fQuestProvider;
+
private SkillService() {
Activator.getDefault().getPreferenceStore().addPropertyChangeListener(this);
@@ -180,21 +163,6 @@
broker.unsubscribe(this);
}
- private void loadTasks() {
- if (fTasks == null) {
- fTasks = new HashSet<>();
-
- for (final IQuest quest : loadQuestsFromResources())
- fTasks.addAll(quest.getTasks());
- }
- }
-
- public Collection<ITask> getTasks() {
- loadTasks();
-
- return fTasks;
- }
-
@Override
public IUser getUser() {
if (fUser == null)
@@ -285,8 +253,8 @@
private void startUserTasks() {
for (final IUserTask task : getUser().getUsertasks()) {
- if (!task.isCompleted())
- task.getTask().getGoal().activate();
+ if (task.isStarted())
+ task.activate();
}
}
@@ -309,7 +277,7 @@
@Override
public Collection<ITask> getOpenTasks() {
- final Collection<ITask> openTasks = getTasks();
+ final Collection<ITask> openTasks = getAllAvailableTasks();
final List<ITask> runningTasks = getUser().getUsertasks().stream().map(t -> t.getTask()).collect(Collectors.toList());
// TODO is there a better way to remove the running tasks? openTasks.removeAll() does not work
@@ -356,7 +324,32 @@
@Override
public void reportTaskReady(ITask task) {
final IUserTask userTask = getUser().addTask(task);
- if (task.isAutoActivation())
- userTask.start();
+ if (task.isAutoActivation()) {
+ userTask.setStarted(new Date());
+ userTask.activate();
+ }
+ }
+
+ @Override
+ public void setQuestProvider(IQuestProvider questProvider) {
+ fQuestProvider = questProvider;
+ }
+
+ @Override
+ public IQuestProvider getQuestProvider() {
+ if (fQuestProvider != null)
+ return fQuestProvider;
+
+ return new ExtensionPointQuestProvider();
+ }
+
+ @Override
+ public Collection<ITask> getAllAvailableTasks() {
+ final Collection<ITask> tasks = new HashSet<>();
+
+ for (final IQuest quest : getQuestProvider().getQuests())
+ tasks.addAll(extractTasksRecursively(quest.getTasks()));
+
+ return tasks;
}
}
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillServiceFactory.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillServiceFactory.java
index 75b1bd9..307d596 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillServiceFactory.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/SkillServiceFactory.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/storage/WorkspaceDataStorage.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/storage/WorkspaceDataStorage.java
index 7036fbd..db6e27a 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/service/storage/WorkspaceDataStorage.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/service/storage/WorkspaceDataStorage.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/startup/SkillsLauncher.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/startup/SkillsLauncher.java
index e1211fb..e2cff62 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/startup/SkillsLauncher.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/startup/SkillsLauncher.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskCompletedNotification.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskCompletedNotification.java
index 5607426..a4e66b9 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskCompletedNotification.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskCompletedNotification.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskStartedNotification.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskStartedNotification.java
index 337b8de..16f2af1 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskStartedNotification.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/notifications/TaskStartedNotification.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/preferences/SkillsPage.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/preferences/SkillsPage.java
index 2460289..4d60403 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/preferences/SkillsPage.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/preferences/SkillsPage.java
@@ -1,3 +1,16 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
package org.eclipse.skills.ui.preferences;
import org.eclipse.jface.dialogs.MessageDialog;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/BadgesComposite.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/BadgesComposite.java
index ff68ed7..5b9120d 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/BadgesComposite.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/BadgesComposite.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
index 94e28eb..7ccc8d3 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/CharacterSheet.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/SkillsComposite.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/SkillsComposite.java
index 5e7e604..0cc55f9 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/SkillsComposite.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/SkillsComposite.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/TaskDetails.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/TaskDetails.java
index 7660815..049f001 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/TaskDetails.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/TaskDetails.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.ui.views;
@@ -106,7 +108,9 @@
@Override
public void linkActivated(HyperlinkEvent e) {
- getUserTask().start();
+ getUserTask().setStarted(new Date());
+ getUserTask().activate();
+
updateUI();
}
});
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DescriptionSection.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DescriptionSection.java
index a8fb774..1dee99d 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DescriptionSection.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DescriptionSection.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.ui.views.journal;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailComposite.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailComposite.java
index 7d4e06e..b9f005a 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailComposite.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailComposite.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.ui.views.journal;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
index acd512a..c8d9a4f 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/DetailHeaderComposite.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.ui.views.journal;
@@ -109,7 +111,8 @@
@Override
public void linkActivated(HyperlinkEvent e) {
- getUserTask().start();
+ getUserTask().setStarted(new Date());
+ getUserTask().activate();
}
});
toolkit.paintBordersFor(hprlnkStartTask);
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/HintsSection.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/HintsSection.java
index 05b883b..6f30344 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/HintsSection.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/HintsSection.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.ui.views.journal;
diff --git a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/JournalView.java b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/JournalView.java
index 4d0e63e..92402e0 100644
--- a/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/JournalView.java
+++ b/plugins/org.eclipse.skills/src/org/eclipse/skills/ui/views/journal/JournalView.java
@@ -1,5 +1,19 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
package org.eclipse.skills.ui.views.journal;
+import java.util.ArrayList;
import java.util.Collections;
import java.util.stream.Collectors;
@@ -25,6 +39,8 @@
public class JournalView extends ViewPart implements ISelectionChangedListener {
+ private ListViewer fListViewer;
+
public JournalView() {
}
@@ -43,12 +59,22 @@
toolkit.adapt(sashForm);
toolkit.paintBordersFor(sashForm);
- final ListViewer listViewer = createTaskList(sashForm);
+ fListViewer = createTaskList(sashForm);
+ refresh();
- createDetailComposite(sashForm, toolkit, listViewer);
+ createDetailComposite(sashForm, toolkit, fListViewer);
sashForm.setWeights(new int[] { 2, 5 });
}
+ public void refresh() {
+ final ArrayList<IUserTask> input = new ArrayList<>(getOpenTasks());
+ input.addAll(getRunningTasks());
+ input.addAll(getCompletedTasks());
+
+ fListViewer.setInput(input);
+ fListViewer.refresh();
+ }
+
private ListViewer createTaskList(Composite parent) {
final ListViewer listViewer = new ListViewer(parent, SWT.BORDER | SWT.V_SCROLL);
listViewer.setContentProvider(ArrayContentProvider.getInstance());
@@ -62,8 +88,6 @@
}
});
- listViewer.setInput(getAvailableTasks());
-
return listViewer;
}
@@ -91,16 +115,25 @@
return composite;
}
- private java.util.List<IUserTask> getAvailableTasks() {
- final java.util.List<IUserTask> tasks = getUser().getUsertasks().stream().filter(t -> !t.isCompleted()).collect(Collectors.toList());
- Collections.sort(tasks, (t1, t2) -> t1.getStarted().compareTo(t2.getStarted()));
+ private java.util.List<IUserTask> getOpenTasks() {
+ final java.util.List<IUserTask> tasks = getUser().getUsertasks().stream().filter(t -> !t.isStarted()).collect(Collectors.toList());
+
+ return tasks;
+ }
+
+ private java.util.List<IUserTask> getRunningTasks() {
+ final java.util.List<IUserTask> tasks = getUser().getUsertasks().stream().filter(t -> t.isStarted()).filter(t -> !t.isCompleted())
+ .collect(Collectors.toList());
+ Collections.sort(tasks, (t1, t2) -> {
+ return t1.getStarted().compareTo(t2.getStarted());
+ });
return tasks;
}
private java.util.List<IUserTask> getCompletedTasks() {
final java.util.List<IUserTask> tasks = getUser().getUsertasks().stream().filter(t -> t.isCompleted()).collect(Collectors.toList());
- Collections.sort(tasks, (t1, t2) -> t1.getAdded().compareTo(t2.getAdded()));
+ Collections.sort(tasks, (t1, t2) -> t1.getFinished().compareTo(t2.getFinished()));
return tasks;
}
diff --git a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/BrokerEventDependencyTest.java b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/BrokerEventDependencyTest.java
index 1b41aab..502cd3a 100644
--- a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/BrokerEventDependencyTest.java
+++ b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/BrokerEventDependencyTest.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ConsolePatternDependencyTest.java b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ConsolePatternDependencyTest.java
new file mode 100644
index 0000000..a0ada59
--- /dev/null
+++ b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ConsolePatternDependencyTest.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.dependencies;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.eclipse.jface.text.DocumentEvent;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class ConsolePatternDependencyTest {
+
+ private ConsolePatternDependency fDependency;
+
+ @BeforeEach
+ public void setup() {
+ fDependency = new ConsolePatternDependency();
+ }
+
+ @Test
+ public void createDependency() {
+ assertNotNull(fDependency);
+ assertFalse(fDependency.isFulfilled());
+ assertEquals("<none>", fDependency.getPattern());
+ }
+
+ @Test
+ public void setAttributes() {
+ fDependency.setAttributes("First .+ Last");
+ assertEquals("First .+ Last", fDependency.getPattern());
+ }
+
+ @Test
+ @DisplayName("stay not fulfilled on text mismatch")
+ public void patternMismatch() {
+ fDependency.setAttributes("First .+ Last");
+
+ final DocumentEvent event = new DocumentEvent();
+ event.fText = "First only";
+ fDependency.documentChanged(event);
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("fulfilled on exact text match")
+ public void exactPatternMatch() {
+ fDependency.setAttributes("First .+ Last");
+
+ final DocumentEvent event = new DocumentEvent();
+ event.fText = "First Second Last";
+ fDependency.documentChanged(event);
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("fulfilled on partial text match")
+ public void partialPatternMatch() {
+ fDependency.setAttributes("First .+ Last");
+
+ final DocumentEvent event = new DocumentEvent();
+ event.fText = "A name is comprised of First Second Last and hopefully noting more";
+ fDependency.documentChanged(event);
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("multiline match")
+ public void multilineMatch() {
+ fDependency.setAttributes("First .+ Last");
+
+ final DocumentEvent event = new DocumentEvent();
+ event.fText = "A name is comprised of First \nSecond Last\n and hopefully noting more";
+ fDependency.documentChanged(event);
+
+ assertTrue(fDependency.isFulfilled());
+ }
+}
diff --git a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/P2DependencyTest.java b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/P2DependencyTest.java
index 05e591c..54a3788 100644
--- a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/P2DependencyTest.java
+++ b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/P2DependencyTest.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ResourceExistsDependencyTest.java b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ResourceExistsDependencyTest.java
index acfbeab..02759cb 100644
--- a/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ResourceExistsDependencyTest.java
+++ b/tests/org.eclipse.skills.dependencies.test/src/org/eclipse/skills/dependencies/ResourceExistsDependencyTest.java
@@ -3,7 +3,9 @@
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Christian Pontesegger - initial API and implementation
diff --git a/tests/org.eclipse.skills.test/META-INF/MANIFEST.MF b/tests/org.eclipse.skills.test/META-INF/MANIFEST.MF
index 9a62964..80e96f4 100644
--- a/tests/org.eclipse.skills.test/META-INF/MANIFEST.MF
+++ b/tests/org.eclipse.skills.test/META-INF/MANIFEST.MF
@@ -1,7 +1,7 @@
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: Skills Core Tests
-Bundle-SymbolicName: org.eclipse.skills.test
+Bundle-SymbolicName: org.eclipse.skills.test;singleton:=true
Bundle-Version: 0.1.0.qualifier
Bundle-Vendor: Eclipse.org
Fragment-Host: org.eclipse.skills;bundle-version="0.1.0"
diff --git a/tests/org.eclipse.skills.test/build.properties b/tests/org.eclipse.skills.test/build.properties
index 34d2e4d..5ebbdd9 100644
--- a/tests/org.eclipse.skills.test/build.properties
+++ b/tests/org.eclipse.skills.test/build.properties
@@ -1,4 +1,6 @@
source.. = src/
output.. = bin/
bin.includes = META-INF/,\
- .
+ .,\
+ fragment.xml,\
+ resources/
diff --git a/tests/org.eclipse.skills.test/fragment.xml b/tests/org.eclipse.skills.test/fragment.xml
new file mode 100644
index 0000000..f484227
--- /dev/null
+++ b/tests/org.eclipse.skills.test/fragment.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<fragment>
+ <extension
+ point="org.eclipse.skills.quest">
+ <resource
+ URI="resources/UnitTest.skills">
+ </resource>
+ </extension>
+
+</fragment>
diff --git a/tests/org.eclipse.skills.test/resources/UnitTest.skills b/tests/org.eclipse.skills.test/resources/UnitTest.skills
new file mode 100644
index 0000000..4735aea
--- /dev/null
+++ b/tests/org.eclipse.skills.test/resources/UnitTest.skills
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<skills:Quest xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:skills="http://eclipse.org/skills/1.0.0" title="UnitTest Quest">
+ <tasks title="First task" autoActivation="false">
+ <description text="Simple first task"/>
+ <goal xsi:type="skills:AndDependency">
+ <dependencies xsi:type="skills:CompleteIncludedTasksDependency"/>
+ </goal>
+ <requirement xsi:type="skills:AndDependency"/>
+ <tasks title="inner task">
+ <description text="Subtask of first task"/>
+ <goal xsi:type="skills:AndDependency">
+ <dependencies xsi:type="skills:SkillDependency" minExperience="100" skill="//@skills.0"/>
+ </goal>
+ <requirement xsi:type="skills:AndDependency">
+ <dependencies xsi:type="skills:TaskDependency" task="//@tasks.0" completed="false"/>
+ </requirement>
+ </tasks>
+ </tasks>
+ <tasks title="Second Task">
+ <description text="Second dummy task"/>
+ <goal xsi:type="skills:AndDependency">
+ <dependencies xsi:type="skills:NotDependency"/>
+ </goal>
+ <requirement xsi:type="skills:AndDependency">
+ <dependencies xsi:type="skills:TaskDependency" task="//@tasks.0"/>
+ </requirement>
+ </tasks>
+ <skills name="TestSkill">
+ <description text="Unittest dummy skill"/>
+ </skills>
+</skills:Quest>
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/AndDependencyTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/AndDependencyTest.java
index bb8c793..cc9d033 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/AndDependencyTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/AndDependencyTest.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.model;
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/DummyDependency.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/DummyDependency.java
new file mode 100644
index 0000000..993f353
--- /dev/null
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/DummyDependency.java
@@ -0,0 +1,27 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.model;
+
+import org.eclipse.skills.model.impl.MDependency;
+
+public class DummyDependency extends MDependency {
+
+ @Override
+ public void activate() {
+ }
+
+ @Override
+ public void deactivate() {
+ }
+}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/NotDependencyTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/NotDependencyTest.java
index e5c73d6..705ebbc 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/NotDependencyTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/NotDependencyTest.java
@@ -1,17 +1,20 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.model;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
@@ -37,4 +40,25 @@
fDependency.activate();
assertFalse(fDependency.isFulfilled());
}
+
+ @Test
+ @DisplayName("Is fulfilled when child is not fulfilled")
+ public void fulfilledWhenChildIsNotFulfilled() {
+ final DummyDependency child = new DummyDependency();
+
+ fDependency.getDependencies().add(child);
+ fDependency.activate();
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when child is fulfilled")
+ public void notFulfilledWhenChildIsFulfilled() {
+ final DummyDependency child = new DummyDependency();
+ child.setFulfilled(true);
+
+ fDependency.getDependencies().add(child);
+ fDependency.activate();
+ assertFalse(fDependency.isFulfilled());
+ }
}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/SequenceDependencyTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/SequenceDependencyTest.java
new file mode 100644
index 0000000..ab53f5a
--- /dev/null
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/SequenceDependencyTest.java
@@ -0,0 +1,130 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.model;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class SequenceDependencyTest {
+
+ private ISequenceDependency fDependency;
+
+ @BeforeEach
+ public void setupFixture() {
+ fDependency = ISkillsFactory.eINSTANCE.createSequenceDependency();
+ }
+
+ @Test
+ @DisplayName("Empty dependency is fulfilled")
+ public void emptyDependencyIsFulfilled() {
+ fDependency.activate();
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Not fulfilled child dependency")
+ public void containsNotFulfilledDependency() {
+
+ fDependency.getDependencies().add(ISkillsFactory.eINSTANCE.createNotDependency());
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Fulfilled child dependency")
+ public void containsFulfilledDependency() {
+ fDependency.getDependencies().add(ISkillsFactory.eINSTANCE.createAndDependency());
+ fDependency.activate();
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Child dependency changes fulfill state after activation")
+ public void childDependencyFulfillsAfterActivation() {
+
+ final DummyDependency child = new DummyDependency();
+ fDependency.getDependencies().add(child);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ child.setFulfilled(true);
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Child dependencies fulfill in correct sequence")
+ public void childDependenciesFulfillInCorrectSequence() {
+
+ final DummyDependency child1 = new DummyDependency();
+ final DummyDependency child2 = new DummyDependency();
+ fDependency.getDependencies().add(child1);
+ fDependency.getDependencies().add(child2);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ child1.setFulfilled(true);
+ assertFalse(fDependency.isFulfilled());
+
+ child2.setFulfilled(true);
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Child dependencies fulfill in inverse sequence")
+ public void childDependenciesFulfillInInverseSequence() {
+
+ final DummyDependency child1 = new DummyDependency();
+ final DummyDependency child2 = new DummyDependency();
+ fDependency.getDependencies().add(child1);
+ fDependency.getDependencies().add(child2);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ child2.setFulfilled(true);
+ assertFalse(fDependency.isFulfilled());
+
+ child1.setFulfilled(true);
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Child dependencies toggle")
+ public void childDependenciesToggle() {
+
+ final DummyDependency child1 = new DummyDependency();
+ final DummyDependency child2 = new DummyDependency();
+ fDependency.getDependencies().add(child1);
+ fDependency.getDependencies().add(child2);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ child1.setFulfilled(true);
+ assertFalse(fDependency.isFulfilled());
+
+ child1.setFulfilled(false);
+ child2.setFulfilled(true);
+ assertTrue(fDependency.isFulfilled());
+ }
+}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskDependencyTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskDependencyTest.java
new file mode 100644
index 0000000..56863be
--- /dev/null
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskDependencyTest.java
@@ -0,0 +1,227 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.model;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import java.util.Date;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class TaskDependencyTest {
+
+ private ITaskDependency fDependency;
+
+ @BeforeEach
+ public void setupFixture() {
+ fDependency = ISkillsFactory.eINSTANCE.createTaskDependency();
+ }
+
+ @Test
+ @DisplayName("getUser() uses custom user")
+ public void getUserUsesCustomUser() {
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+
+ fDependency.setUser(user);
+ assertEquals(user, fDependency.getUser());
+ }
+
+ @Test
+ @DisplayName("getUser() has a default value")
+ public void getUserHasADefaultValue() {
+ assertNotNull(fDependency.getUser());
+ }
+
+ @Test
+ @DisplayName("Without task dependency cannot be fulfilled")
+ public void emptyDependencyIsNotFulfilled() {
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when waiting for completion of open task")
+ public void notFulfilledWhenWaitingForOpenTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when waiting for completion of scheduled task")
+ public void notFulfilledWhenWaitingForScheduledTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ user.addTask(task);
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when waiting for completion of running task")
+ public void notFulfilledWhenWaitingForRunningTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+ task.setGoal(ISkillsFactory.eINSTANCE.createNotDependency());
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ final IUserTask userTask = user.addTask(task);
+ userTask.setStarted(new Date());
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is fulfilled when waiting for completion of completed task")
+ public void fulfilledWhenWaitingForCompletedTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ final IUserTask userTask = user.addTask(task);
+ userTask.setFinished(new Date());
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is fulfilled when waiting for completion of completing task")
+ public void fulfilledWhenWaitingForCompletingTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ final IUserTask userTask = user.addTask(task);
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ userTask.setFinished(new Date());
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Activate dependency before task is started")
+ public void activateDependencyBeforeTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ final IUserTask userTask = user.addTask(task);
+ assertFalse(fDependency.isFulfilled());
+
+ userTask.setStarted(new Date());
+ assertFalse(fDependency.isFulfilled());
+
+ userTask.setFinished(new Date());
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when waiting for start of non-scheduled task")
+ public void notFulfilledWhenWaitingForNewTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.setCompleted(false);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is not fulfilled when waiting for start of open task")
+ public void notFulfilledWhenWaitingForStartOfOpenTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ user.addTask(task);
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.setCompleted(false);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is fulfilled when waiting for running task")
+ public void fulfilledWhenWaitingForRunningTask() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+ final IUserTask userTask = user.addTask(task);
+ userTask.setStarted(new Date());
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.setCompleted(false);
+ fDependency.activate();
+
+ assertTrue(fDependency.isFulfilled());
+ }
+
+ @Test
+ @DisplayName("Is fulfilled when waiting for task activation")
+ public void fulfilledWhenWaitingForTaskActivation() {
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+
+ final IUser user = ISkillsFactory.eINSTANCE.createUser();
+
+ fDependency.setUser(user);
+ fDependency.setTask(task);
+ fDependency.setCompleted(false);
+ fDependency.activate();
+
+ assertFalse(fDependency.isFulfilled());
+
+ final IUserTask userTask = user.addTask(task);
+ assertFalse(fDependency.isFulfilled());
+
+ userTask.setStarted(new Date());
+ assertTrue(fDependency.isFulfilled());
+ }
+}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskTest.java
index 065a93e..e883bcf 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/TaskTest.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.model;
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTaskTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTaskTest.java
index 378a4ab..6e818af 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTaskTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTaskTest.java
@@ -1,8 +1,25 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
package org.eclipse.skills.model;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.util.Date;
+
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
@@ -15,7 +32,8 @@
public void setupFixture() {
fUserTask = ISkillsFactory.eINSTANCE.createUserTask();
- ITask task = ISkillsFactory.eINSTANCE.createTask();
+ final ITask task = ISkillsFactory.eINSTANCE.createTask();
+ task.setGoal(ISkillsFactory.eINSTANCE.createAndDependency());
fUserTask.setTask(task);
}
@@ -51,15 +69,15 @@
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
-
+
assertEquals(0, fUserTask.getHintsDisplayed());
fUserTask.revealNextHint();
assertEquals(1, fUserTask.getHintsDisplayed());
-
+
fUserTask.revealNextHint();
assertEquals(2, fUserTask.getHintsDisplayed());
-
+
fUserTask.revealNextHint();
assertEquals(3, fUserTask.getHintsDisplayed());
}
@@ -70,11 +88,66 @@
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
fUserTask.getTask().getHints().add(ISkillsFactory.eINSTANCE.createHint());
-
+
fUserTask.setHintsDisplayed(3);
-
+
assertEquals(3, fUserTask.getHintsDisplayed());
fUserTask.revealNextHint();
assertEquals(3, fUserTask.getHintsDisplayed());
}
+
+ @Test
+ @DisplayName("open task is not started, and not completed")
+ public void openTaskIsInReadyState() {
+ assertFalse(fUserTask.isStarted());
+ assertFalse(fUserTask.isCompleted());
+ }
+
+ @Test
+ @DisplayName("started task is marked started, but not completed")
+ public void startedTaskIsInRunningState() {
+ fUserTask.setStarted(new Date());
+ assertTrue(fUserTask.isStarted());
+ assertFalse(fUserTask.isCompleted());
+ }
+
+ @Test
+ @DisplayName("finshed task is marked as completed")
+ public void finishedTaskIsCompleted() {
+ fUserTask.setStarted(new Date());
+ fUserTask.setFinished(new Date());
+ assertTrue(fUserTask.isStarted());
+ assertTrue(fUserTask.isCompleted());
+ }
+
+ @Test
+ @DisplayName("activate usertask does not set started flag")
+ public void activateDoesNothingWhenNotStarted() {
+ assertFalse(fUserTask.isStarted());
+
+ fUserTask.activate();
+
+ assertFalse(fUserTask.isStarted());
+ }
+
+ @Test
+ @DisplayName("activate usertask detects changes on goal when task is started")
+ public void detectGoalChangesAfterActivation() {
+ fUserTask.getTask().setGoal(ISkillsFactory.eINSTANCE.createAndDependency());
+
+ fUserTask.setStarted(new Date());
+ assertFalse(fUserTask.isCompleted());
+
+ fUserTask.activate();
+ assertTrue(fUserTask.isCompleted());
+ }
+
+ @Test
+ @DisplayName("activate usertask ignores changes on goal when task is not started")
+ public void detectNoGoalChangesAfterActivationWehnNotStarted() {
+ fUserTask.getTask().setGoal(ISkillsFactory.eINSTANCE.createAndDependency());
+
+ fUserTask.activate();
+ assertFalse(fUserTask.isCompleted());
+ }
}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTest.java
index ecabd64..9c4d8c1 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/model/UserTest.java
@@ -1,12 +1,14 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.model;
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/ExtensionPointQuestProviderTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/ExtensionPointQuestProviderTest.java
new file mode 100644
index 0000000..01ec776
--- /dev/null
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/ExtensionPointQuestProviderTest.java
@@ -0,0 +1,51 @@
+/*******************************************************************************
+ * Copyright (c) 2020 Christian Pontesegger and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v2.0
+ * which accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ *
+ * Contributors:
+ * Christian Pontesegger - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.skills.service;
+
+import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import org.eclipse.skills.model.IQuest;
+import org.junit.jupiter.api.DisplayName;
+import org.junit.jupiter.api.Test;
+
+public class ExtensionPointQuestProviderTest {
+
+ private static IQuest getTestQuest(final IQuestProvider provider) {
+ for (final IQuest quest : provider.getQuests()) {
+ if ("UnitTest Quest".equals(quest.getTitle()))
+ return quest;
+ }
+
+ throw new RuntimeException("Test quest not found");
+ }
+
+ @Test
+ @DisplayName("Read quests from extension point")
+ public void readQuestsFromExtensionPoint() {
+ final ExtensionPointQuestProvider provider = new ExtensionPointQuestProvider();
+
+ // we only know that at minimum our test quest is available via extension point
+ assertFalse(provider.getQuests().isEmpty());
+ }
+
+ @Test
+ @DisplayName("Read tasks from extension point")
+ public void readTasksFromExtensionPoint() {
+ final ExtensionPointQuestProvider provider = new ExtensionPointQuestProvider();
+
+ final IQuest quest = getTestQuest(provider);
+ assertEquals(2, quest.getTasks().size());
+ }
+}
diff --git a/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/SkillServiceTest.java b/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/SkillServiceTest.java
index 531a7cb..f9fad79 100644
--- a/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/SkillServiceTest.java
+++ b/tests/org.eclipse.skills.test/src/org/eclipse/skills/service/SkillServiceTest.java
@@ -1,21 +1,28 @@
/*******************************************************************************
- * Copyright (c) 2020 christian and others.
+ * Copyright (c) 2020 Christian Pontesegger and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
*
* Contributors:
- * christian - initial API and implementation
+ * Christian Pontesegger - initial API and implementation
*******************************************************************************/
package org.eclipse.skills.service;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
+import java.util.Collection;
+import java.util.HashSet;
+
import org.eclipse.skills.model.INotDependency;
+import org.eclipse.skills.model.IQuest;
import org.eclipse.skills.model.ISkillsFactory;
import org.eclipse.skills.model.ITask;
import org.junit.jupiter.api.BeforeEach;
@@ -67,6 +74,34 @@
assertFalse(fService.getUser().getUsertasks().get(0).isStarted());
}
+ @Test
+ @DisplayName("Use default quest provider if not set by user")
+ public void useDefaultTestProvider() {
+ assertNotNull(fService.getQuestProvider());
+ }
+
+ @Test
+ @DisplayName("Use local quest provider")
+ public void useLocalTestProvider() {
+ final TestQuestProvider questProvider = new TestQuestProvider();
+ fService.setQuestProvider(questProvider);
+ assertEquals(questProvider, fService.getQuestProvider());
+ }
+
+ @Test
+ @DisplayName("Get all available tasks, including nested ones")
+ public void getAllAvailableTasks() {
+ final TestQuestProvider questProvider = new TestQuestProvider();
+ final IQuest quest = questProvider.getQuests().iterator().next();
+
+ fService.setQuestProvider(questProvider);
+
+ assertTrue(fService.getAllAvailableTasks().size() == 3);
+ assertTrue(fService.getAllAvailableTasks().contains(quest.getTasks().get(0)));
+ assertTrue(fService.getAllAvailableTasks().contains(quest.getTasks().get(1)));
+ assertTrue(fService.getAllAvailableTasks().contains(quest.getTasks().get(0).getTasks().get(0)));
+ }
+
private ITask createTask() {
final ITask task = ISkillsFactory.eINSTANCE.createTask();
final INotDependency incomleteGoal = ISkillsFactory.eINSTANCE.createNotDependency();
@@ -74,4 +109,30 @@
return task;
}
+
+ private class TestQuestProvider implements IQuestProvider {
+
+ private final Collection<IQuest> fQuests;
+
+ public TestQuestProvider() {
+ final IQuest quest = ISkillsFactory.eINSTANCE.createQuest();
+
+ final ITask task1 = ISkillsFactory.eINSTANCE.createTask();
+ final ITask task2 = ISkillsFactory.eINSTANCE.createTask();
+ final ITask task3 = ISkillsFactory.eINSTANCE.createTask();
+
+ task1.getTasks().add(task2);
+
+ quest.getTasks().add(task1);
+ quest.getTasks().add(task3);
+
+ fQuests = new HashSet<>();
+ fQuests.add(quest);
+ }
+
+ @Override
+ public Collection<IQuest> getQuests() {
+ return fQuests;
+ }
+ }
}